串行通信接口 · 核心实训
串行通信应用 · 6 大经典实训
本项目以 STC89C52RC 单片机串行口为核心,覆盖 UART 异步串行通信的发送、接收、PC 与单片机双向交互,以及串行方式 0 配合 74LS164 移位寄存器扩展 LED 与数码管显示,全面训练串行接口设计与编程能力。
6 大递进式子项目
汇编语言
约 8 学时
配套评分标准
TXD / RXD 实时演示
PROJECT MATRIX
6 大经典实训一览
由简到难,循序渐进掌握串行通信 · 点击任意卡片开始学习
基基础实训
进进阶实训
综综合实训
01
基础实训
单片机向电脑串口发送固定字符
UART初始化 · 波特率设置
SJ-006-01
开始学习 →
02
基础实训
电脑串口下发指令控制单路 LED 亮灭
串口接收 · RI标志
SJ-006-02
开始学习 →
03
进阶实训
电脑下发数字,数码管同步显示接收数值
串口接收 · 数码管译码
SJ-006-03
开始学习 →
04
进阶实训
单片机循环上传 8 路 LED 状态至电脑串口
读取端口 · 串口发送
SJ-006-04
开始学习 →
05
综合实训
串行方式0用74LS164芯片实现8位流水灯
方式0移位 · 74LS164扩展
SJ-006-05
开始学习 →
06
综合实训
串行方式0用74LS164芯片实现1位数码管9-0倒计时
方式0移位 · 段码表查表
SJ-006-06
开始学习 →
单片机向电脑串口发送固定字符
基础实训实训编号
SJ-006-01
实训类型
UART发送
实训学时
40分钟
适用年级
高二,高三
指导教师
王老师
1 项目简介
本项目是串行通信入门的第一个实验,通过单片机 UART 串口向电脑连续发送固定字符(如大写字母 'A'),学习串口初始化和数据发送的基本流程。单片机 TXD 引脚经过 USB 转串口模块连接到电脑,在串口调试助手中即可观察到发送的字符。
掌握本项目后,学生将理解 STC89C52RC 单片机串行口控制寄存器 SCON、电源控制寄存器 PCON 中 SMOD 位的作用,学会使用定时器 1 产生波特率,理解 SBUF 发送缓冲区和 TI 发送中断标志位的工作机制。
2 电路图
电路说明
- • 单片机 P3.1(TXD)通过 USB 转串口模块连接到电脑
- • UART 方式 1,8 位数据,波特率 2400bps
- • Timer1 工作于模式 2,作为串口波特率发生器
- • 单片机 TTL 电平需经 USB 转串口模块转换,不可直接接 RS232 电平
3 程序内容(汇编语言)
;==================================================
; 项目名称:单片机向电脑串口发送固定字符
; 芯片型号:STC89C52RC
; 时钟频率:12MHz
; 串口参数:方式1,8位UART,波特率2400bps
; 功能说明:上电后单片机循环向PC发送字符 'A'
;==================================================
ORG 0000H ; 程序从复位向量 0000H 开始
LJMP MAIN ; 跳转到主程序入口
; 主程序入口
; 功能:完成串口初始化,然后循环发送字符 'A'
MAIN: LCALL UART_INIT ; 调用串口初始化子程序
; 主循环:不断发送固定字符 'A'(ASCII码为41H)
LOOP: MOV A, #'A' ; 将待发送字符 'A' 装入累加器 A
LCALL UART_SEND ; 调用串口发送子程序
LCALL DELAY500 ; 延时约500ms,控制发送间隔
SJMP LOOP ; 返回继续循环发送
;==================================================
; 子程序:UART_INIT
; 功能:初始化 STC89C52RC 串行口为方式1,波特率2400bps
; 参数:无;返回:无
; 说明:
; 1. SCON = 0101 0000B = 50H,表示方式1,允许接收REN=1
; 2. TMOD = 0010 0000B = 20H,定时器1方式2(8位自动重装)
; 3. 晶振12MHz,机器周期1us,SMOD=0,波特率2400时:
; TH1 = 256 - fosc/12/32/2400 = 256 - 13.02 ≈ 243 = 0F3H
;==================================================
UART_INIT:
MOV SCON, #50H ; 串口方式1,允许接收
MOV TMOD, #20H ; 定时器1方式2,自动重装
MOV TH1, #0F3H ; 装载定时器1初值(2400bps)
MOV TL1, #0F3H ; 装载低字节初值
SETB TR1 ; 启动定时器1
RET
;==================================================
; 子程序:UART_SEND
; 功能:将累加器 A 中的 1 字节数据通过串口发送出去
; 参数:A = 待发送数据;返回:无
; 说明:写入 SBUF 后硬件自动启动发送,发送完毕 TI 置 1,
; 软件查询到 TI=1 后必须手动清 0,否则下次无法判断
;==================================================
UART_SEND:
MOV SBUF, A ; 将数据写入发送缓冲寄存器 SBUF
WAIT_TI:
JNB TI, WAIT_TI ; 查询发送中断标志 TI,为0则等待
CLR TI ; 发送完毕,软件清0 TI 标志
RET
; 约500ms延时子程序
DELAY500: MOV R7, #250
D5_1: MOV R6, #200
D5_2: MOV R5, #10
D5_3: NOP
DJNZ R5, D5_3
DJNZ R6, D5_2
DJNZ R7, D5_1
RET
END ; 程序结束
4 评分标准
| 评分项 | 分值 | 评分标准 |
|---|---|---|
| 串口初始化 | 30分 | SCON、TMOD、TH1/TL1、PCON 配置正确 |
| 程序编写 | 40分 | 代码正确、规范,注释清晰 |
| 功能实现 | 20分 | 串口调试助手能稳定收到字符 'A' |
| 实训报告 | 10分 | 报告内容完整、整洁 |
5 注意事项与安全规范
电平匹配
单片机 TTL 电平需通过 USB 转串口模块与电脑连接,不可直接接 RS232 电平
波特率一致
单片机波特率必须与串口调试助手设置一致,否则显示乱码
TI 标志
发送前必须查询并清零 TI,否则可能丢失数据或无法启动下一次发送