news 2026/9/11 21:19:13

串口通信11

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
串口通信11

串口定义:

是一种应用十分广泛的通讯接口,成本低操作简单,可实现两个设备的互相通信。

51单片机内部自带UART,可实现单片机的串口通信。

硬件电路:

电平标准:

差分信号是指两根线之间的电平差,TTL与RS232电平只是相对于接地的电平差。

相关术语

  • 全双工:通信双方可以在同一时刻互相传输数据
  • 半双工:通信双方可以互相传输数据,但必须分时复用一根数据线
  • 单工:通信只能有一方发送到另一方,不能反向传输
  • 异步:通信双方各自约定通信速率
  • 同步:通信双方靠一根时钟线来约定通信速率
  • 总线:连接各个设备的数据传输线路(类似于一条马路,把路边各住户连接起来,使住户可以相互交流)

51单片机的UART:


STC89C52有1个UART,UART有4种工作模式。其中只对模式1进行详解

模式一:8位UART,波特率可变。

串口通信参数以及时序图:

三个核心参数
参数含义作用
波特率通信速率 = 每秒传输的位数收发双方必须一致,否则数据全是乱码。9600 bps = 每秒 9600 位
检验位用于数据验证检查传输过程中数据有没有出错(奇偶校验)
停止位用于数据帧间隔标记一帧结束,让接收方"喘口气"准备接下一帧

发送方和接收方必须设成一样的波特率,否则采样时刻对不上

9种数据格式比8位数据格式多了一个校验位,奇偶校验就是0000 0001 0<--使得所有1加起来始终为奇数。

串口模式图:

中间圈起来的就是用来控制波特率的。上方是输出数据,下方是输入数据两者都需要先将数据存储到SBUF之中。

右边圈起来的是串口中断触发逻辑,只涉及4个东西:TI、RI、或门(≥1)、去向中断逻辑。

元素含义怎么工作
TI发送中断标志(Transmit Interrupt)一帧数据发完后,硬件自动置 TI=1
RI接收中断标志(Receive Interrupt)一帧数据收完后,硬件自动置 RI=1
≥1或门(OR gate)TI 和 RI 只要有一个=1,输出就=1
去中断逻辑通往 CPU 中断系统或门输出=1 时,触发串口中断(中断号4)

并且T1,R1要手动清零,如果不清零,或门会一直是1导致一直中断。

串口向电脑发送数据:

1.配置寄存器

SM0SM1工作方式功能说明波特率
00方式0同步移位串行方式:移位寄存器SYSclk/12
01方式18位UART,波特率可变(2^SMOD / 32) × (定时器1的溢出率)
10方式29位UART(2^SMOD / 64) × SYSclk系统工作时钟频率
11方式39位UART,波特率可变(2^SMOD / 32) × (定时器1的溢出率)

由于只运用模式一所以SM0设置为0,SM1设置为1.

SM2:允许方式2或方式3多机通信控制位。所以设置为0.

REN:允许/禁止串行接收控制位。因为这段代码是发送给电脑不需要接收所以设置为0.

TB8:在方式2或方式3,它为要发送的第9位数据,按需要由软件置位或清0。设置为0.

RB8:在方式2或方式3,是接收到的第9位数据。设置为0

TI:工作模式是"硬件置1,软件清0",所以手动清0,设置为0,

这些寄存器可以直接用STC-ISP生成。

串口向电脑发送数据代码:

UART.c子函数:

main主函数

电脑通过串口控制LED:

跟上面的两个差别:1.需要ES=1; EA=1作用是: CPU"允许你被打断去处理"。(打开中断)

2.新增串口中断接收函数,电脑发送的数据直接显示到LED上。

P2 = SBUF中 SBUF 在右边,意思就是"把电脑发过来、存到接收缓冲器里的数据读出来,写到 P2 口"。如果在左边,意思就是电脑接收缓冲器里的数据。

代码改进:需要取反原因:是共阳级接法(接反的如果让第一个灯亮,不取反只是最后一个灯亮)

UART_SendByte(SBUF); // 把收到的数据原样发回电脑

总结:就是进行串口通信时需要配置波特率(串口初始化),串口向电脑发送数据就时利用UART_sendByte函数进行操作,电脑通过串口控制LED就只是多了ES=1; EA=1 允许中断,并新增一个中断接收函数,用UART_sendByte只是单片机→电脑方向的数据传输。

方向1:单片机 → 电脑(发送) UART_SendByte(0x41) → SBUF=0x41 → TXD → 电脑显示

方向2:电脑 → 单片机(接收,需要中断) ES=1; EA=1 → 电脑发数据 → RXD收到 → RI=1 → 跳进 interrupt 4 → P2 = ~SBUF → LED变化

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 21:16:43

QGC地面站配置PX4飞控全攻略:从连接到试飞的完整流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华