初学单片机,都会接触到用单片机实现电子钟的功能,本文主要介绍如何用AT89C2051单片机实现多功能电子钟,为初学者提供一个参考!单片机也可选择STC89C2051单片机,此单片机与AT89C2051兼容,但程序下载要简单一些。
一、电路功能
本时钟电路采用24小时制,使用四位LED数码管显示时问,DO、Dl两位数码管显示分钟,D2、D3两位数码管显示小时。电路利用D2,D3两数码管的小数点位做秒闪烁。
本电路只有两个操作键S1、S2。S2键为设置按键,每按一下,实现功能切换。S1键为加1键,仅在设置模式时,S1键有效,此键具有连击功能。当按键时问超过1s后能实现自动连加。
电路具有设置时间分钟模式,设置时间小时模式,设置闹钟分钟模式,设置闹钟小时模式,走时等五个模式。不同的模式采用数码管闪烁来区分:正常走时显示,D2、D3两位数码管的小数点闪烁;在设置时间分钟模式和设置小时模式时,相应的数码管不带小数点以0,5s的速度闪烁;在设置时问分钟模式和设置闹钟小时模式时,相应的数码管带小数点以0.5s的速度闪烁。
电路不仅具有时钟显示功能,还具有整点报时和闹钟功能。每到一个整点时间,蜂鸣器以1Hz频率报时,几点响几声。如:中午12点,蜂鸣器响12声。当走时到了设定的闹钟时间,蜂鸣器以0.5Hz频率报警,蜂鸣器响24声停止。
二、电路原理
本电路采用AT89C2051单片机设计硬件电路如图1所示。AT89C2051具有2k字节闪速可编程可擦除只读存储器(FLASH EEPROM)和128bytes的随机存取数据存储器(RAM),可重复擦写10000次,数据保存时间10年,工作电压范围:2.7V~6V,工作频率:0~24MHz,15根可编程I/0引线,2个16位定时器/计数器,一个5向量两级中断结构,—个全双工串行口,一个精密模拟比较器,两级程序加密,输出口可直接驱动LED显示,低功耗的闲置和调电保护工作方式,以及片内振荡器和时钟电路。本电路的设计,充分利用了单片机的硬件资源,结构简单。
AT89C2051单片机端口设置:Pl口分别接数码管的段码口(a~h);P3.0、P3.1、P3.2、P3.3、分别接LED数码管的位驱动;P3.4接按键51,P3.5接按键52;P3,7驱动蜂鸣器。C3、R15构成上电复位电路。Q1~Q4为数码管显示驱动三极管。电路中没有画出电源部分,电路中的电源可以利用手机万用充电器作为本电路的供电部分。
图1 采用89C2051单片机设计硬件电路
三、程序设计
主程序流程图如图2所示,编程采用C语言编写。
图2 流程图
程序由主程序、定时中断子程序,键盘子程序组成。定时中断子程序要产生Imo日刂钟标志位,用于数码管扫描髋示;20ms时钟标志位,用于键盘扫描、消抖;0,5s的时钟佶号,用于闹钟报瞥;1s时钟标志位,用于时间更新;1s的时钟信号,用于整点报时;及报骛时更新蜂鸣器鸣响次数,以下是该电子钟的部分程序。
主程序如下:
四、安装和调试
PCB板大小为68mm×78mm,采用单面板设计,细线为顶层跳线,D2数码管应当反装,以使小数点位和前一位小数点位交叉。安装时请先按照先低后高的原则,首先安装顶层跳线,数码管安装高度要适当高于三极管和集成电路,以便于加装外壳。测试前用编程器将C程序编译成目标文件即(hex文件),用专用的编程器写人89C2051中。单片机安装在DIP20的脚插座上。