本价格不带源程序!(部分源程序以及思路网站已经公开。完整的源程序需要花68元另外购买。)本板不包括桥式整流滤波和7805的价格,元件清单:一块电路板,一个烧好程序的MCU,88个高亮发光二极管,一个晶振,三个开关,一个三极管,一个蜂鸣器,几个电阻和电容。成品板表示接通电源即可显示。 电路特点 这里介绍的电子钟,电路可称得上极简,它仅使用单片的20引脚单片机完成电子钟的全部功能,而笔者见到的其它设计方案均采用二片以上的多片IC实现。
电路见图。
一片20引脚的单片机STC2032(引脚排列与AT89C2051完全相同)为电子钟主体,其显示笔画数据从P1口分时输出,P3口则输出对应的六位选通信号。由于LED数码管点亮时耗电较大,故不能使用AT89C2051单片来完成,但是可以可以用STC89C2032来完成。另外,本站制作时用超高亮的发光二极管代替昂贵的大数码管,成本低,效果独特。
本电子钟设计有三个轻触式按键,这里我们分别命名为:模式设定键K1、加调整键K2、减调整键K3。由于STC89C2032内部已经集成有复位电阻,所以,复位脚只需要接一只电容即可。本电子钟采用了一只NPN型的三极管及蜂鸣器为闹时讯响电路。本图采用电池供电,电路板上有桥式整流、滤波和三端稳压器7805的安装位置,可以用交流电压供整个系统工作。此电子钟可与任何6~12V/100mA的交直流电源适配器配合工作,适应性强。
电子钟功能
1.走时:默认为走时状态,按24小时制分别显示“时时:分分:秒秒”,有四个秒点动态显示,时间会按实际时间以秒为最少单位变化。
2.走时调整:长按K1(或K2、K3)两秒钟以上,时位、分位、秒位会有其一快速闪动,按K1会循环,按K2和K3可以分别对闪动的数字进行加或者减,从而达到快速设定时间的目的。20秒以上长时间没有任何按键操作时,自动按变为正常走时状态。
3.闹时调整:再次长按K1(或K2、K3)两秒钟以上,时位、分位、秒位会有其一慢速闪动,按K1会循环,按K2和K3可以分别对闪动的数字进行加或者减,从而达到快速设定闹时的目的。20秒以上长时间没有任何按键操作时,自动按变为正常走时状态。 注意:闹时状态下时位会在01-64变化,表示64路定时时间;分位只能在00-24变化,表示24个小时,其中默认显示为24,表示不闹;秒位在00-59变化,表示60个分钟。因此,本电子钟以分钟为最小单位可以设定多路闹时。(由于64路太多,基本上没有什么用,用起来反而不方便,所以,本站出售的是16路定时的。)
4.误差修正状态:大家知道,即便是世界上最优良正统的石英晶振,频率也会有偏差,需要电容微调校正频率,不同的电容和负载会影响到频率偏移。这种情况可能会使日误差达到几十秒。当然,配备优质正品元件会使走时误差小到几秒,如果设计微调电容的话,就可以使每天的走时误差小到1秒以内。 但是,对于业余制作来说,没有更标准的测量设备来证明你的调试是刚刚好,不能测周期,不能测频率(普通的测量会改变电路工作参数带来更大的测量误差)。而我们一般都会按电视台的时间来做对比,经过了24小时,我的电子钟究竟是快了??还是慢了?? 现在不用怕了,本电子钟设计了误差校正程序:如果你的电子钟走一天会快1.6秒(或者慢0.8秒),那么,通过本电子钟的误差校正设置,可以在一天中不知不觉的减慢1.6秒(或者加快0.8秒)。因此,本电子钟理论上可以做到日误差小于0.2秒,当然,具体的过程和效果还需要大家去操作和证明。 误差校正方法:在闹时调整状态下,再长按K1(或K2、K3)两秒钟以上,时位、分位会变成“一一一一”或者“三三三三”,表示变慢或者变快的意思,按K1选择;秒位会变成00,按K2、K3会在00-80中变化,数字越大,表示校正越大,00等于即不校正变快也不校正变慢,例如2+0=2-0这样的情况。20秒以上长时间没有任何按键操作时,自动按变为正常走时状态。
其它功能:
1、如果是在走时状态,正逢到在闹铃响(会长响20秒)中,按K1、K2、K3任意键停止发声。
2、在走时状态,按K3可以让电子钟每秒都发出短短的“嘀”声,这有点类似机械指针式的电子钟(或者机械手表)的声音,当然,声音要大一些。这个功能很有用,例如,我们有些特殊情况时不能转头去看着钟,但是可以闭上眼睛听声音在心中默默数数经过了多少秒再去操作某某。再按可以关掉秒发声。
3、整点报时功能:按K2可以开启和关闭整点报时功能。开启后每逢整点就会听到长响两秒“嘀”声。
4、闹时开关功能:按K1可以开启和关闭定时闹铃功能。关闭闹铃后,以前设置的数据不会丢失。
由于电路设计得极其简单,因此丰富的功能只能由软件完成,这里软件设计成为了关键。下面介绍软件设计中采用的一些要点。
本电子钟程序设计时只使用了一个定时数T0,其它的中断全部关断,定时器工作在两个8位自动加载初始值状态。这是保证走时精确稳定的重要方法。站长看到很多书本教材上都让大家用定时器中断来执行动态显示程序和按键扫描程序,这是一种很不好的方法,除了浪费硬件资源以外,还会增加程序复杂性,还会影响其它程序运行。
站长认为,越是中断程序,就要越写得简短,最好几条指令就立即结束,对于动态扫描显示、按键功能等等可以写在主程序中让程序不停的反复运行,如果中断多,最大的坏处就是影响到主程序运行时间不够,扫描显示会出现闪烁,或者按键反应变慢(一般觉察不出),可是,这又有另一好处,你可以随时改良程序并且立即看到结果。 LED动态扫描显示是分时点亮各个LED,利用人的视觉暂留特性,让人觉得是连续点亮。当点亮的频率高时,说明单片机有充足的时间运行主程序。
最后补充: 1、这个电子钟程序认认真真的写了半个多月,全部用汇编语言写成,写一个程序真不简单。因此,本源程序需要另收68元,但是,本程序的思路以及片断会在网上公开,请大家谅解,因为本站还要靠这个程序赚钱。 2、本程序尚未最后完工,因为现在必需要求不掉电才能保存时间以及设置状态。由于2032芯片具有IAP功能,不需外接EEEPROM就可以停电永久保存时间,有兴趣的朋友可以继续完成这个程序,因为现在写得太累了,或者,以后,站长会了C语言,可能会写这个程序。 3、本电子钟对于学单片机是有帮助的,大家购买后可以自己重新写程序也行,相信,很多人会写得更好,功能更强,效果更好,因为,对于站长来说,单片机技术毕竟是只会点皮毛。
查看和发表评论 管理员一般会在8-48小时内回复,会删除无意义的留言以及重复留言,请保证留言标题清晰,内容明确! 1、评论不代表本站观点。 另外,即使是本站原创作品,本站也不保证内容绝对正确。 2、如果您拥有本文版权,并且不想在此处发表,请书面通知本站立即删除并且向您公开道歉! |