APP下载

基于AT89S52单片机的电子万年历设计与实现

2014-10-27李杨

无线互联科技 2014年9期

李杨

摘 要:本设计以AT89S52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片和24C02FLASH存储器,显示阳历年、月、日、星期、时、分、秒和阴历年、月、日,在显示阴历时间时,能标明是否闰月,同时完成对它们的自动调整和掉电保护,全部信息用液晶显示。人机接口由三个按键来实现,用这三个按键对时间、日期可调,并可对闹铃开关进行设置。软件控制程序实现所有的功能。整机电路使用+5V稳压电源,可稳定工作。

关键词:AT89S52;DS1302;HD61202;HY12864

1 引言

在日新月异的21世纪里,家用电子产品得到了迅速发展。许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有CPU控制器或者是单片机。本文设计的电子万年历属于小型智能家用电子产品。本设计基于AT89S52单片机、DS1302时钟芯片、24C02FLASH存储器和HY-12864液晶显示器等主要芯片,显示阳历年、月、日、星期、时、分、秒和阴历年、月、日,在显示阴历时间时,能标明是否闰月,同时完成对它们的自动调整和掉电保护,全部信息用液晶显示。

2 系统总体设计

本设计以AT89S52单片机为核心,构成单片机控制电路,结合DS1302时钟芯片和24C02FLASH存储器,显示阳历年、月、日、星期、时、分、秒和阴历年、月、日,在显示阴历时间时,能标明是否闰月,同时完成对它们的自动调整和掉电保护,全部信息用液晶显示。人机接口由三个按键来实现,用这三个按键对时间、日期可调,并可对闹铃开关进行设置。

按照系统设计功能的要求,确定设计系统由主控模块、时钟模块、存储模块、键盘接口模块、显示模块和闹铃模块共6个模块组成。基于以上分析,系统设计框架如下所示。

3 系统硬件设计

根据系统设计的总体要求,本系统的硬件组成部分包括控制芯片,时钟电路,存储电路,键扫描电路,液晶显示,闹铃电路6个部分。

3.1 器件选择

考虑到体积、成本、市场等一系列因素,控制芯片最终选用STC89C52RC。其为增强型的8位8051单片机,有8KB的可反复擦写EEPROM和512字节的RAM,无需外扩,代码改写方便,满足系统软件设计要求;有内置“看门狗”电路,3个16位定时/计数器,4个外部中断,满足系统硬件设计要求。

时钟电路采用DS1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,可以免了连续记录的大工作量,也避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来方便。

显示器部分是由HD61202液晶显示控制驱动器和HY12864液晶显示器组成的。HD61202液晶显示控制驱动器是一种带有驱动输出的图形液晶显示控制器,它可直接与8位微处理器相连,它可与HD61203配合对液晶屏进行行、列驱动;HY-12864是使用HD61202作为列驱动器,同时使用HD61203作为行驱动器的液晶模块。

3.2 系统原理图

4 系统软件设计

4.1 阳历程序的设计

因为使用了时钟芯片DS1302,陽历程序可以从DS1302各寄存器中读出年、周、月、日、[小]时、分、秒等数据,再处理即可。在首次对DS1302进行操作之前,必须进行初始化,然后从DS1302中读出数据,再经过处理,送给显示缓冲单元。阳历程序流程图见图3所示。

4.2 时间调整程序设计

调整时间用三个调整按钮,一个作为移位、控制用,一个作为加用,一个作为退出调整和闹铃开关用。分别定义为控制按钮、加按钮、退出按钮。在调整时间过程中,要调整的位与别的位应该有区别,所以增加了闪烁功能,即调整的位一直在闪烁,直到调整下一位。闪烁原理就是,让要调整的一位每隔一定的时间熄灭一次,例如间隔时间为50ms。利用定时器计时,当达到50ms溢出时,就送给该位熄灭符,在下一次溢出时,再送正常显示的值,不断交替,直到调整该位结束。此时送正常显示值给该位,再进入下一位调整闪烁程序。时间调整程序流程图如图4所示。

4.3 阴历阳历程序设计

