《尚硅谷-嵌入式之温湿度闹钟实战项目》是一个典型的入门级综合嵌入式开发实训项目,主要面向初学者,围绕单片机系统开发流程,结合温湿度采集、时钟显示、闹钟设置、人机交互等功能,帮助学习者掌握嵌入式系统的完整开发思路。下面从项目背景、功能模块、硬件结构、软件架构、核心技术点、开发流程与学习价值等方面进行详细介绍。
一、项目背景与定位
该项目属于嵌入式系统入门到进阶阶段的综合实战案例,通常基于 STM32 或 51 单片机平台进行开发(不同版本可能略有区别)。通过一个“温湿度闹钟系统”的实现,将以下知识点串联起来:
- 单片机最小系统搭建
- GPIO 控制
- 定时器与中断
- I2C / 单总线通信
- LCD 显示驱动
- 按键扫描
- 蜂鸣器控制
- 传感器数据采集
- 状态机程序设计
项目强调“模块化设计思想 + 驱动分层编程”,具有较强的实战意义。
二、项目总体功能介绍
整个温湿度闹钟系统主要实现以下功能:
1️⃣ 时间显示功能
- 实时显示当前时间(时、分、秒)
- 支持时间设置
- 采用 RTC(实时时钟)或定时器模拟时钟
2️⃣ 温湿度检测功能
- 采集当前环境温度与湿度
- 周期性更新数据
- 在 LCD 上动态显示
通常使用 DHT11 或 DHT22 温湿度传感器。
3️⃣ 闹钟功能
- 支持设置闹钟时间
- 到达设定时间自动蜂鸣
- 支持按键关闭闹钟
4️⃣ 人机交互功能
- 多按键输入
- 菜单切换模式
- 设置界面切换
5️⃣ 声光提示功能
- 蜂鸣器提醒
- LED 状态指示
三、硬件系统结构
1️⃣ 核心控制器
- STM32F103 / STC89C52 等单片机
- 提供 GPIO、定时器、中断、通信接口等资源
2️⃣ 温湿度传感器模块
- DHT11(单总线协议)
- 提供数字温湿度数据
3️⃣ 显示模块
- 1602 LCD 液晶显示屏
或 - 12864 LCD 图形液晶
用于显示:
- 当前时间
- 温湿度数据
- 闹钟状态
4️⃣ 按键模块
- 独立按键 3~5 个
- 实现模式切换、时间调节、闹钟设置
5️⃣ 蜂鸣器模块
- 有源蜂鸣器
- 通过 GPIO 控制输出报警音
6️⃣ 电源模块
- 5V 或 3.3V 供电
- 稳压电路
四、软件架构设计
该项目的重点在于软件架构设计思想。
1️⃣ 分层结构设计
通常分为三层:
底层驱动层
- GPIO 驱动
- LCD 驱动
- DHT11 驱动
- 按键驱动
- 蜂鸣器驱动
中间服务层
- 时间管理模块
- 传感器数据处理模块
- 按键处理模块
- 闹钟判断模块
应用层
- 主循环调度
- 菜单逻辑控制
- 显示刷新控制
这种分层设计可以增强代码可维护性。
2️⃣ 主循环 + 状态机设计
主程序结构通常为:
while(1)
{
Key_Scan();
DHT11_Read();
Time_Update();
Alarm_Check();
LCD_Refresh();
}
并结合状态机管理不同模式:
- 正常显示模式
- 时间设置模式
- 闹钟设置模式
五、关键技术点解析
1️⃣ 定时器中断
用于:
- 1ms 系统节拍
- 时间累加
- 软件定时
关键知识:
- 定时器初始化
- 中断服务函数编写
- 时间基准计算
2️⃣ DHT11 通信时序
DHT11 采用单总线协议,对时序要求严格。
关键点:
- 起始信号拉低至少 18ms
- 响应信号检测
- 40bit 数据读取
- 校验位验证
这是初学者非常重要的“时序控制”训练。
3️⃣ 按键消抖
常用方法:
- 软件延时消抖
- 定时器扫描消抖
提高系统稳定性。
4️⃣ LCD 显示刷新机制
避免频繁刷新:
- 设置刷新标志位
- 定时刷新
- 仅更新变化数据
这是嵌入式优化思维的体现。
5️⃣ 闹钟触发逻辑
判断条件:
if(current_hour == alarm_hour &&
current_min == alarm_min &&
current_sec == 0)
{
Buzzer_On();
}
同时要注意:
- 防止重复触发
- 添加闹钟标志位
六、完整开发流程
该实战项目一般按照以下流程推进:
- 搭建最小系统
- 实现 LED 闪烁测试
- 定时器测试
- LCD 显示测试
- DHT11 读取测试
- 按键功能测试
- 时间系统搭建
- 闹钟系统实现
- 模块整合
- 功能优化
这符合嵌入式“模块验证 → 集成测试”的工程开发流程。
七、项目难点总结
- DHT11 时序精度控制
- 按键与时间系统冲突处理
- 显示刷新与数据采集同步问题
- 多功能模式切换逻辑设计
- 中断与主循环协调
八、项目学习价值
🎯 1. 综合能力提升
该项目不是单一知识点,而是:
- 硬件电路理解
- 软件驱动编写
- 系统架构设计
- 状态机逻辑设计
- 调试能力提升
🎯 2. 工程思维培养
- 模块化编程
- 分层设计
- 标志位思想
- 资源优化思维
🎯 3. 为后续学习打基础
完成该项目后,可以顺利过渡到:
- 智能家居系统
- 环境监测系统
- 物联网终端设备
- RTOS 系统开发
九、项目扩展方向
可升级为:
- 加入 OLED 显示
- 增加蓝牙通信
- 加入 WiFi 模块(ESP8266)
- 云端数据上传
- 手机 APP 控制
- 增加数据存储(EEPROM)
扩展后可演变为:
👉 小型环境监测终端
👉 智能闹钟系统
👉 物联网节点设备
十、总结
“尚硅谷嵌入式温湿度闹钟实战项目”是一个典型的入门综合实战项目,通过时间系统 + 传感器采集 + 闹钟逻辑 + 人机交互的结合,完整展示了一个嵌入式系统从硬件到软件的实现过程。
它的核心价值不在于功能复杂,而在于:
✔ 教会你如何构建一个完整系统
✔ 理解驱动开发流程
✔ 掌握中断与主循环协调
✔ 建立工程化开发思维
如果你正在系统学习 STM32 或 51 单片机,这个项目非常适合作为阶段性综合训练案例。
课程截图:

