电子倒计时设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、系统功能分析

本设计要求实现电子倒计时的功能,即预置一个时间,启动倒计时,当时间到后,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频率闪烁报警的功能。

六、总结体会

本设计让我学到了很多;让我从深层次的了解了单片机内部资源和各个寄存器的使用,理解了定时器以及中断相互结合使用的情况。有一点就是编程之前一定要把流程图写出来,反复推敲,程序不对,就去看流程图不要一直在那死抠程序。再一个就是不懂的地方,多看看书,实在不会可以在网上搜索答案,发帖等等,会得到答案的。

相关文档
最新文档