当前位置:文档之家› 电子倒计时设计

电子倒计时设计

一、系统功能分析
本设计要求实现电子倒计时的功能,即预置一个时间,启动倒计时,当时间到后,LED灯闪烁报警。

由于我们常用的单片机为AT89C51,且也满足要求,因此设计中单片机采用的是AT89C51;按键采用触发按键,可通过按键输入预置时间值以及进行功能调节。

时间显示采用的是数码管(六个),可分别显示两位小时、分钟、秒。

数码管驱动电路采用74HC595。

还有设置一个LED灯进行闪烁提醒。

另外,设置两个功能键,启动键和预置键(通过矩阵按键4*3设置)。

上电数码管显示六个0;按下预置键,进行预置时间;依次输入六个数字,小时在前;(通过矩阵按键4*3输入0-9十个数字)。

设置完成后,按下启动键,倒计时开始;当数码管显示为六个0时,LED灯以500ms的频率进行闪烁,提醒时间到。

此时,当再次按下预置键后重复以上操作,当按下启动键无操作。

二、系统框图
图1 系统组成框图
如图1是本设计的系统组成框图;系统采用5V电源供电;预置时间以及功能调节通过矩阵按键实现,显示电路使用六位数码管实现;当时间到后,报警电路工作,使用LED灯闪烁实现报警提醒。

三、硬件电路设计
1、矩阵按键电路
本设计采用4*3矩阵按键;S7-S17为依次需要输入的十个数字(0-9),S18和S19分别是启动键和预置键。

通过程序,检测按键是否被按下。

如有按下,则执行相应的程序。

如图2。

图2 矩阵按键电路
2、数码管驱动电路
本设计数码管驱动采用的是带有锁存功能的芯片74HC595。

74HC595内有一个8位移位寄存器和一个8D锁存器,当数码管位数多时可有效的避免在数据刷新过程中的瞬间闪烁问题。

如图3 只截取了三个数码管,应该有六个。

图3 数码管驱动电路
四、软件设计
1、软件控制流程
系统上电,数码管显示六个0;此时主程序扫描按键是否有按键按下;若没有,则继续扫描。

只有当扫描到预置键时,才有操作;此时继续扫描按键;等待输入六个数字;同时数码管进行显示。

六个数字输入完毕后,不再接受其他数字的输入,若启动键按下,此时打开定时器,开始计时;1s时间到,则刷新数码管,数码管上的数字进行减一操作。

依次秒,分钟,小时数值进行相应的变化。

2、按键扫描程序流程图
键盘显示程序流程图
1
图4 按键扫描流程图
3、总程序流程图
N
图5 主程序流程图
4、中断处理
首先可设定时器初值,定时50ms,然后中断20次;即定时1S。

置1S时间到标志位。

主程序检测标志位;若检测到标志位,则首先清标志位,对输入的预
置时间值进行减一操作,然后转换成BCD码送数码管显示。

依次类推,直到时间到。

五、实现效果
经过硬件调试和软件仿真,本设计达到了预期功能。

实现了倒计时的功能;可通过按键输入预置时间值,并且数码管实现了动态显示;时间到后,LED灯实现了500ms频率闪烁报警的功能。

六、总结体会
本设计让我学到了很多;让我从深层次的了解了单片机内部资源和各个寄存器的使用,理解了定时器以及中断相互结合使用的情况。

有一点就是编程之前一定要把流程图写出来,反复推敲,程序不对,就去看流程图不要一直在那死抠程序。

再一个就是不懂的地方,多看看书,实在不会可以在网上搜索答案,发帖等等,会得到答案的。

相关主题