51单片机——串口通信

串口通信

计算机通信:是指计算机与外部设备或计算机与计算机之间的信息交换。
通信方式:通信有并行通信串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。
并行通信通常是将数据字节的各位用多条数据线同时进行传送。
在这里插入图片描述
并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。
串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。
在这里插入图片描述
串行通信的特点:传输线少,长距离传送时成本低,但数据的传送控制比并行通信复杂。
串行通信又可分为异步通信同步通信
异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
例如:同步就是你叫我去吃饭,我听到了就和你去吃饭,如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班后才去吃饭。
在这里插入图片描述
异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。
异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。
在这里插入图片描述
同步通信:
同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的
字符间不留间隙
,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种方法实现。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

串行通信常见的错误校验

1、奇偶校验
在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。

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

3、循环冗余校验
这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。这种校验方法纠错能力强,广泛应用于同步通信中。

传输速率:

比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:10位×240个/秒 = 2400 bps

串行通信接口标准:

一、RS-232C接口:
RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。
1、机械特性
RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。(阳头)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

传输速率与传输距离的关系

串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关。当传输线使用每0.3m(约1英尺)有50PF电容的非平衡屏蔽双绞线时,传输距离随传输速率的增加而减小。当比特率超过1000 bps 时,最大传输距离迅速下降,如9600 bps 时最大距离下降到只有76m(约250英尺)。

采用RS-232C接口存在的问题

1、传输距离短,传输速率低
RS-232C总线标准受电容允许值的约束,使用时传输距离一般不要超过15米(线路条件好时也不超过几十米)。最高传送速率为20Kbps。

2、有电平偏移
RS-232C总线标准要求收发双方共地。通信距离较大时,收发双方的地电位差别较大,在信号地上将有比较大的地电流并产生压降。

3、抗干扰能力差
RS-232C在电平转换时采用单端输入输出,在传输过程中当干扰和噪声混在正常的信号中。为了提高信噪比,RS-232C总线标准不得不采用比较大的电压摆幅。

串行接口的结构

在这里插入图片描述
有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H
在物理结构上,则有两个完全独立的SBUF,一个是发送缓冲寄存器SBUF,另一个是接收缓冲寄存器SBUF。如果CPU写SBUF,数据就会被送入发送寄存器准备发送;如果CPU读SBUF,则读入的数据一定来自接收缓冲器。即CPU对SBUF的读写,实际上是分别访问上述两个不同的寄存器。 a = SBUF; SBUF = a;

扫描二维码关注公众号,回复: 9990461 查看本文章
串行口工作前配置寄存器,设置工作模式

在这里插入图片描述

相关寄存器

在这里插入图片描述

串行口控制寄存器SCON(可位寻址)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于TH1中的计数值。

     T1 溢出率 = fosc /{12×[256 -(TH1)]}

常用串口波特率:

300、600、1200、2400、4800、9600、19200 ……115200;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

定时器相关寄存器

在这里插入图片描述

单片机同优先级中内部查询顺序

**内部查询顺序:**在同时收到几个同一优先级的中断请求时,哪一个中断请求能优先得到响应,取决于内部的查询顺序。这相当于在同一优先级内,还同时存在另一辅助优先级结构,其查询顺序如下:
在这里插入图片描述

void UART() interrupt 4  //串口中断处理函数,加关键字interrupt和入口号
{
中断处理语句
}

串口发送字符串:

在这里插入图片描述

发布了37 篇原创文章 · 获赞 92 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44895651/article/details/92384873