当前位置: 首页 > news >正文

基于 STM32 的数字闹钟系统 Proteus 仿真设计与实现

一、引言

        在嵌入式开发学习中,数字闹钟系统是一个经典的综合实践项目,既能巩固 STM32 微控制器、实时时钟(RTC)、外设交互等知识点,又能通过仿真工具快速验证设计合理性。本文将详细分享基于 STM32F103C6 的数字闹钟系统在 Proteus 中的仿真设计过程,包括系统架构、模块实现、仿真效果及核心代码解析,适合嵌入式初学者参考学习。

二、设计需求

1. 功能需求

基于 STM32 的数字闹钟系统需实现以下核心功能:

  • 实时显示:通过 LCD 屏幕显示日期(年 / 月 / 日)、时间(时 / 分 / 秒)及星期;
  • 交互控制:通过按键修改系统时间和设置闹钟;
  • 报警提示:到达设定闹钟时间时,蜂鸣器发声 + LED 闪烁报警;
  • 时间精度:依赖 RTC 芯片(DS1302)实现掉电仍能保持计时。

2. 仿真要求(Proteus)

  • 需在 Proteus 中搭建完整电路,包括 STM32 主控、LCD 显示、时钟模块、按键、报警电路;
  • 仿真过程中需验证时间显示、按键设置、闹钟触发等全流程功能;
  • 确保各模块引脚连接正确,时序逻辑无冲突(如 RTC 晶振频率 32.768kHz)。

三、系统总体设计

系统以 STM32F103C6 为核心,配合 5 大功能模块实现数字闹钟功能,整体架构如下:

STM32F103C6(主控) ←→ 时钟模块(DS1302)  // 提供实时时间←→ 显示模块(LM016L)   // 显示时间信息←→ 按键模块(4个按键)   // 时间/闹钟设置←→ 报警模块(蜂鸣器+LED)// 闹钟提示

各模块在 Proteus 中的设计细节如下:

3.1 主控模块(STM32F103C6)

  • 核心功能:处理时间数据、驱动外设、响应按键中断;
  • Proteus 配置:选择 STM32F103C6 芯片,配置外部晶振(8MHz)和 RTC 相关引脚(连接 DS1302 的 SCLK、I/O、RST);
  • 引脚分配:PA0~PA3 连接按键,PB 端口连接 LCD1602 的 8 位数据总线,PC13 控制报警 LED。

3.2 显示模块(LM016L LCD)

  • 功能:显示日期(如 2024-09-26)、时间(如 17:08:20)及设置界面;
  • Proteus 设计
    • 采用 16x2 字符型 LCD(LM016L),通过 8 位并行接口与 STM32 的 PB0~PB7 连接;
    • 控制引脚 RS(PB8)、RW(PB9)、E(PB10)用于指令 / 数据切换和读写控制;
    • 外接电位器调节 V0 引脚电压,优化显示对比度。
  • 仿真效果:通电后自动显示当前时间,设置模式下通过 “>” 符号指示可修改项(如年份、小时)。

3.3 时钟模块(DS1302)

  • 功能:提供高精度实时时钟,掉电后通过 3V 电池保持计时;
  • Proteus 设计
    • 选用 DS1302 芯片,外接 32.768kHz 晶振(X1)保证时间精度;
    • 电池(BAT1)接 VCC2 引脚,主电源接 VCC1,确保断电不丢数据;
    • 通过串行接口(SCLK、I/O、RST)与 STM32 的 PA1~PA3 通信,实现时间读写。

3.4 按键与报警模块

  • 按键模块
    • 4 个独立按键(设置时间、设置加、设置减、设置闹钟),通过 PA0~PA3 连接 STM32;
    • Proteus 中需添加下拉电阻(10kΩ),配合软件去抖(延迟 10ms)避免误触发。
  • 报警模块
    • 由蜂鸣器(BUZ1)、PNP 三极管(8550)和红色 LED(D1)组成;
    • STM32 通过 PB12 输出高电平时,三极管导通,蜂鸣器发声 + LED 点亮,实现声光报警。
  • 3.5 电路设计:

四、Proteus 仿真实现

1. 实时时间显示仿真

  • 启动 Proteus 仿真后,系统自动初始化 DS1302,LCD 显示当前日期(如 2024-09-26 Wed)和时间(如 15:08:54);
  • 时间每秒自动刷新,星期随日期联动更新(通过代码中RTC_Get_Week函数计算)。

2. 时间设置仿真

  • 按下 “设置时间” 键,LCD 进入设置界面,“>” 符号默认指向年份;
  • 再次按下 “设置时间” 键,“>” 依次切换到月份、日、时、分;
  • 通过 “设置加 / 减” 键调整对应数值(如年份从 2024 增至 2025),调整完成后再次按 “设置时间” 键保存退出。

