基于ARM9的带农历实时时钟LCD显示设计
2.2 更改时间和设置报警时间
采用S3C2440A的UART,在PC机上实现对实时时钟的更改和设置报警时间。其通讯协议为:当从PC机上发送0xaa时,分别将年、月、日、星期、小时、分和秒写到实时时钟数据寄存器中。当S3C2440A接收到数据后发送0xaa以示确认,调用前面的写操作函数,从而实现对实时时钟的更改;当从PC机上发送0xbb时,分别将预置的报警时间ALMYEAR(年)、ALMMON(月)、ALMDATE(日)、ALMHOUR(小时)、ALMMIN(分)和ALMSEC(秒)写到报警时间数据寄存器中,当S3C2440A接收到数据后发送0xbb以示确认,调用设置报警时间设置函数,从而实现对报警时间的设置。通过设置报警控制寄存器RTCALM,即可实现报警,程序流程图如图4所示。本文引用地址:https://www.eepw.com.cn/article/150711.htm
2.3 农历显示设计
S3C2440的实时时钟模块没有提供农历的时间信息,因此采用公历转农历的方式,实现对农历的显示。公历转换为农历的算法是:首先建立公历年对应的农历数据,并将其存放入数组中,然后通过查表的方式实现公历与农历的转换。
建立公历年对应的农历数据,每年用3个字节表示。
公历年对应的农历数据的第1 Byte的高4位表示农历闰年月份,低4位表示农历1~4月的大小,其具体含义如表1所示。第2 Byte表示农历5~12月的大小,其具体含义如表2所示。第3 Byte的最高位表示农历第13个月的大小,第7位和第6位表示春节所在的公历月份,低5位表示春节所在的公历日期,其具体含义如表3所示。
led显示器相关文章:led显示器原理
评论