基于单片机的智能电子时钟设计
2015-03-05广州市番禺区职业技术学校姚国旺
广州市番禺区职业技术学校 姚国旺
基于单片机的智能电子时钟设计
广州市番禺区职业技术学校 姚国旺
【摘要】本文介绍了基于AT89S51单片机的多功能电子时钟的硬件结构和硬件、软件设计方法。本电子时钟具有时间、日历、环境温度显示和定时闹钟、时间校准等多种功能,使用AT89S51单片机、DS1302时钟芯片、LED数码管、DS18B20温度传感器等常见器件,具有电路简单、制作容易、成本低廉、时间和温度显示精度高等特点。
【关键词】智能电子时钟;AT89S51;硬件设计;软件设计
1 引言
随着微电子技术的高速发展,单片机芯片的微小体积和低廉成本,被广泛地应用到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具,基于单片机的多功能电子时钟也应运而生。单片机开发技术已成为电子、电气、通信、自动化、机电一体化等专业技术人员必须掌握的技术。
智能电子时钟主要依靠单片机技术将常见的电子元器件按照功能需求搭建相应的电路,实现实时显示时间、日历和环境温度等信息的电子产品。由于智能电子时钟精度高、运行可靠,目前已普遍应用在社会经济生活的各个领域,比如车站、商场、银行和普通家庭等,同时,智能电子时钟还具有较强的扩展性,可以根据用户的不同需求整合、集成其他功能,比如温度湿度检测监控、PM2.5空气质量检测、定时计数功能等,使得其应用更加广泛。
本文设计的智能电子时钟功能主要有时间、日期和温度显示功能,闹钟与延时功能,日间、日期调整与校对功能。DS1302时钟芯片采用双电源供电,使得产品断电后能够自动存储相关数据,避免了重新设置时间和日期数据的麻烦。
2 电子时钟的硬件设计
根据智能电子时钟的功能,其硬件电路应该包含单片机处理中心、时钟芯片DS1302电路、温度传感DS18B20电路、数码显示电路、闹钟电路、键盘输入电路和电源电路等几个模块,电子时钟的硬件电路框图如图1所示。
本智能电子时钟的核心部分为AT89S51单片机芯片,通过单片机的I/O端口连接时钟芯片DS1302、温度传感器DS18B20、键盘输入电路,采集时间、日期、温度和调整等数据信息,经过单片机适当转换与处理后,再通过数码管输出显示年、月、日、时、分、秒和温度等数据,同时,将闹钟数据输出到蜂鸣器电路进行警报闹钟。产品使用+5V直流电源供电,+3V直流电源作为DS1302时钟芯片的后备辅助电源。
图1 电子时钟电路框图
2.1 单片机处理电路
AT89S51单片机是一种常见的实现了ISP下载功能的8位单片机,具有低电压、低功耗、高性能的特点,有32个可编程的I/O口,4KB的片内程序存储器,128×8位内部RAM,1000次擦写循环,5个中断源,2个16位的定时/计数器,片内振荡器和时钟电路和看门狗电路,40引脚DIP封装,与MCS-51系列单片机的引脚和指令系统完全兼容。
2.2 时钟日历电路
电子时钟采用实时时钟日历芯片DS1302。DS1302的5脚(RST复位端)与单片机的1脚(P1.0)相连, 7脚(SCLK串行时钟端)与的单片机2脚(P1.1)相连,6脚(I/O数据端)与单片机的3脚(P1.2)相连,2脚(X1)和3脚(X2)两端连接频率为32.768KHz的晶体振荡器,为DS1302提供基准时钟,1脚(VCC2)连接+3V备用电源。正常情况下,DS1302芯片由+5V供电;掉电后,由备用电池供电。
2.3 环境温度采集电路
环境温度数据主要由DS18B20数字温度传感器采集与转换。DS18B20体积小、使用方便,测温范围-55℃~+125℃。本电路中,DS18B20的2脚通过4.7K的上拉电阻R6与单片机AT89S51的P3.3相连,1脚和3脚分别接电源地和+5V。
图2 数码显示电路
2.4 数码显示电路
采用7位8段共阴LED数码管实现时钟/日历/温度数字的显示,使用8位移位寄存器74LS164驱动数码显示,数据从单片机的P1.6输送到第一个芯片的1、2脚,后续各芯片的1、2脚与前一芯片的13脚相连;单片机的P1.7模拟输出时钟脉冲输送到各芯片的时钟端。电路如图2所示。
2.5 按键功能电路
设置5个按键,接在单片机的P2.1-P2.5脚,分别为功能键(实现时间/日期/温度/闹钟数据的循环切换显示)、设置键(进入时间/日期/温度/闹钟数据的设置)、加1键和减1键(实现数据的加减1操作)、闹钟开关键(开启或关闭闹钟)。
2.6 闹钟电路
由单片机P2.0脚控制,通过R7与PNP型三极管连接。若当前时刻与设定的闹钟时间相同,P2.0输出低电平,三极管导通,蜂鸣器发出声音。
3 电子时钟的软件设计
3.1 主程序设计
上电后,系统初始化的日期和时间为2015年6月1日00时00分00秒。LED数码显示初始时间“00:00:00”,并开始计时。程序正常运行后,单片机循环调用显示子程序和按键扫描子程序,在数据显示期间若按下按键,则调用相应的时间、日期、温度、闹钟等子功能处理程序,并送LED数码管实时显示。
3.2 子程序设计
3.2.1 显示子程序
结合显示模块的硬件电路,在编写显示子程序时,要将所需显示数据的二进制数码依次送入74LS164芯片的串行数据输入端,需要显示的数据主要有时间、日期和温度数据的实时值和调整值二大类,但由于输出的显示数据要根据按键功能的不同而变化,常规编程将变得复杂化。本设计中巧妙通过设置一个变量f_count来标记按键的功能,然后再根据f_count的不同数值调用相应的功能子程序,再通过设置标志位,根据标志位数值的不同数值来显示时间、日期和温度数据,从而使程序得到简化。显示子程序流程如图3所示。
图3 显示子程序流程图
3.2.2 键盘扫描子程序
采用显示数据完成输出后再扫描键盘状态的方式,根据键盘按下的情况对键盘参数key进行赋值,CPU通过判断key数值再调用相应的功能处理程序,若无按键,则置key值为0后返回主程序。
3.2.3 时钟日历子程序
主要是实现对DS1302时钟芯片的年、月、日、时、分、秒等寄存器数据的读写操作。首先要对DS1302进行初始化,写入时间、日期初始值开始计时,然后单片机采用串行通信的方式读取DS1302的时钟数据并送出显示。由于串行通信对时序有严格的要求,因此需要采用定时中断的方式产生标准的串行时钟脉冲,同时在通信过程中要关闭中断功能。
3.2.4 环境温度采集子程序
DS18B20是单线器件,要求有严格的时序来保证数据传输的完整,而AT89S51不支持单线传输,因此,需要采用软件的方法模拟单线的协议时序。
3.2.5 闹钟子程序
闹钟的设计思路是用当前时间数值与闹钟设定的时间数值相比较,若二者数值相等时则调用闹钟子程序,蜂鸣器响铃1分钟,在响铃过程中若按下贪睡键,则取消响铃,将闹钟数值增加5分钟,时间到则再次响铃,响铃完成后返回主程序。
4 电子时钟的调试与改进
智能电子时钟的调试过程主要有硬件调试和软件调试二部分,硬件调试又分为单片机最小系统、显示电路、时钟电路和按键电路等部分,软件调试主要有实时时钟日历子程序调试、环境温度采集子程序调试、按键子程序调试等部分。本人主要使用仿真软件protues按照功能需求设计硬件电路,使用keil进行软件编程,然后再将软件装载到protues设计的硬件电路中进行联调。
由于本智能电子时钟采用数码管串行静态显示,很大程度上节省了I/O口资源,也节省了成本,但体积不够精简,今后可进一步将数码显示改为液晶显示,既可以节省能源,又显得高档次;可进一步减少按键数量,实现一键多功能,若有条件可设计成触摸屏功能。
参考文献
[1]朱宏.单片机应用技术[M].高等教育出版社,2012.1.
[2]冯育长.单片机系统设计与实例分析[M].西安电子科技大学出版社,2007.5.
[3]戴佳,戴卫恒.51单片机C语言应用程序设计实例精讲[M].电子工业出版社,2006.4.