【单片机入门】UART 串行异步通信核心考点梳理

51单片机 UART串口通信 核心知识点总结

标签:#51单片机 #UART #串口通信 #嵌入式 #STC89C52

一、UART基础概念

UART:通用异步收发器(串行异步收发器) 作用:实现单片机 ↔ 单片机、单片机 ↔ 其他主控之间的数据通信。

1. 硬件引脚

UART通信最少需要3根线:

  1. RXD:接收数据线(接收对方发来的数据)
  2. TXD:发送数据线(向外发送数据)
  3. GND:共地。 ✅ 重点:必须共地!串口传输是电压差值信号,通信双方基准地电压要保持一致,否则通信出错。

2. 两种硬件接线方式

  1. 点对点设备通信(单片机 ↔ 单片机) 交叉接线:设备1.TXD → 设备2.RXD;设备1.RXD → 设备2.TXD;GND直连。 发送端接对方接收端,TXD和RXD必须交叉!
  2. 单片机 ↔ PC电脑通信 单片机TTL电平串口 → CH340芯片(USB转串口模块)→ PC的USB口。 CH340负责把单片机的TTL串口信号转换成USB信号,电脑识别为虚拟串口。

二、串口传输参数

  1. 波特率 :串口传输速率,单位bps,代表每秒传输多少bit 。 常用波特率:2400、4800、9600、115200。 ⚠️ 通信双方波特率必须完全一致,否则乱码。
  2. 三大特性
    • 串行:数据按字节逐位发送,先发最低位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. 设置串口工作模式为模式1(8位数据,无奇偶校验)
  2. 设置波特率倍频位SMOD
  3. 根据目标波特率,计算TH1初值
  4. 配置定时器T1:
    • T1设置为8位自动重装模式
    • 写入TH1初值
    • 开启定时器T1,启动计时
  5. 向SBUF写入待发送字节,硬件自动开始发送
  6. 等待TI发送完成标志置1;软件手动清零TI(硬件置1,不会自动清0!)

六、串口接收流程(中断方式,常用)

  1. 设置串口工作模式为模式1(8位数据,无奇偶校验)
  2. 打开串口接收允许位REN
  3. 设置SMOD波特率倍频
  4. 计算TH1初值,配置波特率
  5. 配置定时器T1:8位自动重装,装载TH1初值,开启T1
  6. 编写串口中断服务函数
  7. 打开串口中断总开关、EA总中断
  8. 等待接收中断触发;收到数据存入SBUF,RI标志置1,需要软件手动清零RI

七、高频考点总结

  1. TXD、RXD交叉相连,GND必须共地
  2. 异步串口双方波特率必须一致
  3. TI(发送中断标志)、RI(接收中断标志)硬件置1,软件清零
  4. 模式1:8bit数据,常用,波特率由T1定时器控制
  5. CH340作用:TTL串口 ↔ USB协议转换,实现单片机和电脑通信
  6. 全双工:收发独立,可同时收发;异步:没有共用时钟,靠起始位同步

CSDN文章推荐开头(直接复制)

本文整理51单片机UART串口通信核心原理、硬件接线、时序、波特率计算、收发流程,适合单片机入门复习、期末备考。串口是嵌入式最基础的通信接口,掌握UART原理是学习I2C、SPI等通信协议的基础。

相关推荐
say_fall2 小时前
【Linux网络编程】UDP套接字编程:系统编程组件、基础回显服务、InetAddr与地址转换、翻译服务与线程池聊天室
linux·服务器·网络·udp·vr
ö Constancy2 小时前
一台电脑的硬件组成与作用:按功能分类详解(Windows 与 Linux 视角)
linux·windows·电脑
江湖有缘2 小时前
基于Ubuntu部署SoduWork:企业级 AI 原生协同平台实战全流程
linux·人工智能·ubuntu·ai·soduwork
无奈笑天下11 小时前
银河麒麟上nproc命令教程详解
linux·运维·服务器
Rabitebla14 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
坤坤子吖19 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
AI_Gump19 小时前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
星恒随风20 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
少司府20 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
无足鸟ICT21 小时前
【RHCA+】IO调度算法
linux·服务器