前言
本教程基于B站江协科技课程进行个人学习整理,专为拥有C语言基础的零基础入门51单片机新手设计。既帮助解决因时间差导致的设备迭代调试难题,也助力新手快速掌握51单片机核心知识,实现从C语言理论到单片机实践应用的高效过渡 。
目录
前言
1.知识储备
1.串口介绍
2.硬件电路
3.电平标准
4.接口及引脚定义
编辑
5.常见通信接口比较
编辑
6.相关术语
全双工:通信双方可以在同一时刻互相传输数据
7.51单片机的UART
8.串口参数及时序图
9.串口模式图
编辑
10.串口和中断系统
编辑
11.串口相关寄存器
2.操作流程
1.驱动代码模块化
串口向电脑发送数据
电脑通过串口控制LED
2.主体代码编写
串口向电脑发送数据
电脑通过串口控制LED
3.进行烧录
4.成果展示
串口向电脑发送数据
电脑通过串口控制LED
3.总结
1.知识储备
1.串口介绍
1.串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。
2.单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。
3.51单片机内部自带UART(Universal。Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。
2.硬件电路
1.简单双向串口通信有两根通信线(发送端TXD和接收端RXD)
2.TXD与RXD要交叉连接
3.当只需单向的数据传输时,可以直接一根通信线
4.当电平标准不一致时,需要加电平转换芯片
3.电平标准
电平标准是数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种:
1.TTL电平:+5V表示1,0V表示0
2.RS232电平:-3~-15V表示1,+3~+15V表示0
3.RS485电平:两线压差+2~+6V表示1,-2~-6表示0(差分信号)
(差分信号是一种利用两个互补且幅度相等、极性相反的信号来传输信息的方式,其传输的是两个信号的差值。在传输过程中,它具有抗干扰能力强、能抑制共模噪声以及可提高信号传输速率等优点,因此被广泛应用于高速数据传输和高精度模拟信号处理等领域。)
4.接口及引脚定义
图中是DB9接口,是一种常用于串行通信的接口。以下是各引脚功能介绍:
- DCD(Data Carrier Detect,载波检测):用于检测是否有载波信号,在调制解调器通信中判断对方是否有信号传输过来 。
- RXD(Receive Data,接收数据):用于接收从外部设备传来的数据 。
- TXD(Transmit Data,发送数据):用于向外部设备发送数据 。
- DTR(Data Terminal Ready,数据终端准备好 ):表示数据终端设备已准备好进行通信 。
- SG(Signal Ground,信号地 ):作为信号的参考电位,提供电气连接的公共端 。
- DSR(Data Set Ready,数据设备准备好 ):表明数据通信设备(如调制解调器)已准备好进行通信 。
- RTS(Request To Send,请求发送 ):用来请求发送数据,告知对方设备本端准备好发送数据 。
- CTS(Clear To Send,清除发送 ):是对RTS的响应信号,告知本端可以开始发送数据 。
- RI(Ring Indicator,振铃提示 ):在调制解调器通信中,用于指示有来电振铃信号 。
5.常见通信接口比较
(点对点通信一般用于两个特定节点间直接通信,通常难以挂载多个设备,但通过借助中继或代理设备,以及基于特定协议改进等特殊方式,可在一定程度上实现类似“一对多”的通信效果。)
6.相关术语
全双工:通信双方可以在同一时刻互相传输数据
半双工:通信双方可以互相传输数据,但必须分时复用一根数据线
单工:通信只能有一方发送到另一方,不能反向传输
异步:通信双方各自约定通信速率
同步:通信双方靠一根时钟线来约定通信速率
总线:连接各个设备的数据传输线路(类似于一条马路,把路边各住户连接起来,使住户可以相互交流)
7.51单片机的UART
STC89C52有1个UART
STC89C52的UART有四种工作模式:
模式0:同步移位寄存器
模式1:8位UART,波特率可变(常用)
模式2:9位UART,波特率固定
模式3:9位UART,波特率可变
(这节讲模式1)
( UART是异步串行通信设备,RXD是其接收数据引脚,TXD是发送数据引脚。UART通过RXD接收、TXD发送数据,实现异步串行数据传输,RXD和TXD是UART通信的重要组成部分。)
8.串口参数及时序图
波特率:串口通信的速率(发送和接收各数据位的间隔时间)
检验位:用于数据验证
停止位:用于数据帧间隔
9.串口模式图
- SBUF:有读写两个,地址均99H ,分别存待发送和已接收数据。
- TH1、TL1:定时器/计数器1的高低位寄存器,用于产生串口通信波特率。
- SMOD:控制波特率是否倍增。
- 发送与接收控制器:前者经控制门从TXD发数据,TI标志发送完成;后者经移位寄存器从RXD收数据,RI标志接收完成。
- 移位寄存器:将RXD串行数据转并行存SBUF。
- 去中断逻辑:处理TI、RI产生的中断 。数据发送从写SBUF经控制门到TXD;接收从RXD经移位寄存器到读SBUF 。
10.串口和中断系统
1. 初始化:设置TH1、TL1确定波特率,配置SCON寄存器。
2. 发送:数据写入SBUF,发送控制器经TXD逐位发送,完成后置TI ,满足中断条件时申请中断处理。
3. 接收:RXD接收数据,经移位寄存器存至SBUF,完成后置RI ,满足中断条件时申请中断读取处理。
4. 中断管理:TCON记录标志、设触发方式;IE控制中断允许;IP设定优先级,硬件按优先级查询处理中断。
11.串口相关寄存器
(如需了解更多详细信息,请查阅相关手册)
2.操作流程
1.驱动代码模块化
串口向电脑发送数据
1.从从stc-isp中复制而来。注意参数
2.删掉图示所示位置,因为那两行代码需要清除,因为头文件
3.完整代码
电脑通过串口控制LED
和上述一样
2.主体代码编写
串口向电脑发送数据
电脑通过串口控制LED
3.进行烧录
1.打开stc-isp,左击”打开程序文件“找到文件夹,进入文件夹,双击”Objects“,再双击”Project.hex“,在确保51单片机已经与电脑连接的状态下,左击“下载/编程”
2.在确保51单片机已经与电脑连接的状态下,按下51单片机开关,等待操作界面显示“操作成功”的字样后,关闭51单片机再次启动即可
3.串口向电脑发送数据的操作,调整参数,打开串口
5.电脑通过串口控制LED的操作,调整参数,打开串口,输入十六位进制数字,点击发送数据
4.成果展示
串口向电脑发送数据
电脑通过串口控制LED
3.总结
本文是学习 B 站江协科技 51 单片机入门教程第 8 章 “串口通信” 后的实践总结,同时为新手提供一份实用指南。全文以串口知识体系为核心,重点梳理串口通信的原理、寄存器配置及编程逻辑。只有建立扎实的知识储备,才能清晰理解代码编写的底层逻辑与执行流程。以下从基础概念、寄存器功能、实战代码解析三个维度展开,帮助读者系统掌握串口通信技术,快速上手单片机串口编程。