APP下载

基于AT89S52数字钟的设计与制作

2015-08-19王少炯

山东工业技术 2015年16期

王少炯

摘 要:采用纯数字集成电路设计制作数字钟电路较复杂,而单片机数字钟只用了较简单的硬件,通过编写C程序可实现完善的功能。

关键词:数字钟;AT89S52;C程序、

0 前言

在以前很多杂志上都介绍了数字钟的制作,其电路或者较为复杂,或者所选的单片机很多编程器不支持,不便于初学者自制。本文设计的数字钟具有电路简单、成本低(全部元件近30元)、元件易购、功能全、走时精度高的特点,很适合万能实验板自制。

1 硬件系统设计:

(1)元件清单:

(2)电路原理图如图1。

本数字数字钟采用ATMEL公司的AT89S52为主芯片。

AT89S52为40脚双列直插封装的单片机,与MCS-51单片机产品兼容,8K字节在系统可编程Flash存储器,1000次擦写周期,32个可编程I/O口线,三个16位定时器/计数器,八个中断源,支持ISP,是单片机初学者首选芯片。

为了简化电路安装,数码管分别采用1位(显示星期,也可以采用2位代替),2位(显示时、分、月、日),4位(显示年)共阳极数码管,引脚功能见图,需要注意的是,不同厂家的数码管的引脚可能不同,可用万用表或电池进行测试。

驱动三极管采用1N5401,也可采用2SC1015等小功率PNP型三极管,但要注意脚位。

功能按钮采用微动开关,S1为位选择,接于P3.2口, S2为增1,接于P3.3口,S3为减1,接于P3.4口。按一次S1按钮,分位闪烁,再按一次,依次为时、星期、日、月、年位闪烁,此时,按S2,或S3按钮,选定位加一或减一,达到调整时钟的目的。在年位闪烁时,再按一次S1,返回正常计时状态。由于P3口内有上拉电阻,所以外部无需上拉电阻。

复位电路,只要求持续2个机器周期,R*C>2us,即可对单片机进行复位。S4为复位按钮,可对数字钟进行初始化复位。

AT89S52 40脚接+5V,20脚接地,31脚为EA/VPP,访问外部程序存储器控制信号。为使能从0000H 到FFFFH的外部程序存储器读取指令,EA必须接GND。为了执行内部程序指令,EA应该接VCC。由于该数字钟的程序、数据都存储在AT89S52内部,所以31脚应接+5V。

18、19脚外接晶体振荡器,本电路采用12M晶振。

P0口分别接数码管a、b、c、d、e、f、g,从P0口输出数码。

P1口接年、月、日数码管阳极,P2口接时、分、星期数码管阳极,P3.0口接秒指示灯,当其为低电平时,发光二极管发光,反之熄灭,用以指示秒。

在设计数字钟过程中,为了调试方便,增加了ISP插座,本人使用的是伟纳ME300B编程器,该编程器使用10针ISP接口。对于其它编程器,只要将插针与AT89S52的6、7、8、9、+5v、地对应连接即可。

2 软件系统设计:

(1)软件流程图如图3。源程序见附件。

(2)软件采用C语言编写,原理如下:

1)进行按键扫描中,应去抖,再保存于变量中,确保按键操作的精度和可靠性。由于要对多个时间变量进行操作,设置了位选择功能,每按一次选择按钮,位选择变量加1,在后面的数码管扫描程序中,可根据位选择变量的值,就可对各个时间变量进行调整。在按键扫描过程中要先关中断,操作完后再开中断; 2)定时器0,用于动态扫描数码管,其定时时间不能太大,否则数码管会闪烁。同时在扫描过程中,要根据位选择变量的值确定哪位数码管闪烁,为0时不闪烁,工作于正常计时状态; 3)定时器1, 1/100秒触发一次,100次秒变量加1,60秒后分变量加1,60分后时变量加1,24时后日变量、周变量加1,根据月份,日变量满28,30,31后月变量加1,月变量满12后年变量加1。

3 注意事项:

(1)定时器初值如采用65536-10000=55536(十进制)转化为十六进制为D8F0,会出现走时不准确,本人采用KEIL进行仿真,确定赋值为D912时,走时最精确。

(2)本电路简单,可用万能板搭接,连接导线用漆包线。

(3)组装前先确定数码管、单片机芯片的位置,统筹布局,做到美观、合理,本人采用已坏的数字钟外壳,制作成数字钟见图5,图5。敷铜板面见图图6。

4 功能扩展

(1)在此基础上,再加入SD18B20,修改程序,可显示当前温度。

(2)在电源电路中接入6V蓄电池,保证停电也能正常工作,且能自动对电池充电。

(3)此电路中未加入农历功能,有兴趣的读者可在此基础上添加,如I/O口不够,可采用移位寄存器芯片74HC595进行扩展。

(4)若数字钟的走时精度不高,可更换5PPM精度较高的32768晶体振荡器。endprint