单片机(AT89C51)的串行接口及串行通信是非常重要的一项技术,我们需要有深度的解刨才可以理解透彻,既然进来了我肯定不会让你失望,点个小赞再走吧。
正式进入串口通信前我们需要了解什么是通信?
计算机与外界信息交换称为通信。通信的基本方式可分为并行通信和串行通信(本次的主角):
并行通信是数据的各位同时发送或同时接收;并行通信-------优点:传送速度快 缺点:不便长距离传送 串行通信是数据的各位依次逐位发送或接收;串行通信-------优点:便于长距离传送 缺点:传送速度较慢目录
异步通信和同步通信
异步通信
同步通信
串行通信波特率
串行通信的制式
单工制式(Simplex)
半双工制式(Half Duplex)
全双工制式(Full Duplex)
串行通信的校验
串行口特殊功能寄存器
串行口特殊功能寄存器
串行数据缓冲器SBUF
串行控制寄存器SCON
电源控制寄存器PCON
串行工作方式
串行工作方式0(同步移位寄存器工作方式)
(1)数据发送
(2)数据接收
串行工作方式1
(1)数据发送
(2)数据接收
串行工作方式2、方式3
数据发送和接收:
串行口四种工作方式的比较
常用波特率与其相关参数间的关系
实验
异步通信和同步通信串行通信按同步方式可分为异步通信和同步通信。
异步通信异步通信依靠起始位、停止位保持通信同步。
异步通信数据传送按帧传输,一帧数据包含起始位、数据位、校验位和停止位。
优点:异步通信对硬件要求较低,实现起来比较简单、灵活,适用于数据的随机发送/接收;
缺点:因每个字节都要建立一次同步,即每个字符都要额外附加两位,所以工作速度较低;
在单片机中主要采用异步通信方式。
同步通信同步通信依靠同步字符保持通信同步。
同步通信是由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 |
停止 |
发送时只要将数据写入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 |
最后相信大家肯定对单片机串口通信有了新的了解,这正是我努力的源泉,希望对你们的学习有所帮助。
鄙人不才,如有错误,请指出,万分感谢!!!!
No pains No results