摘要:AVR" title="AVR">AVR系列ATmega128L" title="ATmega128L">ATmega128L单片机作为主控芯片,该芯片可通过ISP接口方便地对其内建Flash进行擦除和写入操作;采用 DALLAS公司的具有涓细电流充电功能的低功耗的DS1302作为实时时钟芯片,该芯片可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且其使用寿命长,误差小;采用DS18B20获得当前环境温度;采用128×64像素的LCD用汉字直观显示年月日、时分秒、农历、生肖、室温等丰富内容;采用四颗独立式按键可修改当前时间和设定闹铃时间;采用ISDN110语音模块和蜂鸣器实现音乐提示定时闹铃;通过农历算法,可将公历日期转换为农历年月日并可获取天干地支纪年、生肖、节气等相关农历信息。
关键词:DS1302;DS18B20;单片机;LCD;农历算法
0 引言
随着信息技术的发展和生活水平的提高电子万年历正逐步走进人民大众的生活,其因寿命长、误差小而且用汉字直观显示年月日、时分秒、农历、生肖、室温等丰富的内容。
1 设计要求与采用方案
1.1 系统实现功能
(1)基本功能:a.LCD汉字显示年月日、时分秒、星期;b.LCD汉字显示天干地支纪年、农历日期、24节气,12生肖;c.LCD显示室温;d.整点蜂鸣器报时,定时闹铃时间到则蜂鸣器提示;e.通过4个按键,用来设置时间和进行定时设置。
(2)创新设计:a.采用128×64的LCD显示万年历内容;b.采用ISD111O语音模块播放闹铃铃声。
1.2 系统基本方案选择
1.2.1 单片机
系统的单片机采用高性能、低功耗的AVRATmegal28L微控制器。系统利用4个外部中断接4个独立式按键来进行参数、功能的设置,蜂鸣器用来整点提示和闹铃提示。程序下载可通过预留ISP接口方便地对系统软件进行升级、添加或裁剪系统功能。
1.2.2 显示模块
液晶显示模块是128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置国标GB2312码简体中文字库(16×16点阵)、128个字符 (8×16点阵)及64×256点阵显示RAM(GDRAM)。可与单片机直接接口,提供两种接口来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。
1.2.3 时钟芯片
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA。
1.2.4 温度传感器
采用数字式温度传感器DS18B20,其仅需一条数据线进行数据传输,易于与单片机连接,可以去除A/D漠块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
2 系统的硬件设计与实现
2.1 系统硬件设计框图
2.2 系统硬件概述
本电路由AVR ATmegal28L单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与单片机进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM 寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能,本设计中为DS1302增加了备用电池,当主电源掉电时,备用电池自动为其供电;温度的采集由DS18B20构成;显示部份由128×64点阵的汉字图形型LCD模块来完成显示功能;当闹铃时间到时,通过ISD111O语音录放模块播放闹铃铃声。系统硬件实物图见图2。
2.3 主要单元电路的设计
2.3.1 单片机主控制模块的设计
AVR ATmegal28L单片机为64引脚TQFP封装,系统的ISP下载接口、晶振电路、复位电路、蜂鸣器电路如图3所示。
2.3.2 时钟电路模块的设计
图4为DS1302的引脚排列,其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或 Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768 kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc大于等于2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平,I/O为串行数据输入端(双向)。SCLK始终是输入端。
2.3.3 温度采集模块设计
如图5所示。采用数字式温度传感器DS18B20,它具有测量精度高,电路连接简单的特点,此类传感器仅需要一条数据线进行数据传输,使用PC7与DS18B20的I/O口连接加一个上拉电阻,VCC接电源,VSS接地。
2.3.4 显示模块的设计
设计采用128×64汉字图形显示LCD模块,一屏可显示32个汉字(16×16点阵字库),其接口如图6所示。
2.3.5 语音录放模块
设计采用ISD1110语音芯片配合相应的外围元件构成语音录放电路,用来实现语音提示功能,其电路如图7所示。
2.3.6 系统PCB图
系统PCB如图8所示。
3 系统的软件设计
3.1 程序流程框图
设计主程序流程图如图9所示。
3.2 设计实现界面
3.2.1 万年历主界面
如图10所示,第一行显示公历的年月日,第二行显示时分秒和星期,第三行显示农历的天干地支纪年和农历月日,第四行显示农历生肖、节气以及当前的气温。
3.2.2 日期时间设置界面
日期时间设置界面如图11所示。
3.2.3 闹铃设置界面
闹铃设置界面如图12所示。
4 结论
本文所介绍的万年历的设计方案已经调试成功,其功能全部实现,本产品成本低、寿命长、误差小、功能齐全,达到设计要求。