
本文共 1259 字,大约阅读时间需要 4 分钟。
串行通信与C51单片机串行口控制器
串行通信是计算机与外部设备之间进行数据传输的重要方式之一,与并行通信相对,它以单个比特(位)为单位进行数据传输。串行通信可分为单工、半双工和全双工三种方式,常用的为半双工模式。串行通信的速度可通过波特率(bps)来衡量。
串行通信又可分为同步通信和异步通信两种:
- 异步通信:以字符或字节为单位组成数据帧进行传输。每个数据帧包含起始位、数据位、可编程校验位和停止位。
- 同步通信:以数据块为单位进行连续传输,首次发送时需发送同步信号,后续数据块不再包含同步信号。
C51单片机串行口控制器
C51单片机内置一个可编程的全双工串行通信接口,可用于通用异步接收/发送器或同步位移寄存器。该接口支持8、10、11位数据格式,并通过RXD(P3.0)和TXD(P3.1)与外界通信。接口主要由以下组件组成:
- SBUF:数据缓冲器
- SCON:串行控制寄存器
- 接收位移寄存器、发送控制器、接收控制器
- 定时器T1与单片机总线相关
SFR描述
串行口控制寄存器(SCON)由以下位组成:
- SM0/SM1:决定串行通信工作方式
- REN:允许/禁止接收控制位
- RI/TI:接收/发送完成标志位
- RB8/TB8:扩展数据位
工作方式
串行口工作方式分为0、1、2、3四种:
- 工作方式0:不用于串行通信,主要用于扩展接口。
- 工作方式1:用于点对点通信,传输10位数据。
- 工作方式2:支持双机通信,传输11位数据。
- 工作方式3:用于多机通信,结合了工作方式1和2的优点。
工作方式详解
工作方式1
工作方式1用于点对点通信,数据传输为10位。通信方式为3线式,接口连接为RXD-TXD-GND。波特率可通过T1定时器设置,计算公式为:
[ \text{波特率} = \frac{f_{osc}}{12 \times (2^n - \alpha)} \times \frac{2^{SMOD}}{32} ]
其中,( n ) 为SMOD位设置的波特率分频,( \alpha ) 为晶振周期。
工作方式2
工作方式2用于双机通信,数据传输为11位。通信方式为4线式,接口连接为RXD-TXD-GND-RXD。通信时钟由T1定时器驱动,波特率计算公式为:
[ \text{波特率} = \frac{2^{SMOD}}{64} \times f_{osc} ]
工作方式3
工作方式3用于多机通信,结合了工作方式1和2的优点。通信过程中,主机需向所有从机发送地址信息,地址信息的第九位为1,数据信息的第九位为0。
从机在接收地址信息时,由于RB8=1,会触发RI=1中断。在中断程序中,从机对比信息地址与自身地址,若匹配设定SM2=0,否则设定SM2=1。数据信息的第九位为0,地址不匹配的从机(SM2=1)会拒绝接收数据。
总结
串行通信是计算机与外部设备之间重要的数据传输方式,C51单片机的串行口控制器通过灵活配置和多种工作方式,支持多种通信场景。理解串行通信原理及单片机控制寄存器功能,是实现高效串行通信的关键。
发表评论
最新留言
关于作者