课程目录:
├── 01_温湿度闹钟课程介绍.mp4
├── 02_温湿度闹钟市场产品调研.mp4
├── 03_硬件_主控芯片介绍.mp4
├── 04_硬件_嘉立创EDA安装和激活.mp4
├── 05_硬件_嘉立创EDA基础功能页面介绍.mp4
├── 06_原理图_原理图器件总结.mp4
├── 07_原理图_如何查找主控芯片电路.mp4
├── 08_原理图_最小电路晶振电路.mp4
├── 09_原理图_最小电路供电电路.mp4
├── 100_应用层_完成温湿度组合展示.mp4
├── 101_应用层_补充LED灯展示.mp4
├── 102_应用层_补全灯控制.mp4
├── 103_应用层_优化LED灯展示.mp4
├── 104_应用层_触发类开关任务总结.mp4
├── 105_应用层_完成开关触发的基础逻辑.mp4
├── 106_应用层_展示基础闹钟加温湿度展示功能.mp4
├── 107_应用层_拨动LED总开关.mp4
├── 108_应用层_声控模式实现.mp4
├── 109_应用层_时间设置模式下的页面显示逻辑.mp4
├── 10_原理图_最小电路复位电路.mp4
├── 110_应用层_时间设置模式下的按键交互逻辑.mp4
├── 111_应用层_补全按键交互页面切换.mp4
├── 112_应用层_时间设置页面展示底层代码.mp4
├── 113_应用层_时间设置年份页面显示测试.mp4
├── 114_应用层_不同页面展示和时间设置.mp4
├── 115_应用层_时间设置基本功能实现.mp4
├── 116_应用层_在时间设置页面实现温湿度展示.mp4
├── 117_应用层_闹钟设置代码逻辑.mp4
├── 118_应用层_闹钟设置的按键逻辑.mp4
├── 119_应用层_闹钟设置实现.mp4
├── 11_原理图_最小电路烧录控制.mp4
├── 120_应用层_闹钟任务实现.mp4
├── 121_应用层_闹钟优化实现和测试.mp4
├── 122_应用层_实现音量调节任务.mp4
├── 123_应用层_实现亮度调节.mp4
├── 124_温湿度闹钟项目总结.mp4
├── 12_原理图_电源管理接口.mp4
├── 13_原理图_电池保护芯片.mp4
├── 14_原理图_充电管理芯片.mp4
├── 15_原理图_降压稳压芯片.mp4
├── 16_原理图_开关模块.mp4
├── 17_原理图_声控检测.mp4
├── 18_原理图_实时时钟模块.mp4
├── 19_原理图_温湿度传感器.mp4
├── 20_原理图_音频播放.mp4
├── 21_原理图_灯管驱动芯片.mp4
├── 22_原理图_灯管供电连接管理.mp4
├── 23_原理图_LED灯管摆放上.mp4
├── 24_原理图_LED灯管摆放下.mp4
├── 25_原理图_配置主控芯片引脚.mp4
├── 26_PCB_绘制底板.mp4
├── 27_PCB_布局控制板正面器件.mp4
├── 28_PCB_布局控制板背面器件.mp4
├── 29_PCB_5V电源布线.mp4
├── 30_PCB_VCC供电和3.3V供电.mp4
├── 31_PCB_主控芯片最小电路布线.mp4
├── 32_PCB_开关布线.mp4
├── 33_PCB_声控模块布局.mp4
├── 34_PCB_实时时钟布线.mp4
├── 35_PCB_温湿度闹钟和串口引脚.mp4
├── 36_PCB_音频播放和LED板接口.mp4
├── 37_PCB_构建铺铜GND网络.mp4
├── 38_PCB_开发板美化.mp4
├── 39_PCB_下单打板.mp4
├── 40_PCB_LED灯板丝印.mp4
├── 41_PCB_将LED灯摆放到丝印为止.mp4
├── 42_PCB_摆放LED驱动芯片位置.mp4
├── 43_PCB_供电位置的布线.mp4
├── 44_PCB_供电控制的布线.mp4
├── 45_PCB_LED驱动芯片布线.mp4
├── 46_PCB_LED灯控制引脚布线.mp4
├── 47_PCB_LED灯控制引脚布线.mp4
├── 48_PCB_连接剩余的控制线.mp4
├── 49_PCB_连接供电布线.mp4
├── 50_PCB_完成LED灯板.mp4
├── 51_PCB_STM32开发软件选择.mp4
├── 52_软件开发环境_keil_mdk安装.mp4
├── 53_软件开发环境_keil_mdk配置.mp4
├── 54_软件开发环境_keil注册机使用.mp4
├── 55_软件开发环境_vsCode安装.mp4
├── 56_软件开发环境_stm32cubemx安装.mp4
├── 57_项目构建_使用cube创建基础项目.mp4
├── 58_项目构建_串口通信原理介绍.mp4
├── 59_项目构建_串口发送数据演示.mp4
├── 60_公共层_日志输出打印实现和优化.mp4
├── 61_移植freeRTOS_移植文件.mp4
├── 62_移植freeRTOS_实现中断移植.mp4
├── 63_移植freeRTOS_启动操作系统.mp4
├── 64_移植freeRTOS_任务调度逻辑和注意事项.mp4
├── 65_开关驱动_硬件引脚设置.mp4
├── 66_开关驱动_按键短按驱动代码.mp4
├── 67_开关驱动_短按逻辑完成测试.mp4
├── 68_开关驱动_长按逻辑实现.mp4
├── 69_开关驱动_拨动开关驱动实现.mp4
├── 70_触摸驱动_实现触摸驱动逻辑.mp4
├── 71_声控模块_监听声音.mp4
├── 72_实时时钟模块_自定义协议读取数据.mp4
├── 73_实时时钟模块_自定义协议写数据.mp4
├── 74_实时时钟模块_核心设置时间和读取时间.mp4
├── 75_实时时钟模块_寄存器内容介绍.mp4
├── 76_实时时钟模块_配置实时时钟驱动引脚.mp4
├── 77_实时时钟模块_寄存器地址定义和延时函数.mp4
├── 78_实时时钟模块_读寄存器函数编写.mp4
├── 79_实时时钟模块_写寄存器函数编写.mp4
├── 80_实时时钟模块_驱动测试.mp4
├── 81_温湿度模块_DHT11基本功能逻辑介绍.mp4
├── 82_温湿度模块_DHT11完成读取流程介绍.mp4
├── 83_温湿度模块_DHT11读数据流程上.mp4
├── 84_温湿度模块_DHT11读数据流程下.mp4
├── 85_温湿度模块_DHT11测试.mp4
├── 86_音频播放模块_NVD音频芯片手册介绍.mp4
├── 87_音频播放模块_驱动编写.mp4
├── 88_音频播放模块_双线驱动测试.mp4
├── 89_音频播放模块_补全完善驱动.mp4
├── 90_LED灯板模块_引脚对照.mp4
├── 91_LED灯板模块_驱动芯片手册介绍.mp4
├── 92_LED灯板模块_基础驱动编写.mp4
├── 93_LED灯板模块_控制时钟小时的显示.mp4
├── 94_LED灯板模块_控制时钟的分钟的显示.mp4
├── 95_LED灯板模块_同时显示时钟逻辑介绍.mp4
├── 96_应用层_开发逻辑介绍.mp4
├── 97_应用层_采集任务结构逻辑介绍.mp4
├── 98_应用层_完成采集任务的编写.mp4
└── 99_应用层_完成时钟的展示.mp4
├── 1.文档
│ ├── 尚硅谷嵌入式项目之温湿度闹钟.docx
│ ├── 温湿度闹钟PCB.xmind
│ ├── 温湿度闹钟软件开发流程.xmind
│ ├── 温湿度闹钟应用层开发.xmind
│ └── 温湿度闹钟原理图.xmind
├── 2.资料
│ ├── 01_stm32
│ │ └── stm32f103c8.pdf
│ ├── 02_工具安装包
│ │ ├── 01_keil_mdk 安装包
│ │ │ ├── 2020版keil最新注册机
│ │ │ ├── MDK538a.EXE
│ │ │ └── STLinkUSBDriver.dll
│ │ ├── 02_keil 芯片支持包
│ │ │ └── Keil.STM32F1xx_DFP.2.4.1.pack
│ │ ├── 03_stm32 标准库
│ │ │ ├── STM32F10x_StdPeriph_Lib_V3.6.0
│ │ │ └── en.stsw-stm32054_v3-6-0.zip
│ │ ├── 04_arm5_compiler
│ │ │ └── ARMCC.zip
│ │ ├── 05_jre
│ │ │ └── jre-8u381-windows-x64.exe
│ │ ├── 06_stm32cubemx安装包
│ │ │ └── SetupSTM32CubeMX-6.12.1-Win.exe
│ │ └── 07_stm32_hal 离线芯片支持包
│ │ ├── en.stm32cubef1.zip
│ │ └── stm32cube_fw_f1_v186.zip
│ ├── 03_VScode环境准备
│ │ └── VScode安装
│ │ ├── mingw64.zip
│ │ └── VSCodeUserSetup-x64-1.105.1.exe
│ ├── DHT11.pdf
│ ├── DS1302Z.pdf
│ ├── FreeRTOSv202212.01.zip
│ ├── NV020D.pdf
│ ├── TC5020EJ.pdf
│ └── 串口调试工具.exe
├── 3.代码
│ ├── FreeRTOSv202212.01.zip
│ └── 温湿度闹钟.zip