阴历程序的实现是要靠阳历日期来推算的。推算方法是,根据阳历当前日期在一年中的天数来计算阴历日期。阳历一个月不是30天就是31天(2月除外,闰年2月为29天,平年2月为28天)。阴历一年有12个月或13个月(含闰月),一个月为30天或29天。如果把一个只有29天的月称为小月,用1为标志,把30天的月称为大月,用0为标志,那么12位二进制就能表示一年12个月的大小。如果有闰月,则把闰月的月份作为一个字节的高4位,低4位表示闰月大小,大月为0,小月为1,这样一个字节就包括了所有闰月的信息。阴历春节和阳历元旦相差的天数也用一个字节表示。总共用4字节就可以存储一年中任何一天阳历和阴历的对应关系的有关数据,例如2004年的阴历和阳历对应关系如图5所示。

2004年的春节和元旦差21天,这样2004年的信息表示为:21,42H,52H,21H。其中表示12个月大小信息的字节,第4位和第7位不用,第1个字节为十进制,其它的都为十六进制。按此方法,50年的阳历和阴历对应关系表总共使用200字节。图6为计算阳历中任何一天在该年中为第几天的程序流程图。

计算出阳历总天数后,就可以根据它来推算阴历日期。推算方法是,先用总天数减去春节和元旦的日差,如果结果为1,则该天正好是春节(因为春节在元旦之后,在计算春节和元旦的日差时,假设元旦为0天,春节为n天,则日差为n。而前面计算的阳历总天数是该天在该年中的第几天,是以元旦为1而得到的,与计算春节和元旦日差的这样方法相比,其数值少了1,所以要在原来本应该以0作为该天就是春节的依据的基础上加1,所以以1作为该天是春节的标志);如果结果小于1,则阴历应该是阳历的前一年;如果结果大于1,说明阳历和阴历为同一年。再根据查表所得的该年的阴历的闰年和大小月的信息,就可以推算出该天的阴历日期了。图5-4为由总天数推算出阴历日期的程序流程图。

5 系统运行结果及评估

设计完成后,给系统上电,液晶显示屏显示结果如图8所示。

调节10K电位器R4可调整液晶显示屏的亮度。调整到合适亮度后,按控制按钮,光标会从阳历年位开始闪烁,进入设定调整状态。此时按加按钮,当前数字就可改变。按一次,数字加1;若长按,则数字连续加。此时,调整的位一直在闪烁,直到再次按光标移动控制位,光标跳到下一位闪烁。调整顺序依次为:阳历年、月、日,阴历年、月、日,時、分、秒,闹铃时、分。当全部参数调整完毕后,按退出按钮,光标停止闪烁,退出设定调整状态;当再次按下此按钮,闹铃显示“开”;当第三次按下此键,闹铃显示“关”。若当前月为闰月,则屏幕左下角会显示“闰月”;若不是闰月,则无显示。

调试分为硬件调试和软件调试。硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。DS1302的硬件电路很简单,只通过3根线与单片机相连,很容易检测,主要是检查其引脚,如晶振和电源等是否接好。另外可以通过软件来调试硬件,如为了测试显示电路连接是否正确,可以编写一个简单的显示程序来测试它。接下来可进行软件调试,可以编写只含DS1302的计时和读写程序、显示程序,测试DS1302是否正常工作。最后调试时间调整程序和阴历推算程序。

6 结论

本设计硬件电路较简单,所用器件较少,电路中使用了AT89S52单片机、DS1302时钟芯片、24C02FLASH存储器和HY-12864液晶显示器等主要芯片,实现了预计功能。

在对芯片的管脚功能和用法有充分的了解后,根据设计要求设计硬件电路,包括单片机控制电路、时钟电路、存储电路、键盘扫描电路、显示电路和闹铃电路。然后通过软件编程,实现了对年、月、日、时、分、秒、星期、闰年和阴历的自动调整,用按键进行控制,用液晶模块进行显示,并具有闹铃功能。

电子万年历可以正常显示时间并进行时间调整,完成了预期要实现的目标。可以作为以后家用或者商用的产品,有很好的应用前景。

[参考文献]

[1]吴金戌,沈庆阳.8051单片机实践与应用.北京:清华大学出版社,2003.12,26-38.

[2]何立民.单片机应用文集.北京:北京航空航天大学出版社,1991,53-72.

[3]公茂法.单片机人机接口实例集.北京:北京航空航天大学出版社,1998.2,32-59.

[4]何立明.单片机高级教程——应用与设计.北京:北京航天航空大学出版社,2000.4,149-173.

[5]李广弟,朱月秀.单片机基础.北京:北京航空航天大学出版社,2001.8,36-85.

[6]楼然苗,李光飞.MCS-51系列单片机设计实例,北京:北京航天航空大学出版社,2001.3,75-83.