当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]基于ARM9的带农历实时时钟LCD显示设计

摘要:以ARM9处理器S3C2440和液晶显示屏WXCAT35为基础,设计实现了带农历的实时时钟显示电路。通过串口与S3C2440通信,实现更改时间和设置报警时间的功能,应用公历转换为农历的算法,实现实时时钟和农历在液晶显示屏上的显示。
关键词:ARM9;实时时钟;农历;LCD

    S3C2440A是Samsung公司为手持设备应用提供的低功耗、高性价比芯片。S3C2440A基于ARM920T内核,并在ARM920T内核基本功能的基础上集成了丰富的外围功能模块,如UART、RTC、LCD控制器等外围器件,从而降低了嵌入式应用系统的成本。本文采用S3C2440A和WXCAT35液晶显示屏模块,搭建以两者为基础的嵌入式液晶系统工作平台。在此平台基础上,详细讨论带农历的实时时钟在液晶显示屏上的显示以及更改时间和设置报警时间的方法,并给出了具体的实现程序。

1 系统硬件设计
1.1 实时时钟(RTC)模块
    S3C2440A集成了具有日历功能的RTC模块,它可以在系统关闭的情况下使用备用电池工作。RTC使用STRB/LDRB ARM操作传输二进制编码的十进制数(BCD)的8位数据给CPU。数据包括年、月、日、星期、小时、分钟、秒的时间信息。此外,RTC模块还可以实现报警功能。RTC模块采用32.768 kHz的外部晶体振荡器,外部晶体振荡器与S3C2440A的连接如图1所示。XTIrtc和XTOrtc分别是RTC的32.768 kHz晶体振荡器输入和输出,2个22 pF电容是晶体振荡器的匹配电容,只有在外部所接电容为匹配电容的情况下,晶体振荡器频率才能保证在标称频率附近的误差范围内。


1.2 通用异步接收传输(UART)模块
    S3C2440A的UART提供了3个独立的异步串行I/O端口,每个端口都可以在中断模式或者DMA模式下操作。UART使用系统时钟可以支持最高
115.2 kb·s-1的速率。在对UART进行操作时,数据接收帧和发送帧的格式都是可编程的,它包含1个开始位,5~8个数据位,1个可选的奇偶位和1或2个停止位,这些都是通过线性控制器(ULCONn)设置。本文采用UART更改时间和设置报警时间,串口通信连接图如图2所示。

[!--empirenews.page--]
1.3 LCD显示模块
    S3C2440A的LCD控制器的作用是将LCD图像数据从系统存储器中的视频缓冲区传送到外部LCD驱动器。LCD控制可以通过编程实现屏幕的不同要求,比如:水平和垂直像素的数量、接口时钟、刷新率等。S3C2440A与WXCAT35液晶显示屏模块的连接电路如图3所示。


    图中LCD控制器接口信号的意义:
    VFRAME:LCD控制器与LCD驱动器之间的帧同步信号,它通知LCD屏新一帧的显示,LCD控制器在一个完整帧的显示后发出VFRAME信号,开始新一帧显示。
    VLINE:LCD控制器与LCD驱动器之间的同步脉冲信号,LCD驱动器通过它来将水平移位寄存器的内容显示到LCD屏上。
    VCLK:LCD控制器与LCD驱动器之间的像素时钟信号。
    VM:LCD驱动器所使用的交流信号。LCD驱动器使用VM信号改变用于打开或者关闭像素的行和列电压的极性,从而控制像素点的显示或熄灭。
    VD0~VD23:LCD像素数据输出端口。

2 软件设计
2.1 读写RTC操作
    S3C2440内部集成了RTC模块,其内部的寄存器 BCDSEC,BCDMIN,BCDHOUR,BCDDAY,BCDDATE,BCDMON和BCDYEAR分别存储了当前的秒,分,小时,星期,日,月和年,表示时间的数值都是BCD码。这些寄存器的内容可读可写。在进行读写操作时,必须将RTC控制寄存器RTCCON的第0位置1 。实现读写功能的程序如下。
    [!--empirenews.page--]
2.2 更改时间和设置报警时间
    采用S3C2440A的UART,在PC机上实现对实时时钟的更改和设置报警时间。其通讯协议为:当从PC机上发送0xaa时,分别将年、月、日、星期、小时、分和秒写到实时时钟数据寄存器中。当S3C2440A接收到数据后发送0xaa以示确认,调用前面的写操作函数,从而实现对实时时钟的更改;当从PC机上发送0xbb时,分别将预置的报警时间ALMYEAR(年)、ALMMON(月)、ALMDATE(日)、ALMHOUR(小时)、ALMMIN(分)和ALMSEC(秒)写到报警时间数据寄存器中,当S3C2440A接收到数据后发送0xbb以示确认,调用设置报警时间设置函数,从而实现对报警时间的设置。通过设置报警控制寄存器RTCALM,即可实现报警,程序流程图如图4所示。


2.3 农历显示设计
    S3C2440的实时时钟模块没有提供农历的时间信息,因此采用公历转农历的方式,实现对农历的显示。公历转换为农历的算法是:首先建立公历年对应的农历数据,并将其存放入数组中,然后通过查表的方式实现公历与农历的转换。
    建立公历年对应的农历数据,每年用3个字节表示。
    公历年对应的农历数据的第1 Byte的高4位表示农历闰年月份,低4位表示农历1~4月的大小,其具体含义如表1所示。第2 Byte表示农历5~12月的大小,其具体含义如表2所示。第3 Byte的最高位表示农历第13个月的大小,第7位和第6位表示春节所在的公历月份,低5位表示春节所在的公历日期,其具体含义如表3所示。

[!--empirenews.page--]
    以2010年为例,农历无闰月,农历1月和3月是大月,2月和4月是小月,故而第1 Byte为00001010(即0x0A);农历的5月、8月、10月和12月是大月,6月、7月、9月和11月是小月,故而第2 Byte为10010101(即0x95);由于2010年的农历没有闰月,所以也就没有第13个月,故而第3Byte的第7位为0,2010年春节所在的公历2月14日,故而第3 Byte的第6~0位为1001110,即第3 Byte为0x4E。
    公历转农历的算法框图如图5所示。


2.4 实时时钟的显示
    通过调用字符显示函数,将读取的实时时钟显示在LCD屏幕上。本文将要显示的实时时钟字符转换成字模,把所得的字模放在数组中,读取实时时钟寄存器,调用字符显示函数显示数字和汉字,从而将实时时钟显示在LCD屏幕上。最后显示效果图如图6所示。



3 结束语
    设计了基于Samsung公司ARM9处理器S3C2440和液晶显示屏WXCAT35的带农历实时时钟显示电路。为了能够实现RTC的实时显示,采用S3C2440A中提供的RTC时间节拍中断,让它每秒钟中断一次,每次中断读取时间,刷新一次实时时钟。此外,在通过UART对RTC进行修改后,采用外部按键中断实现对实时时钟的更新,从而完成对时间的修改。设计通过软件形式使得不带农历实时时钟芯片能够实现对农历的显示,增强了芯片的应用范围,为在需要农历时钟作为参考的工作环境提供了便利。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