说明
串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。
单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。
51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。
串口的硬件电路
简单双向串口通信有两根通信线(发送端TXD和接收端RXD)
TXD与RXD要交叉连接
当只需单向的数据传输时,可以直接一根通信线
当电平标准不一致时,需要加电平转换芯片
电平标准
电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:
TTL电平:+5V表示1,0V表示0
RS232电平:-3~-15V表示1,+3~+15V表示0
RS485电平:两线压差+2~+6V表示1,-2~-6V表示0(差分信号)
接口及引脚定义
多出来的引脚用于数据流控制
串口参数及时序图
串口参数
波特率:串口通信的速率(发送和接收各数据位的间隔时间)
波特率表示字符的数率,比特率是位的数率
检验位:用于数据验证
停止位:用于数据帧间隔
时序图(校验的编码)
51单片机的UART
STC89C52的UART有四种工作模式:
模式0:同步移位寄存器
模式1:8位UART,波特率可变(常用)
模式2:9位UART,波特率固定
模式3:9位UART,波特率可变
串口模式图
SBUF:串口数据缓存寄存器,物理上是两个独立的寄存器,但占用相同的地址。写操作时,写入的是发送寄存器,读操作时,读出的是接收寄存器
串口和中断系统
使用的中断系统图是传统51单片机的,STC89C52的中断系统图可参考手册
串口相关寄存器
SBUF
地址99H
发送的数据的储存位置
PCON电源管理寄存器
地址87H
SMOD和SMOD0控制串口
其他的是电源的配置
IE
IE里的EA和ES与中断控制有关
串口的一般配置
串口一般配置两个:1、SCON 2、PCON
写和读都是SBUF
配置中断的话:EA、ES
配置T1的计时器
串口中断函数的模板和计算
计算(就是1s溢出多少次)文章来源:https://www.toymoban.com/news/detail-729991.html
最大可以使用的位数的2^n,与时钟的通讯频率的差,如:8位为256;TH1和TL1为0xF3的差为13,溢出的频率为1/13MHz,
(1/13)/ 16 *1000^2 = 目标的频率(Hz)文章来源地址https://www.toymoban.com/news/detail-729991.html
模板
/**
* @brief 串口初始化,4800bps@12.000MHz
* @param 无
* @retval 无
*/
void UART_Init()
{
SCON=0x40;
PCON |= 0x80;
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0xF3; //设定定时初值
TH1 = 0xF3; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
/**
* @brief 串口发送一个字节数据
* @param Byte 要发送的一个字节数据
* @retval 无
*/
void UART_SendByte(unsigned char Byte)
{
SBUF=Byte;
while(TI==0);
TI=0;
}
到了这里,关于串口通信(UART)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!