电子时钟系统设计
紧接着按下按键S2和按键S3进行时和分的设置,再按下按键S4恢复显示时间;当显示的时间和定时设置的时间一致时,蜂鸣器发出蜂鸣声,蜂鸣时间设置为10秒。
电路中将六个按键的一个公共端接电源,而单片机的P1口默认为高电平,一旦按键被按下,则该按键对应的管脚被拉低,通过软件扫描按键即可知道用户所要实现的功能,调用相应的按键子程序来完成该操作。按键电路如图3-3-1所示:
图3-3-1 按键电路
因为我们设计的按键电路才用的是机械触点式按键,因此我们在操作按键的时候有一个抖动过程,按键发射信号的过程如图3-3-2所示,为了避免数据无法正确读出来,我们在设计软件时要一个5~10ms的去抖过程。
图3-3-2 按键过程图
14
电子时钟系统设计
3.4 显示电路
八段数码显示管有两种,一种是共阳数码管,其内部是由八个阳极相连接的发光二极管组成;另一种是共阴数码管,其内部是由八个阴极相连接的发光二极管组成。二者原理不同但功能相同。一上电数码管显示起始时间为0时0分0秒,即数码管显示00.00.00,以后每秒钟时钟系统加1,最大显示值为23.59.59。本设计的时间显示选用6个共阴八段数码管LED,其外形和内部结构如图3-4-1所示:
图3-4-1 八段共阴数码管LED
本论文的时间显示模块电路如图3-4-2所示。
图3-4-2 时间显示模块
15
电子时钟系统设计
4 软件设计
4.1 主程序流程图
一个系统是有软件和硬件共同完成的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。主程序流程图如图4-1所示:
图4-1 主程序流程图
系统的软件设计采用C语言对单片机进行编程实现各项功能。软件设计的关键是对时间的调节及实时显示。
16
电子时钟系统设计
4.2 中断子程序
本设计的中断程序为: void diplay() interrupt 1 { ET0=0; TR0=0; TH0 = 0xDB; TL0 = 0xff; TR0=1; tcount++; if(tcount==100) {
time1.second++; tcount=0;
dat1[0]=(time1.second); dat1[1]=(time1.second)/10; }
if(time1.second==60) { dat1[0]=0; dat1[1]=0; time1.second=0; time1.minute++;
dat1[3]=(time1.minute); dat1[4]=(time1.minute)/10; }
if(time1.minute==60) {
time1.minute=0; time1.hour++; dat1[6]=time1.hour; dat1[7]=time1.hour/10;
17