LED数码管24小时时钟电路实验

时钟是很贴近生活的电子产品。这里用4位LED数码管制作24小时制的时钟电路,可供人们放置在家中计时之用,其电路如下图所示。
在下图中,PIC16F84A的RA4位,外接的K1键就是一种键值功能键。单片机的时钟C程序,实际上是一种LED数码管按0~24小时循环的记数方式,这种计数方式的时间起点是0点开始的,因此使用时必须以深夜O点开始启动记时工作,所以使用十分不便。为此应另加预置键,如下图中的Kl,使得下图时钟电路在任何时刻接上电源之后,利用Kl键实时校准时钟的起始时刻,在校准时钟的起始时刻时,这里以分和时显示为准,不包括秒显示。
1.下图时钟电路的操作方法
这里介绍下图的4位LED数码管时钟电路的操作方法,其目的是为了说明以下时钟程序的编写中所需的键值功能函数,这也是编写C程序必备的硬件电路的要求。
当以下的C程序经过编辑、编译、将.hex(目标码)烧写到PIC16F84A芯片时,再将芯片安置到下图中的插座上(可用⑩脚插孔座置在印板上,便于操作芯片的工作),接上+5V电源(这里图中未绘出,可用相关的电源适配器),下图的电路板即显示00.00。此时如果不按动Kl键,该电路板即是一种从0开始的接0分~24小时的时钟电路,此时该下图的电路板可作计时器用。如果要使该电路板作实时的时钟,例如当前时刻为12.32即10点32分,此时由人工按下Kl键,00.00即消失,之后人工放开Kl键,再人工又按下Kl键。此时00.00即开始从分计时,直到显示00.32(分)时,人工放开Kl键.然后又按下Kl键即开始小时的预值。直到00.32变化到12时为止,LED数码管显示12.32时,人工放开Kl键,预置实时功能完成,下图电路板即按实时(可自设定)时刻开始0~24小时循环工作计时。
2.可预值10分~24小时的C程序根据
以上所述的可预置的时钟电路操作方法,再将PICl.c的0~99秒递增程序加以扩展,即可编辑可预置的0分~24小时的C程序,并命名为PIC2.c,其清单如下:
说明:
(1)该C程序是多次用过的,即完全可执行的。早期用汇编语言编辑过该功能程序,也是成功的,但其程序条目比这里的C语言程序多一倍以上,如果读者有兴趣还可将该PIC2.c进行优化,以减少程序的代码条目。
(2)阅读上述时钟程序的最好方法是首先按图l制作一电路板,再将PIC2.c在MPLABIDE(如7.40版)上进行编译生成目标码.hex,再将hex烧成写到pic16F84A芯片上,然后制作下图的时钟。再根据以上介绍的时钟电路操作方法反复操作,然后再阅读以上程序,就一目了然了。
(3)在阅读PIC2.c时仍然应注意程序中的生凋函数dispfay(ttr):这里主调函数中的实参ttr还有一表达式ttr=X*l00+Y,即时、分整合表达式的计算完成后的实参值,这与PICl.c的简单实参有所不同。同样是主调函数的实参传递给被调函数Voiddisplay(unsignedint)即值传递之后,完成其显示功能。
用相同方法去阅读主函数maln调用键值显示函数display_set(val-ue);以完成值传递过程,这里不再复述。
(4)上述可预置的0~24小时时钟的精度,主要由被调函数(执行函数)中的unsignedintd=2900,即其d值而定,取的d=2900,该值的时钟比标准时间略偏慢点。读者有兴趣使用时,可将d适当减少后,再与中央电视台标准时间校时为好!
评论