作业
用51单片机完成一个数字钟的计时及校时功能。
1、设置8个数码管的显示缓冲区为DISPBUFF[8],并初始化为02,02,-,04,08,-,03,06.
2、定时器0每隔5ms刷新一次数码管显示缓冲区,并显示时间(中断来做)
3、定时器1负责精确定时,计时1s,每隔50ms中断一次,中断20次即为1s
4、用图中两个按键实现时分和小时的校时功能,MODE按键实现小时校准、分校准及正常显示的3个模式切换,ADD按键实现对应时间加一,按键采用外部中断方式实现功能。在校准小时及分钟的时候,对应两位数码管的小数点必须亮,正常模式时所有小数点全灭.
5、秒脉冲由51单片机的定时器来提供。
按要求上交实验报告(校准小时、分钟及正常模式的对应Proteus仿真截图及开发板下载图一定要)。
思路
-
定义一个数码管显示模块,起名为dis_seg7()
-
定时器0每隔5ms刷新一次数码管显示缓冲区,并显示时间(中断来做)
-
定时器1负责精确定时,计时1s,每隔50ms中断一次,中断20次即为1s
-
外部中断0实现模式切换
- 正常显示,stat = 0;
- 校分,stat = 1;
- 校时,stat = 2;
- 注意:校时,校分时要停止定时器T1
-
外部中断1实现hour/min自增
- 先检测一下stat
- stat =1,min_increase
- stat = 2, hour_increase
代码
#include<reg52.