LED数码管时钟电路采用24 h计时方式,时、分、秒用六位数码管显示。该电路采用AT89C2051单片机,使用3 V电池供电。系统设计原理:以AT89C2051单片机来实现时钟计时显示有如下几个要点:
1. 计算计数初值:
时钟计时的关键问题是秒的产生,因为秒是最小时钟单位,但使用MCS-51的定时器/计数器进行定时,即使按工作方式1,其最大定时时间也只能达到131ms,离1s还差很远。为此,我们把秒计时用硬件定时和软件计数相结合的方法实现,即:把定时器的定时时间定为125ms,这样计数溢出8次就可得到1s,而8次计数可用软件方法实现。 为得到125ms定时,我们可使用定时器/计数器0,以工作方式1进行,假定单片机为6MHZ晶振,设计数初值为X,则有如下等式: (216 –X)×2=125000
计算得计数初值X=3036,二进制表示为110011011100B,十六进制表示为0CDCH。
2. 设定定时器定时方式:
定时器采用中断定时方式完成,以便于通过中断服务程序进行溢出次数的累计,计满8次即得到秒计时。
3. 实现方法:
通过在程序中的数值累加和数值比较来实现从秒到分和从分到时的计时。
4. 设置时钟显示及显示缓冲区:
假定时钟时间在6位LED数码管上进行显示。为此,要在内部RAM中设置显示缓冲区,共6个单元,与数码管对应关系如图11.12所示。显示缓冲区从左向右依次存放时、分、秒的数值。
|