定时计数器软件编程范例

定时计数器软件编程范例,第1张

我们以一个实际的时钟电路来说明定时器软件编程方法,时钟就是我们最为常见的显示时、分、秒为单位的计时工具,它是典型的应用代表。

    时钟的最小计时单位是秒,但使用单片机定时器来进行计时,若使用6.0MHz的晶振,即使按工作方式1工作,最大的计时时间也只能到131ms,所以我们可把每个定时时间取125ms,这样定时器溢出8次(125ms╳8=1000ms)就得到最小的计时单位秒。而要实现8次计数用软件方法实现是轻而易举的。

    我们使用定时器1,以工作方式1工作,定时器进行125ms定时。采用中断方法进行溢出次数的累计,当计满8次即得到1秒的计时。

    一个时钟的计时累加,要实现分、时的进位,要用到多种进制,秒、分、时中的进位是十进制,秒向分进位和分想时进位却是六十进制,而每天又有十二小时制或二十四小时制,它们分别又是十二进制和二十四进制。从秒到分和从分到小时可以通过软件累加和数值比较方法实现。



    在电路中我们还设置了一个蜂鸣器,用作简单报时用,如可设早上7:30分起床,中午1点30分再有起床报时,每次响时1分钟,响1秒,停2秒的方式,而不是连续响铃。这个程序我们采用12小时制,为此,要在程序中设置相应的标志,以利于主程序识别。同样计时程序中还会有几个相关的标志,主要是控制程序流的转向。程序中我们都作了较详细的注释,这里不再赘述。

    硬件电路,我们还是以低价的AT89C2051单片机为微处理单元,这个芯片兼容C51指令系统,在C51上编写的程序,无需任何修改即可方便地移植到这个芯片上来。我们以P0口作为LED的字段位驱动输出,秒的“进位”采用分值闪烁提示,亮0.5秒,熄0.5秒。,P3.1—P3.3用于位驱动,使用动态扫描方式显示,每位LED的显示时间10—25ms之间均可,扫描频率不能太高,否则每位LED显示的时间过短,亮度太低,不易于观看,以肉眼不感觉到LED闪烁为宜。为了直观,我们的驱动输出没有采用集成电路,而是使用了分立元件—三极管,但工作原理却是一致的。     这个电路结构决定LED采用共阳极的数码管,可以采用LQ5101BS普通的发光二极管,驱动三极管可采用易得的2SA1015和2SC1815等型号,当然也可使用象S9012,S9013,S9014,2N5401,2N5555等小功率三极管,其它器件没有特殊要求。为便于实验,单片机AT89C2051可采用DIP20P插座,程序编制好后,调试无错,即可烧写到AT89C2051中,值得一提的是,AT89C2051是Flash程序存储器,程序可反复擦写,对于做实验是非常方便的。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2420876.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-01
下一篇 2022-08-01

发表评论

登录后才能评论

评论列表(0条)

保存