3. 闹钟功能仿真

  • 按下 “设置闹钟” 键,LCD 显示 “Set Alarm” 界面,“>” 默认指向小时;
  • 调整完成后,当系统时间与闹钟时间(如 17:50)匹配时,蜂鸣器发声 + LED 闪烁,按下 “设置减” 键可关闭报警。

五、核心代码解析

以下为仿真中关键功能的代码片段(基于 STM32 标准库):

c

/**********************************************************************************************/
#include "delay.h"
#include "LCD1602.h" 
#include "key.h"#include "led.h"
#include "ds1302.h"#include "stdio.h" 	
#include "stdlib.h" 	extern _Bool flag_timer;			//定时时间到标志位int main(void)
{	_Bool Alarm = 0;unsigned char key_value = 0;					//按键返回值NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级Lcd1602_Init();									//液晶1602初始化LED_Init();KEY_Init();										//初始化端口DS1302_Init();  			   					//DS1302初始化KEY_Init();while(1){	DS1302_ReadTime();							//读取DS1302delay_ms(60);		key_value = KEY_Scan(0);		 			//按键单击switch(key_value){case 1:KEY_Set();	break;case 2:BEEP = 1;							//取消报警break;case 4:KEY_Set_Alarm();					//设置闹钟	break;}DS1302_Time();							//显示时钟if(Timer_info.hou == Ahour&&Timer_info.min ==Amin )		//到达闹钟时间{if(Timer_info.sec==0)				//秒钟为0{if(Alarm==0){Alarm = 1;BEEP = 0;					//开报警}}}else{if(Alarm==1){Alarm = 0;BEEP = 1;						//关报警}}}	
}

 另外附赠设计报告如下:

六、总结与展望

本设计通过 Proteus 完成了基于 STM32 的数字闹钟系统仿真,实现了时间显示、设置、闹钟等核心功能,验证了硬件电路与软件逻辑的合理性。后续可扩展温度显示(添加 DS18B20)或蓝牙同步功能,进一步提升实用性。对于嵌入式学习者,该项目是理解 “硬件 + 软件” 协同设计的绝佳案例,建议结合 Proteus 仿真逐步调试代码,加深对 STM32 外设的理解。

如果需要完整仿真工程文件或代码,可留言获取~

http://www.lryc.cn/news/594705.html

相关文章:

  • 从一开始的网络攻防(六):php反序列化
  • 金仓数据库:融合进化,智领未来——2025年数据库技术革命的深度解析
  • STM32 USB键盘实现指南
  • 最严电动自行车新规,即将实施!
  • FreeSwitch通过Websocket(流式双向语音)对接AI实时语音大模型技术方案(mod_ppy_aduio_stream)
  • 朝歌智慧盘古信息:以IMS MOM V6重构国产化智能终端新生态
  • 【初识数据结构】CS61B中的最小生成树问题
  • Car Kit重构车机开发体验,让车载应用开发驶入快车道
  • 【PTA数据结构 | C语言版】拓扑排序
  • OR条件拆分:避免索引失效的查询重构技巧
  • 【web自动化】-5- fixture集中管理和项目重构
  • 2024年ASOC SCI2区TOP,基于Jaya算法的粒子滤波器用于非线性模型贝叶斯更新,深度解析+性能实测
  • 代码随想录算法训练营第二十七天
  • 为什么 tcp_syncookies 不能取代半连接队列?
  • 【前端】jszip+file-saver:多个视频url下载到zip、页面预加载视频、预览视频、强制刷新视频
  • Python并发编程:突破GIL枷锁,高效利用多核CPU
  • 服务器系统时间不准确怎么办?
  • PHP反序列化漏洞详解
  • 4 种更新的方法将消息从安卓传输到 Mac
  • 2025三掌柜赠书活动第二十五期 网络安全应急响应实战
  • 2025年终端安全管理系统的全方位解析,桌面管理软件的分析
  • 基于python django的BOSS直聘网站计算机岗位数据分析与可视化系统,包括薪酬预测及岗位推荐,推荐算法为融合算法
  • 【设计模式】迭代器模式 (游标(Cursor)模式)
  • Netty实现单通道并发读写,即多路复用
  • Spring MVC 核心工作流程
  • 二、SpringBoot-REST开发
  • OSS文件上传(三):断点续传
  • CentOS 系统上部署一个简单的 Web 应用程序
  • Git上传与下载GitHub仓库
  • 计算机网络:概述层---计算机网络的性能指标