本课程设计的任务是设计一个数字时钟。由于分钟和秒钟显示的范围都是从0~59,使用一个3位的二进制码(2**3=8>5)显示十位,用一个四位的二进制码(BCD码)显示个位(2**4=16>10),对于小时因为它的范围是从0~23,所以可以用一个2位的二进制码显示十位(2**2=4>2),用4位二进制码(BCD码)显示个位(2**4=16>10)。 设计中由于七段码管是使用扫描的方式驱动,为了降低频闪需要一个比较高频率的信号(1KHz)(即使是1Hz时钟信号)。因此为了得到准确的频率信号,必须对输入的系统时钟进行分频。
基础功能
- 默认显示格式为12小时显示方式:11-25-36,其中“-”用第三个和第六个七段数码管中的g段闪烁显示;
- 对于整点报时功能,用户可以根据系统的硬件结构和自身的具体要求来设计。本次设计的要求是当进行整点的倒计时5秒时,让LED来闪烁(频率2Hz)进行整点报时的提示。
- 设置一个复位键(键盘模块的*键),当按下该键后,所有数码管显示11-59-50,时钟从该时刻开始计时。
- 能够利用键盘模块的#键实现时间的调节,即先按下#键,然后再按下键盘中的第一数字键实现小时中的十位调整,再按下一个数字键调整小时的个位,再按下一个数字键调整分钟的十位,以此类推,再次按下#键表示调整完毕,时钟正常开始计时。
扩展功能
- 显示格式可调:用键盘的A键实现12小时方式和24小时方式之间的切换;
- 秒表:用键盘的B键实现秒表计时功能,即按下B键所有显示清零,然后按下C键并开始秒表计时,左边两个数码管为分钟显示,中间两个数码管为秒显示,右边两个数码管为10毫秒显示(需要用到100Hz频率),再次按下C键停止计时,再次按下键盘的B键返回时钟功能。
改进
- 秒表和时钟相互切换,互不干扰(B按键作为秒表和时钟的切换开关,C作为继续、停止按键,D为清零按键)