文章目录[隐藏]
单片机(AT89C51)的串行接口及串行通信是非常重要的一项技术,我们需要有深度的解刨才可以理解透彻,既然进来了我肯定不会让你失望,点个小赞再走吧。
正式进入串口通信前我们需要了解什么是通信?
计算机与外界信息交换称为通信。通信的基本方式可分为并行通信和串行通信(本次的主角):
- 并行通信是数据的各位同时发送或同时接收;并行通信-------优点:传送速度快 缺点:不便长距离传送
- 串行通信是数据的各位依次逐位发送或接收;串行通信-------优点:便于长距离传送 缺点:传送速度较慢
目录
异步通信和同步通信
串行通信按同步方式可分为异步通信和同步通信。
异步通信
异步通信依靠起始位、停止位保持通信同步。
异步通信数据传送按帧传输,一帧数据包含起始位、数据位、校验位和停止位。
优点:异步通信对硬件要求较低,实现起来比较简单、灵活,适用于数据的随机发送/接收;
缺点:因每个字节都要建立一次同步,即每个字符都要额外附加两位,所以工作速度较低;
在单片机中主要采用异步通信方式。
同步通信
同步通信依靠同步字符保持通信同步。
同步通信是由1~2个同步字符和多字节数据位组成,同步字符作为起始位以触发同步时钟开始发送或接收数据;多字节数据之间不允许有空隙,每位占用的时间相等;空闲位需发送同步字符。
同步通信传输速度较快,但要求有准确的时钟来实现收发双方的严格同步,对硬件要求较高,适用于成批数据传送。
串行通信波特率
波特率bps(bit per second) 定义: 每秒传输数据的位数,即:1波特 = 1位/秒(1bps)
波特率的倒数即为每位传输所需的时间。
相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。
串行通信的制式
串行通信按照数据传送方向可分为三种制式:
单工制式(Simplex)
单工制式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定。
半双工制式(Half Duplex)
半双工制式是指通信双方都具有发送器和接收器,既可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。
全双工制式(Full Duplex)
全双工制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时也能发送。
串行通信的校验
- 奇偶校验
- 累加和校验
- 循环冗余码校验(Cyclic Redundancy Check,简称CRC)
串行口特殊功能寄存器
80C51系列单片机有一个全双工的串行口,这个口既可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。
89C51有一个全双工的串行接口,既可以作为串行异步通信(UART)接口,也可以作为同步移位寄存器方式下的串行扩展接口。UART具有多机通信功能。
串行口的基本组成:
串行口特殊功能寄存器由主要的三部分组成:串行数据缓冲器SBUF,串行控制寄存器SCON和电源控制寄存器PCON
串行口特殊功能寄存器
串行数据缓冲器SBUF
在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。
在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。
发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送。
接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。
串行控制寄存器SCON
SCON |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位名称 |
SM0 |
SM1 |
SM2 |
REN |
TB8 |
RB8 |
TI |
RI |
位地址 |
9FH |
9EH |
9DH |
9CH |
9BH |
9AH |
99H |
98H |
功能 |
工作方式 选择 |
多机通信控制 |
接收 允许 |
发送 第9位 |
接收 第9位 |
发送 中断 |
接收 中断 |
① SM0 SM1 —— 串行口工作方式选择位。
SM0 |
SM1 |
方式 |
功能 |
波特率 |
0 |
0 |
方式0 |
移位寄存器方式 |
fosc/12 |
0 |
1 |
方式1 |
8位异步通信方式 |
可变 |
1 |
0 |
方式2 |
9位异步通信方式 |
fosc/32或fosc/64 |
1 |
1 |
方式3 |
9位异步通信方式 |
可变 |
② SM2 —— 多机通信控制位。
③ REN —— 允许接收控制位。REN=1,允许接收。
④ TB8 —— 方式2和方式3中要发送的第9位数据。
⑤ RB8 —— 方式2和方式3中要接收的第9位数据。
⑥ TI —— 发送中断标志。
⑦ RI —— 接收中断标志。
电源控制寄存器PCON
PCON |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位名称 |
SMOD |
— |
— |
— |
GF1 |
GF0 |
PD |
IDL |
注:SMOD=1,串行口波特率加倍。PCON寄存器不能进行位寻址。
串行工作方式
80C51串行通信共有4种工作方式,由串行控制寄存器SCON中SM0 SM1决定。
串行工作方式0(同步移位寄存器工作方式)
以RXD(P3.0)端作为数据移位的输入/输出端,以TXD(P3.1)端输出移位脉冲。
移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在后。
其帧格式为:
• • • |
D0 |
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
• • • |
注:方式0可将串行输入输出数据转换成并行输入输出数据
(1)数据发送
串行口作为并行输出口使用时,要有“串入并出”的移位寄存器配合。
在移位时钟脉冲(TXD)的控制下,数据从串行口RXD端逐位移入74HC164 SA、SB端。
当8位数据全部移出后,SCON寄存器的TI位被自动置1。其后74HC164的内容即可并行输出。74HC164 CLR为清0端,输出时CLR必须为1,否则74HC164 Q0~Q7输出为0。
(2)数据接收
串行口作为并行输入口使用时,要有“并入串出”的移位寄存器配合。
74HC165 S/L端为移位/置入端,当S/L=0时,从Q0~Q7并行置入数据,当S/L=1时,允许从QH端移出数据。
在80C51串行控制寄存器SCON中的REN=1时,TXD端发出移位时钟脉冲,从RXD端串行输入8位数据。当接收到第8位数据D7后,置位中断标志RI,表示一帧数据接收完成。
串行工作方式1
方式1是一帧10位的异步串行通信方式,包括1个起始位,8个数据位和一个停止位。
其帧格式为:
起始 |
D0 |
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
停止 |
(1)数据发送
发送时只要将数据写入SBUF,在串行口由硬件自动加入起始位和停止位,构成一个完整的帧格式。然后在移位脉冲的作用下,由TXD端串行输出。一帧数据发送完毕,将SCON中的TI置1。
(2)数据接收
接收时,在REN=1前提下,当采样到RXD从1向0跳变状态时,就认定为已接收到起始位。随后在移位脉冲的控制下,将串行接收数据移入SBUF中。一帧数据接收完毕,将SCON中的RI置1,表示可以从SBUF取走接收到的一个字符。
串行工作方式2、方式3
方式2、3是一帧11位的串行通信方式,即1个起始位,8个数据位,1个可编程位TB8/RB8和1个停止位。
其帧格式为:
起始 |
D0 |
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
TB8/RB8 |
停止 |
注:可编程位TB8/RB8既可作奇偶校验位用,也可作控制位(多机通信)用,其功能由用户确定。
数据发送和接收:
数据发送和接收与方式1基本相同,区别在于方式2把发送/接收到的第9位内容送入TB8/RB8。
波特率:方式2波特率固定,即fosc/32和fosc/64。 如用公式表示则为:
波特率=2^SMOD ╳ fosc/64
串行口四种工作方式的比较
工作方式 |
帧 格 式 |
波 特 率 |
方式0 |
8位全是数据位,没有起始位、停止位 |
固定,即每个机器周期传送一位数据 |
方式1 |
10位,其中1位起始位,8位数据位,1位停止位 |
不固定,取决于T1溢出率和SMOD |
方式2 |
11位,其中1位起始位,9位数据位,1位停止位 |
固定,即2SMOD×fosc /64 |
方式3 |
同方式2 |
同方式1 |
常用波特率与其相关参数间的关系
实验(https://blog.csdn.net/weixin_45629315/article/details/105810753)
最后相信大家肯定对单片机串口通信有了新的了解,这正是我努力的源泉,希望对你们的学习有所帮助。
鄙人不才,如有错误,请指出,万分感谢!!!!
No pains No results
版权声明:本文为CSDN博主「Be Moster」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45629315/article/details/105717414
暂无评论