电子竞赛5——作息时间控制器

单片机程序:下载地址

一 . 题目要求

  1. 用单片机制作作息时间控制器;
  2. 用四位数码管显示实时时钟(时、分,24小时制、12小时制),有秒闪,小时十位有零消隐;
  3. 可用数字键或+、-键校时(可快速+、-)被校位(时、分)闪烁;
  4. 作息时间可设定(最多16个时间点),可以任意查询、添加、删除;
  5. 设定时间到,发出提示音(5秒),时钟显示闪烁。

设计思考

设计要求使用的单片机是51系列的单片机,并提供了键盘和数码管显示的印刷电路板,所以我们首先制作一个单片机的最小系统,将最小系统的PIN脚引出通过线和键盘,数码管的电路板相连接,软件方面是初始化,然后按键扫描,并输出键值和键盘被按下的信息,后面的程序依据此进行判断,执行相应的操作的,数码管刷新的程序放在定时器0中,记时的功能放在了这个定时器1中。

三. 电路原理

硬件部分

  1. 单片机最小系统

电源:单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚,电容C4为退耦电容。

振荡电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚即可。

复位(RST,第9引脚):只要在RESET引脚上出现了持续24个时钟振荡脉冲(两个机器周期)以上的高电平,单片机就能够实现复位。

蜂鸣器电路:使用P20引脚控制三极管驱动蜂鸣器工作发出提示音。

  1. 按键电路

电路使用4*4矩阵式键盘进行按键控制,先令D1为高电平D2、D3、D4为低电平,扫描D5、D6、D7、D8的状态,令D2、D3、D4依次为高电平,扫描D5、D6、D7、D8的状态,则可知道是那个按键按下。

  1. 数码管驱动电路

从P0口输出时要加上上拉电阻(RP1),P0口输出的是段选码,P1口输出的是位选码。P0口控制数码管显示的数据,P1口控制六位数码管的选通,当循环的频率十分快时,在人的肉眼看来是六位数码管都是同时工作。

软件部分

主流程图

子程序流程图

按键处理

按键扫描

四.调试及总结

程序调试时,蜂鸣器发声不太正常,由于单片机输出带负载能力较差,后来改进电路,程序编写过程中出现了数据存储器不足问题,使用了较多的全局变量,后来虽然一定程度上改进了,但数据存储器的空间剩下的仍然不多,段码的编写一开始直接试,效率较低,以后应先分析引脚的功能,然后编程,提高效率,在程序开始部分应对程序中用到的pin脚的定义,增强可读性,对一些常用缩写定义方便使用的。

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注