×
单片机 > 单片机程序设计 > 详情

8051单片机的串行通信

发布时间:2020-05-28 发布时间:
|

计算机的数据交换有两种方式,分别是串行通信和并行通信。


并行通信:我们以8位(一个字节)的数据为例,在并行通信下,8位数据是同时传输的,同时发送,同时接受。所以通信的双方需要一个公共的时钟信号。并行传输速度快,效率高。但是传输需要的数据线多,传输距离近。


串行通信:仍然以8位的数据为例,每一位数据都是分时发送的,接收方也是一位一位的接受。串行通信只需要一根数据线就可以,成本低。适用于大规模和远距离的数据传输。


异步传输模式:每个传输的字符都用起始位和终止位包装起来,在字符间允许有长短不一的间隙。


同步传输模式:一个数据块包含着许多连续的字符,在字符之间没有空闲。同步传输可以方便的实现某一通信协议要求的格式。


波特率:在这里定义为串行通信每秒钟传送的“位”的个数。即n波特 = n b/s。在RS-232C标准中,串行通信的波特率规定如下:600,1200,2400,4800,9600等。


串行口的波特率计算:


在方式0下,波特率固定为:F/12  (F为晶振频率)


方式2下,波特率固定为:F/32或者F/64  (取决于PCON寄存器的SMOD位,若SMOD = 1,则是F/32;否则为F/64)。


方式1和方式3:采用了T1定时器的溢出率作为波特率的发生器,因此计算公式为:


                                K*F/[32*12*(2^n - X)]。


其中若SMOD = 1,则K = 2,否则K = 1,F为晶振频率,n为定时器的位数(即定时器处于哪种工作模式下),X是定时器填充的初值。


在串行通信中要求通信双方拥有一致的波特率,但是有时候我们无法精确的达到那个波特率,此时我们需要考量在SMOD = 1和SMOD = 0这两种情况下哪一个所产生的相对误差较小,我们就去选用哪一个。


相对误差 = (实际值 - 理论值 ) / 理论值 * 100%



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于arm的指纹识别门禁系统是如何设计的