课程:单片机原理及应用 | 授课教师:胡冀 教授 | 主要知识:定时器中断、数码管、DAC、串口通信

单片机原理及应用课程学习总结

本课程学习路径从单片机硬件,单片机寄存器、RAM基础操作逐步推进到定时器/中断、数码管动态扫描、DAC0832 波形生成,最终完成带 UART 协议与 EEPROM 掉电存储的综合系统实现;这中间不得不指出,的确一部分C51代码是AI编写的,主要是因为51单片机资源太有限,对于AI来说错误率会大大降低,但是其顶层设计仍然是人工设定;因为本人在第四学期准备电赛,胡老师的课没有去上好几次(特别是单片机硬件课),虽然对于现在来说,其内容不难,但是胡冀老师上课很有热情,讲解是非常清晰的,51单片机内的体系架构知识也是本人第五学期完成的RISC-V项目的基础之一,现在我虽然学会了基础的单片机硬件(电源电路、复位电路等),仍然在为翘那几节课而惋惜,因为自学效率总没有一个优秀的老师直接讲解来的高。

关键词:C51、Proteus、Keil、Timer/Interrupt、DAC0832、AT24C02、UART

作业范围与学习目标

课程作业按“基础到综合”的顺序推进:先完成 I/O 与存储访问,再进入定时器与中断设计,随后拓展到数码管交互与 DAC 波形输出,最后通过实物系统完成多模块联调。

从目录结构看,实验报告 1-5 共覆盖 14 个分实验任务,并在大作业中完成功能整合与协议化控制,形成了从“单点功能”到“系统工程”的完整训练闭环。

实验规模

实验报告1~5 + 单片机大作业,覆盖课程核心知识点与工程实践路径。

工具链

以 Keil C51 + Proteus 仿真为主,配合实物系统调试完成关键功能验证。

能力主线

GPIO 控制 -> 定时器/中断 -> 动态显示与按键 -> DAC 波形 -> UART + EEPROM 系统集成。

工程产出

形成了 LaTeX 实验报告、Keil 工程、Proteus 工程和 GitHub 代码仓库等完整资料。

实验阶段总览

阶段 代表实验 核心训练点
实验报告1-2(入门) 数据迁移、单灯闪烁、8位跑马灯 片内/片外存储访问、GPIO 输出、定时基础与延时控制
实验报告3(定时与波形) 67ms 指定周期方波、1k/100/10/1Hz 切换、占空比可调 T0 定时器方式1、外部中断触发、频率分频与占空比调节
实验报告4(显示与交互) 数码管“2024”显示、按键步进、24秒倒计时 动态扫描、多键消抖、显示缓存与状态机
实验报告5(数模转换) 锯齿波、三角波、自定义波形 DAC0832 驱动、查表法、定时器精确控制 67ms 周期
大作业(系统集成) 串口屏秒表实物系统 UART 协议、模式切换、AT24C02 掉电存储与系统联调
学习路径:
I/O 与存储访问 -> 定时器与中断 -> 数码管与按键 -> DAC波形生成
-> UART协议通信 -> EEPROM掉电保存 -> 多模块综合系统

关键实验总结

关键点 1:从底层资源访问到基础控制逻辑

在“数据迁移”实验中,通过 xdataidata 完成片外地址 0x1000~0x1030 到片内 0x30~0x60 的搬运并清零原区域,建立了对 C51 存储空间与地址映射的直观理解。 LED 单灯闪烁和跑马灯实验进一步强化了端口驱动与时序控制的基本功。

关键点 2:定时器/中断驱动的波形控制

在实验报告3中,围绕 12MHz 时钟完成了指定周期方波输出(20+学号后两位,对应约67ms)以及多频率切换。 在选做部分实现占空比调节后,也记录了高频下 ISR 复杂度导致频率误差的问题,形成了“功能实现 + 性能复盘”的工程习惯。

关键点 3:数码管动态扫描与按键交互

实验报告4从静态数字显示逐步扩展到按键步进与倒计时控制,重点掌握了位选/段选时序、按键消抖与外部中断触发。 24秒倒计时实验将显示、按键与定时器结合,体现了“主循环显示 + 中断更新状态”的典型 MCU 设计模式。

关键点 4:DAC0832 波形生成与模块化代码结构

实验报告5完成锯齿波、三角波与自定义波形输出,采用查表法与定时器中断控制采样间隔,实测周期约 67ms。 通过 getSawWavegetTriangleWave 与自定义波表的拆分,实现了更清晰的函数化与可扩展设计。

实验模块 实现结果 复盘要点
方波频率切换 支持 1kHz / 100Hz / 10Hz / 1Hz 切换 1kHz 下 ISR 负载较高,需进一步精简中断路径
占空比调节 低中频下可调效果稳定 高频场景需优化计数与重装载策略
24秒倒计时 实现启动/暂停/复位与动态显示 时间精度与暂停态交互仍有调参空间
DAC 波形输出 锯齿波/三角波/自定义波按预期输出 采样点与定时精度直接影响波形平滑度

大作业:串口屏秒表实物系统

大作业将课程核心模块完整串联:以 51 单片机为控制核心,融合数码管显示、串口屏指令交互、倒计时状态机和 AT24C02 掉电存储,形成可落地的实物系统。

Step 1:计时/倒计时双模式

主循环维护 Min/Sec/MiniSec,中断驱动时间推进,并支持模式切换。

Step 2:UART 协议控制

采用 0x05 帧头、命令字、可选数据字段、0x26 帧尾,实现串口屏与单片机通信。

Step 3:AT24C02 掉电存储

通过 I2C 读写分钟/秒/百分秒,支持保存和恢复当前时间数据。

Step 4:状态反馈与联调

倒计时结束触发 LED 提示,结合按键与串口命令完成整机功能验证。

串口命令示例:
0x30 暂停/继续计时  |  0x31 复位计时  |  0x32 写入AT24C02  |  0x33 读取AT24C02
0x40 切到计时模式    |  0x41 切到倒计时  |  0x50 倒计时暂停/继续 | 0x52 设置倒计时秒数

课程收获与改进点

底层理解提升

对 C51 存储区、寄存器配置、位操作与时序控制建立了更稳定的工程直觉。

中断思维建立

能够把主循环与中断职责分离,降低阻塞式逻辑对实时性的影响。

系统集成能力

实现了显示、按键、串口、EEPROM、LED 提示的多模块协同与联调。

持续优化意识

在报告中主动记录频率误差与交互边界问题,明确后续优化方向。

核心效果预览

下方展示串口屏秒表实物图,便于直观看到系统整体搭建效果。

串口屏秒表实物图
串口屏秒表实物图。数码管显示效果因为相机的刷新频率较高,因此拍不出来。
串口屏对于秒表的设定界面
串口屏对于秒表的设定界面。

一纸开卷

课程期末考试使用的一纸开卷整理如下,包含正面与反面。支持点击图片放大查看细节。

一纸开卷正面
一纸开卷正面(点击可放大)
一纸开卷反面
一纸开卷反面(点击可放大)

打开正面原图 打开反面原图

GitHub 仓库

返回主页对应模块