51单片机 UART串口通信 核心知识点总结
标签:#51单片机 #UART #串口通信 #嵌入式 #STC89C52
一、UART基础概念
UART:通用异步收发器(串行异步收发器) 作用:实现单片机 ↔ 单片机、单片机 ↔ 其他主控之间的数据通信。
1. 硬件引脚
UART通信最少需要3根线:
RXD:接收数据线(接收对方发来的数据)TXD:发送数据线(向外发送数据)GND:共地。✅ 重点:必须共地!串口传输是电压差值信号,通信双方基准地电压要保持一致,否则通信出错。
2. 两种硬件接线方式
- 点对点设备通信(单片机 ↔ 单片机) 交叉接线:
设备1.TXD → 设备2.RXD;设备1.RXD → 设备2.TXD;GND直连。发送端接对方接收端,TXD和RXD必须交叉!
- 单片机 ↔ PC电脑通信 单片机TTL电平串口 → CH340芯片(USB转串口模块)→ PC的USB口。 CH340负责把单片机的TTL串口信号转换成USB信号,电脑识别为虚拟串口。
二、串口传输参数
- 波特率:串口传输速率,单位
bps,代表每秒传输多少bit。 常用波特率:2400、4800、9600、115200。⚠️ 通信双方波特率必须完全一致,否则乱码。
- 三大特性
- 串行:数据按字节逐位发送,先发最低位LSB,后发最高位MSB
- 异步:通信两端使用各自独立时钟,只预先约定波特率。时钟存在微小偏差,波特率误差大容易通信误码。
- 全双工:TX、RX两根独立线路,收发可以同时进行。
三、串口通信帧时序(发送1字节)
一帧数据组成: 1位起始位 + 8位数据位 + 【可选】1位奇偶校验位 + 1位停止位
51模式1默认:无校验位,也就是
起始位 + 8bit数据 + 停止位。 空闲时总线为高电平;起始位拉低,标志一帧开始;停止位拉高,代表一帧结束。
四、波特率计算公式(51单片机,模式1、模式3)
[ \text{波特率}= \frac{2^{\text{SMOD}}}{32} \times \text{定时器T1溢出率} ]
SMOD:PCON寄存器最高位,SMOD=0波特率不倍频;SMOD=1波特率加倍- 定时器1溢出率:定时器每秒溢出多少次
- 12T模式:$\text{溢出率}= \frac{\text{SYSclk}}{12\times(256-\text{TH1})}$
- 6T模式:$\text{溢出率}= \frac{\text{SYSclk}}{6\times(256-\text{TH1})}$
TH1:定时器T1高8位初值,用于8位自动重装模式。
五、串口发送流程(查询方式)
- 设置串口工作模式为模式1(8位数据,无奇偶校验)
- 设置波特率倍频位SMOD
- 根据目标波特率,计算TH1初值
- 配置定时器T1:
- T1设置为8位自动重装模式
- 写入TH1初值
- 开启定时器T1,启动计时
- 向SBUF写入待发送字节,硬件自动开始发送
- 等待
TI发送完成标志置1;软件手动清零TI(硬件置1,不会自动清0!)
六、串口接收流程(中断方式,常用)
- 设置串口工作模式为模式1(8位数据,无奇偶校验)
- 打开串口接收允许位REN
- 设置SMOD波特率倍频
- 计算TH1初值,配置波特率
- 配置定时器T1:8位自动重装,装载TH1初值,开启T1
- 编写串口中断服务函数
- 打开串口中断总开关、EA总中断
- 等待接收中断触发;收到数据存入SBUF,RI标志置1,需要软件手动清零RI
七、高频考点总结
- TXD、RXD交叉相连,GND必须共地
- 异步串口双方波特率必须一致
- TI(发送中断标志)、RI(接收中断标志)硬件置1,软件清零
- 模式1:8bit数据,常用,波特率由T1定时器控制
- CH340作用:TTL串口 ↔ USB协议转换,实现单片机和电脑通信
- 全双工:收发独立,可同时收发;异步:没有共用时钟,靠起始位同步
CSDN文章推荐开头(直接复制)
本文整理51单片机UART串口通信核心原理、硬件接线、时序、波特率计算、收发流程,适合单片机入门复习、期末备考。串口是嵌入式最基础的通信接口,掌握UART原理是学习I2C、SPI等通信协议的基础。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/2601_96618230/article/details/165124694



