51单片机串行通信的设计原理有哪些?
扫描二维码
随时随地手机看文章
51单片机是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了许多品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51系列单片机。
MCS-51单片机是一种集成的电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。MCS-51单片机的内核是8051CPU,CPU的内部集成有运算器和控制器,运算器完成运算操作(包括数据运算、逻辑运算等),控制器完成取指令、对指令译码以及执行指令。
51单片机串行通信的设计原理主要包括以下几个方面:
串行接口设计:51单片机内部具有一个全双工串行接口,可以同时进行数据的发送和接收。在设计时,需要选择合适的串行接口模式,并根据需要配置相应的寄存器。
波特率设置:串行通信的速率由波特率决定。在设计时,需要根据通信速率的要求,选择合适的波特率。在51单片机中,可以通过配置波特率选择位来设置波特率。
数据帧格式设计:在串行通信中,需要设计合适的数据帧格式,包括起始位、数据位、校验位和停止位等。在设计时,需要根据通信协议的要求,选择合适的数据帧格式。
错误检测和处理:在串行通信中,可能会出现各种错误,如数据传输错误、帧格式错误等。在设计时,需要考虑如何进行错误检测和处理,以确保通信的稳定性和可靠性。
通信协议设计:在串行通信中,需要设计合适的通信协议,包括数据传输格式、数据传输速率、数据校验方式等。在设计时,需要根据实际应用场景的要求,选择合适的通信协议。
51系列单片机的通用异步收发器内部结构如上图所示,UART与单片机内部8位数据总线相连,SBUF是收发缓冲器,由接收缓冲器和发送缓冲器两部分构成,二者具有同一地址(99H),但他们之间是相互独立的,即发送缓冲器只能写入而不能读出数据,而接收缓冲器则只能读出而不能写入数据。实际使用时通过不同的读缓冲器和写缓冲器指令来区分对哪个缓冲器操作。所以51系列单片机的串行数据通信的启动方法很简单,只要将数据写入发送缓冲器就能启动数据的发送,而在接收数据时,只要读取保存在接收缓冲器中的内容即可。单片机会按照读或写的方式不同,自动分配要访问的目标寄存器是发送SBUF还是接收SBUF。
UART工作时,定时器用于产生通信需要的时钟,控制寄存器用于对串行口的工作状态进行相应的监控和设置。当数据写入发送SBUF后,数据在发送控制器的控制下,按位从TXD引脚移出;外部数据在接收控制器的控制下,从RXD引脚移入移位寄存器并对串行数据进行恢复,恢复后的数据保存至接收SBUF中供软件读取。
当接收SBUF中的数据没有被软件读取时,移位寄存器还可以暂时接收并保存下一个新数据,从而避免发生数据溢出,这种结构也是串行口特有的接收双缓冲结构。发送器则没有类似的数据缓冲结构,因为在发送数据时单片机是主动的,不存在数据过载的问题。
51单片机串口通信相关的寄存器主要有SCON、SBUF、PCON、TMOD等。
1. SCON:这是串口控制寄存器,用来设定串行口的工作方式、接受/发送控制以及设置状态指示。
2. SBUF:这是串口缓冲寄存器,用于存储待发送的数据和接收到的数据。
3. PCON:这是电源控制寄存器,用于设置电源控制位。
4. TMOD:这是定时器模式寄存器,用于设定定时器的工作模式。
这些寄存器在串口通信中起着重要的作用,通过配置这些寄存器的值,可以实现对串口通信的控制和数据的传输。
程序举例:
/**
* @brief 串口初始化,9600bps@11.0592MHz
* @param 无
* @retval 无
*/
void Uart_Init(void) //9600bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //清除定时器1模式位(可有可无)
TMOD |= 0x20; //设定定时器1为8位自动重装方式(位或也是一样的)
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
TR1 = 1; //启动定时器1
ET1 = 0; //禁止定时器1中断
ES=1; //串口中断允许控制位
EA=1; //中断允许总控制位
//IE=0x90; //也可这样代替倒数的三个,分别是ET1=0;ES=1;EA=1;
}