目前市售的电子日历品种较多,一般只能显示时间信息,功能单一。笔者根据学校特点,设 计了一款适于学校使用的电子日历,该电子日历采用几种新型芯片,利用单片机技术,做到 了功能多、显示全、成本低,并有掉电保持功能,非常适于学校各部门的使用,是传统钟表 的升级换代产品。
1功能介绍
电子日历面板如图1所示。该电子日历可显示年、月、日、星期、时、分的时间信息以及温 度值。另外,还能显示校历周数,重大节庆日的倒计时天数。此功能是区别于其 他电子日历的特点所在。为设定初值,电子日历设有三个按键,采用循环设定方式。过程如 下:按设定键,首先进入校历周数初值设定,按增/减键,可选择校历周数的2位十进制初值 ;再按设定键,进入节庆日倒计时时间初值设定,可选择3位十进制初值;第三、四次按设 定键,结合增/减键,分别用于设定节庆日2个汉字的显示设定,如“校庆”、“评估”等; 再按设定键,则调整表的时间显示。全部设定过程完毕,进入正常走时状态。由于本系统有 掉电保护功能,停电时,无显示,但能正常走时和计数。来电时,正常显示,不需重新设定 初值,使用方便。
2硬件设计
2.1系统电路
系统电路简图如图2所示。整个系统采用AT89C52作为中央处理芯片,用于数据处理,初值设 定,显示控制等。日历芯片采用DS12C887,温度传感器芯片采用DS18B20。采用可编程接口 芯片81C55扩展接口,81C55的PA口用于输出段码,利用三态总线驱动器74LS244增加驱动能 力,PB口低4位接4-16译码器CD4045,作为时间温度显示的位控信号,通过三极管控制LED 显示器的共阴极端。PB口的高4位同样外接译码器,作为汉字显示的位控信号,整个系统采 用动态显示方式。
2.2时钟芯片
DS12C887是跨越2000年的时钟芯片,他将晶体振荡电路、充电电路和可充电锂电池等一起封 装在芯片的上方,组成一个加厚的集成电路模块。电路通电时其充电电路便自动对可充电电 池充电,充足一次电可供芯片运行半年,正常工作时可保证时钟数据10年内不会丢失。另外 ,他的114 B的非易失性静态RAM可供用户使用,可在主机掉电时保存一些重要的数据[ 1]。
在本系统中,将校历周数、节庆日汉字代码、天数等信息保存在其中,使本系统 有掉电保持功能。使用此芯片首先要对其进行初始化,为芯片内部寄存器设立标 志位并赋初值,同时加载时钟计数初值。初始化完成后,即可以从该芯片中读取时间。该芯 片的口地址为0BF00H~0BF09H,分别是DS12C887的年、月、日、星期以及时间等的时标寄 存器。通过相应口地址将实时时间值读出后,经过处理得到段码,存入相应显示缓冲单元, 供显示子程序调用,即实现了时钟显示功能。
2.3温度转换
DS18B20是单总线温度传感器,与单片机通信只要一根I/O线,因而使用方便[2]。
本系统利用P10口作为I/O口线直接读取温度值。这种方式比其他温度传感器省去了信 号调理、标度转换、A/D转换等前向通道电路,使电路简化,编程容易;另外他采用低电压 供电,测温范围为-55~+125 ℃,在—10~+85 ℃范围内误差为0.5 ℃,这些特点满 足在测量室温方面的要求。
2.4汉字显示原理
节庆日的每个汉字分别由4个8×8 LED点矩阵显示器组成[3],以“庆”为例,说明 其显示原理:其点阵如图3所示,根据点阵图,每个汉字由16行16列点阵组成,将每列 分成2个8位段码,因而1个汉字由32个段码组成,“庆”字的段码如图所示。显示时,每列 的2个段码分2次送出,而对应这2次扫描的同一列的位控信号不变,因而完成1个汉字的显 示需要32次扫描过程。编程时,将常用的汉字的段码以表的形式存于ROM中,设定时用查表 指令取出段码,然后将段码再存到DS12C887的RAM中,以实现断电保持。
3软件设计
程序设计可采用汇编语言或C语言编程,主程序流程如图4所示。在主程序中,主要实现初 始化,按键处理,时间、温度信息的采集和显示段码的形成以及汉字段码的存取。当日时标 变化时,应将节庆日倒计时天数减1;星期时标为星期一时,应将校历周数加1。当有键按下 时,进入按键处理程序,分别设定校历周数、节庆日的汉字、倒计时时间等。采用动态 显示方式,即在T0定时中断程序中,每次从显示缓冲区中取出一个段码由81C55的PA口送出 ,相应位控码由81C55的PB送出,轮流显示。按键处理、T0定时中断子程序流程图从略。
4结语
本电子日历技术新,成本低,适于产品化以及批量生产。另外,本系统也可以由学生开发设 计,以提高学生的动手能力、理论联系实际以及分析和解决实际问题的能力。在本系统基础 上,可以由学生进一步开发新的功能,例如时钟芯片DS12C887的闹钟功能,汉字显示内容的 增加及定时显示等。因而本系统也是相关课程或毕业设计的一个很好的设计题目。