AT89C2051组成的时钟电路原理图

发布时间:2010-10-15 11:03    发布者:techshare
关键词: AT89C2051 , 时钟电路 , 原理图
我们以一个实际的时钟电路来说明定时器的软件编程方法,时钟就是我们最为常见的显示时、分、秒为单位的计时工具,它是典型的应用代表。

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

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

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

在单片机的内部RAM中,需要设置显示缓冲区,显示的时、分、秒值是从显示缓冲区中取出的,在RAM中设置四个单元作为显示缓冲区,分别是7AH、7BH、7CH。为使电路和原理叙述方便,我们这里不显示秒值,秒的进位我们通过闪烁分值实现。这样我们一共有四位LED分别显示时和分值。同时时钟都需要校准的。在程序中还需设置显示码表,要显示的数值通过查表指令将显示用的真正码值送到LED上。我们用单片机AT89C2051的PP3.4和P3.5两个I/O口外接微动开关来实现时和分的校正,每按一次小时或分值加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程序存储器,程序可反复擦写,对于做实验是非常方便的。
本文地址:https://www.eechina.com/thread-32393-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
Sammil 发表于 2011-1-19 22:46:29
谢谢! 学习
xdata 发表于 2011-1-25 12:33:21
LED的段驱动我一般就直接接单片机的IO口了,电路简化不少,用着很正常
wfnic 发表于 2011-7-10 08:40:17
,电路简化不少,用着很正常
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表