APP下载

多功能电子时钟设计

2013-03-23李庆江

电脑与电信 2013年4期
关键词:计数器闹钟按键

李庆江

(菏泽学院教务处,山东 菏泽 274000)

1.引言

单片机早已广泛应用于多种领域,尤其在智能仪表类中的应用更是如此,不仅引起了产品本身的变革,也深深地影响了设计理念的变革。智能仪表作为一种智能系统,其核心在于单片机。基于单片机的系统设计,已经成为广大电子设计工程师或相关领域设计者关注的热点。

2.电子钟功能介绍

电子时钟基本功能要求:可调整运行的电子钟具有两种工作状态:(1)运行状态:在此状态下,按K3、K4键均无效,按 K1、K2键有效,按下 K1键后,进入调整状态;(2)调整状态:按K1键进入,在此状态下,按K3、K4键均有效。按下K3键,可调整要调节的数字的位置状态;按下K4键,则一次分别对闹钟开关,及闹钟时、分、秒,时间时、分、秒加一,再按K3退出调整状态,进入运行状态。

2.1 计时方案

利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。该方案节省硬件成本,且能使读者在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,对单片机的指令系统能有更深入的了解,从而对学好单片机技术这门课程起到一定的作用。

2.2 键盘/显示方案

AT89S52的P0口和P2口外接由LCD 1601A构成的显示器,用P0口作为LCD的数据口,P2的P2.4、P2.5、P2.6口作为 LCD的控制口,P3.2、P3.3、P2.0、P2.2口外接两个按键K1、K2、K3、K4构成键盘电路。

2.3 电子时钟的原理

一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“时计数器”采用24进制计时器,可实现对一天24小时的累计。电子时钟由89C52,1601液晶等构成,采用晶振电路作为驱动电路。电路中唯一的一个控制键K1进入中断模式的功能;再按下K3设置键,依次可以实现对闹钟开关,时间的时、分、秒,闹钟设定的时、分、秒位置的设定;再按下K4调节键可以实现对闹钟开关,时间的时、分、秒,闹钟设定的时、分、秒的加一调节。

2.4 键盘电路设计

该设计只用了一个键盘,但实现的功能却比较完善,减少了硬件资源的损耗,该键盘可以实现小时和分钟的调节以及控制是否进入省电模式。当按键按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一,达到时间调节的目的。

具体按键扫描模块代码如下:

unsigned char scan_key()

{skey=0x00; skey|=PRE; skey=skey<<1;skey|=SET; return skey;}

void int0()interrupt0

{TR0=0; IE=0; lcd_wcmd(0x0e);alarm=1;

update_disbuf(0x50,"alarm:",armhour,armmin,armsec);

pro_display();lcd_pos(0x07);flag=0;vkey=0x03;

while(flag^0x07){skey=scan_key();if(skey^vkey){delay(10);skey=scan_key();if(skey^vkey){vkey=skey;if(skey==0x01){flag++;switch(flag){flag++;case1:lcd_pos(0x41);breakcase2:lcd_pos(0x44);break;case 3:lcd_pos(0x47);break;case4:update_disbuf(0x50,"time:",hour,min,sec);pro_display();lcd_pos(0x41);break;case5:lcd_pos(0x44);break;case 6:lcd_pos(0x47);break;default:break;}}if(skey==0x02){pro_key();}}}lcd_wcmd(0x0c);lcd_wcmd(0x01);IE=0x8f;TR0=1; }

键扫描程序说明:开始,进行按键判断是否有键按下,是的情况下,延时一段时间,继续判断此按键是否按下,是的话,保存键值及相应处理程序,结束。

通过应用KeiluVision3设计完成软件编写调试,就可以实现89c52驱动LCD 1601A电子钟的软件设计部分,并生成hex文件。再用usb转ttl数据线把程序写到89C51,使其具有显示、调节、闹钟等功能。如进入调整状态,按K1键进入。在此状态下,按K3、K4键均有效。如按下K3键,调整要调节的数字的位置状态;按下K4键,则一次分别对闹钟开关,及闹钟时、分、秒,时间时、分、秒加一,再按K3退出调整状态,进入运行状态。

由于时间是通过软件来编写,单片机运行来控制的,而不是硬件控制的,在精度方面受单片机性能和程序的限制,故精度和效率可能不是太精确,不能和专由硬件控制的单片机电子时钟相比,在这方面存在不足。

[1]吴金戎,沈庆阳,郭庭吉.8051单片机实践与应用[M].北京:清华大学出版社,2002.

[2]郭天祥.新概念51单片机C语言教程——入门,提高,开发,拓展全攻略[M].北京:电子工业出版社,2009.

[3]韩广兴.电子元器件与实用电路基础[M].北京:电子工业出版社,2005.

[4]戴胜华.单片机原理与应用[M].北京:北京交通大学出出版社,2005.

猜你喜欢

计数器闹钟按键
多彩创意闹钟
采用虚拟计数器的电子式膜式燃气表
基于有限状态机的按键检测程序设计
关于74LS90计数器的Multisim仿真分析
天然闹钟
小闹钟的提醒
能帮我设个闹钟不等四则
按键消抖在单片机和FPGA实验教学中的应用
一种多方向导光按键结构设计
算盘是个“小气鬼”