[其它应用]

51单片机之串口通信

[复制链接]
56|0
手机看帖
扫描二维码
随时随地手机跟帖
tpgf|  楼主 | 2025-1-22 10:21 | 显示全部楼层 |阅读模式
一、串口通信
1.1、计算机通信的基础
计算机通信:是将计算机技术与通信技术相结合,完成计算机与外部设备或计算机与计算机之间的信息交换,可分为两大类:并行通信与串行通信。

多微机系统的广泛应用与计算机网络技术的普及。
计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。
通信有两种方式:并行通信、串行通信。
在多微机系统以及现代测控系统中信息的交换多采用串行通信。
1.2、并行通信
将数据字节的各位用多条数据线同时进行传送。同时传送8个字节(下图  )

875326790561e49186.png

串行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收困难。

1.3、串行通信
将数据字节分成一位一位的形式存,在一条传输线逐个传输。

特点:传输线少,长距离传送时成本低,且可以利用电话线等现成设备,但数据的传输控制比并行通信复杂。

6952567905618ac37e.png

先传输低位,在传输高位

串行通信可分为同步通信和异步通信

1.3.1、同步通信
同步通信时要建立发送方时钟对接收方时钟的直接控制(两个时钟完全同步),使双方达到完全同步,此时,传输数据的为之间的距离均为“为间隔”的整数倍,同时传送的字符间不留间歇,即保持同步关系,也保持字符同步关系,发送方对接收方的同步可以通过两种方法实现。



332467905612dd81e.png

1.3.2、异步通信
异步通信是指通信的发送和接收设备使用各自的时钟(即:两个设备的时钟是相互独立的)控制数据的发送和接收的过程,为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。

464436790560d1d228.png

异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间歇是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一个字符内的各位之间的距离均为“位间隔”整数倍。

87024679056086ecd5.png

异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符都要附加2~3位用于起止位,各帧之间

还有间隔,因此传输效率不高。

1.3.3、串行通信的传输方向
单工:数据传输仅沿一个方向,不能实现反向传输。

半双工:数据传输可以沿两个方向,但需分时进行。

全双工:数据可以同时进行双向传输。

13365679056028cd9c.png

23368679055fc080c0.png

1.3.4串行通信中常见的错误校验
奇偶校验

发送数据时,数据为尾随1位奇偶检验位(0或1)。
奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数。

30127679055f34fecb.png

偶校验时,数据中“1”的个数与检验位“1”的个数之和应为偶数。

66684679055ed46f36.png

接收字符时,对“1”的个数进行检验,若发现不一致,则说明传输数据过程中出现了差错。
代码和校验

发送将所发数据块求和(或个字节异或),产生一个字节的校验字节(校验和)附加到数据块末尾,
接收方接收数据同时对数据块(除校验字节外)求和(或个字节异或),
将所得的结果与发送方的"检验和"进行比较,相符则无差错,否则即认为传送过程中出现了差错。
循环冗余校验

通过某种数**算实现有效信息与校验位之间的循环校验,常用与对磁盘信息的传输、存储区的完整性校验。

这种检验方法纠错能力强,广泛应用于同步通信中。

1.3.5、传输速率
比特率(也叫波特率):每秒钟传输二进制代码的位数
单位:位/秒(bps)
例子:每秒传输240个字符,每个字符包含10位(一个起始位、一个停止位、八个数据位),这时的比特率为:
10位  X  240个/秒  = 2400 bps
1.3.6、传输距离与传输速率的关系
串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关,
当传输线每使用0.3M(约为1英尺)有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增大而减小。
当比特率超过1000bps时,最大传输距离迅速下降,如9600bps时最大距离下降到只有76M(约为250英尺)
1.4、串行通信的接口标准
1.4.1、RS-232C接口
  EIA(美国电子工业协会)1969年修订RS -232C标准。

RS-232C定义了数据终端设备(DTE) 与数据通信设备(DCE)之间的物理接口标准。

机械特性:RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。(阳头)

16380679055dd7bcc8.png

16670679055d5e6b3f.png

过程特性:规定了信号之间的时序关系,以便正确地接收和发送数据。

8883679055cf7188d.png

98513679055ca2fdca.png

91198679055c561cb5.png


1.4.2、RS-232存在的问题

4265679055c0a9385.png

1.5、RS-422A接口

73093679055b8d0839.png

RS-422A输出驱动器为双端平衡驱动器。如果其中一条线为逻辑“1”状态,另外一条线就为逻辑“0”,比采用单端不平衡驱动对电压的放大倍数大一倍,差分电路能从地线干扰中拾取有效信号,差分接收器可以分辨200mv以上电位差。若传输过程中混入了干扰和噪声,由于差分放大器的作用,可使干扰和噪声相互低消。因此可以避免或大大减弱地线干扰和电磁干扰的影响。RS-422A传输速率

(90Kbps)时,传输距离可达到1200米



1.6、RS---485接口


35806679055aee1710.png


32812679055a8c7f0b.png

1.7、89C51串行口的结构

14311679055a3c678a.png

1.8、80C51串行的控制寄存器
SCON是一个特殊功能寄存器,用以设定串行口的工作接收/发送控制以及设置状态标志;


9582067905597ebb67.png

SM0和SM1为工作方式选择位,可选择四种工作方式;

509726790559252a91.png

149106790558da1039.png

81498679055891285e.png


56612679055845a145.png


二、单片机与单片机的通信




333316790557f589d7.png

4686567905579e332b.png

三、串口通信编程
#include "reg52.h"
typedef unsigned int u16;         // 定义数据格式
//   #define  宏定义关键字
typedef unsigned char u8;


void statsInit()
{

  TMOD = 0x20;
  TH1 = 0xF3;
  TL1=  0xF3;
  PCON=0x80;
  TR1=1;           // 打开定时器
  SCON =  0x50;
  ES=1;         
  EA=0;
}

void main()
{
statsInit();
  while(1);
}

void Ustart() interrupt 4
{
   u8 receiveDate;      // 将数据从缓冲器中读出
        receiveDate =SBUF;
        RI=0;   //软件清零
        SBUF = receiveDate;
        while(!TI);
        TI=0;
}

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/RONG_YAO/article/details/106020507

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2086

主题

16074

帖子

15

粉丝