微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 用DS12887制作无电源仍可走时的时钟

用DS12887制作无电源仍可走时的时钟

时间:04-23 来源:互联网 点击:

的中断。但是仍需要通过读取该寄存器以清楚中断标志,以免程序重复处理。寄存器D是与器件是否有效相关的寄存器,本电路无需处理该寄存器。

硬件电路

电路使用4位一体共阴极数码管显示时钟、闹钟和日历信息,数码管采用CD4511作硬件译码,74LS06作动态选择和驱动电路。电路图如图3所示。CD4511是一种用于数码管显示的译码芯片,在芯片输入引脚(D~A)输入4位二进制数值,在输出端(a~g)则译码输出共阴极数码管所需要显示的数值,例如在CD4511的D~A这4个引脚输入0101(十进制的5,D为最高有效位数据),则在输出端的a~g输出1011011。而且CD4511有个很有用的消隐功能,即当输入端D~A的值大于9时,输出端a~g呈现高阻态,从而在数码管表现为7段灯都会灭掉。

74LS06包含6个非门电路,本文只需要其中4路即可。在输入端置1,对应的输出端则为0,则选中其中一个数码管。比如在AT89S52的P1.4输入1,则74LS06的4A引脚为1,在其对应的输出脚4Y输出就为0,从而选中与s1相连的DS1数码管。在焊接电路板时,可以将CD4511和74LS06这两个芯片放在数码管下方,这样整个电路板就会小巧一些。因为数码管只有4位,而且必须用其中的两位显示一项时间信息,所以每次只可以显示两项时间信息,例如DS1、DS2分别显示月份的十位、个位,DS3、DS4分别显示日期的十位、个位。但要显示的时间信息要多得多,所以采用分时复用的方法轮流显示时和分、月和日、年和星期,在时间分配上笔者使用了下述方案:在每一分钟中,0~9s、20~39s、50~59s的时间里显示时钟的时和分,在10~19s内显示月和日,在40~49s内显示年和星期,而时钟的秒数则不作显示处理。因为星期的最大数值为7(表示星期天),可以只在个位显示,星期分配的十位可以作消隐处理。设定的闹钟信息不是需要经常查看的,所以不做上述的分时显示,而是通过按下KEY4键查看。电路图中的4个按键功能分配如下,KEY1:数值加1键;KEY2:数值减1键;KEY3:调节项目选择,当该键按下可以选择不同的调节项目,依次为时钟的时、时钟的分、月份、日期、年、星期、闹钟的时和闹钟的分。KEY4:选择显示时间(包括时、分、月、日、年和星期)或闹钟。红色的LED闪亮表示数码管当前显示的是闹钟的时和分,绿色的LED闪亮表示当前显示的是时钟的时和分;而红色的LED闪亮和蜂鸣器发出声音,则表示闹钟所定格的时间到来,发出警报提醒;当两个LED都不闪亮时表示显示的为日历信息,即月、日、年和星期,可以通过DS3是否显示数据区分出显示的是月、日还是年、星期。

软件设计

笔者使用的编译环境为Keil编译软件,采用C51编程语言。整个程序由几个模块构成,文件mmi.c中包括一些人机交互处理的函数,比如读取按键、在数码管上显示时间信息、LED和蜂鸣器的发声处理等;文件ds12887.c中包括读写和初始化DS12887的函数;文件my52.c中包含延时函数;在文件main.c中则调用这些模块中的函数进行综合处理,主函数的程序流程图如图4所示。各个xxx.h文件中则是相应的xxx.c文件中的函数声明、全局变量声明等

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top