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所示。
[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 。实现读写功能的程序如下。
[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所示。
[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进行修改后,采用外部按键中断实现对实时时钟的更新,从而完成对时间的修改。设计通过软件形式使得不带农历实时时钟芯片能够实现对农历的显示,增强了芯片的应用范围,为在需要农历时钟作为参考的工作环境提供了便利。
关键字:ARM9 实时时钟 农历 LCD
引用地址:
基于ARM9的带农历实时时钟LCD显示设计
推荐阅读最新更新时间:2024-03-16 12:36
LCD1602控制总线模式
第一行显示"Welcome";第二行显示="Happy day";若要显示其他字符,请直接往数组 LCMLineOne 和LCMLineTwo 填充相应的代码。直接上图,仿真图如下: 源程序如下,可以对比时序方式,理解总线的操作方法。 #include reg51.h //#include absacc.h #define uchar unsigned char #define uint unsigned int #define busy 0x80 uchar xdata LCMWriteCOM _at_ 0x80ff; //写指令寄存器 uchar xdata LCMReadCOM _at_ 0xa0ff ; //读指
[单片机]
基于战舰V3的LCD显示实验详解和剖析
在这里,我们只剖析NT35510部分的代码。 LCD显示方向设置函数 代码示例 //设置LCD显示方向 //dir:0,竖屏;1,横屏 void LCD_Display_Dir(u8 dir) { if(dir==0) //竖屏 { lcddev.dir=0; //竖屏 if(lcddev.id==0x5510) { lcddev.wramcmd=0X2C00; lcddev.setxcmd=0X2A00; lcddev.setycmd=0X2B00; lcddev.width=480; lcddev
[单片机]
内置晶体的实时时钟模块:温度补偿带来卓越精度
实时时钟(Real Time Clock,RTC)是一种可独立完成计时或事件记录的功能的集成电路,通常称之为时钟芯片。目前几乎所有具备高级功能的电子产品都需要用到实时时钟。世强代理的 RX-8130CE是EPSON公司于近日新推出的一款嵌入32.768kHz晶振单元并拥有I2C总线接口的实时时钟模块。该时钟模块不但拥有时间计数器,能完成年、月、日、周、时、分、秒的计时功能还拥有时间报警器、间隔计时器和时间更新中断。该芯片拥有备用电池充电控制功能和供电引脚,能够支持各种供电电路。所有的这些功能都集成在3.2mm 2.5mm 1.0mm都微型陶瓷封装内,这使得其能够支持各种小型电子设备。 内置晶体结构,实现小型化及高可靠性
[模拟电子]
ARM9微控制器的软硬件平台设计
嵌入式应用系统设计包括硬件平台和软件平台两部分。前者是以嵌入式微控制器/微处理器为核心的硬件系统;后者则是围绕嵌入式操作系统构建的软件系统。两者在设计上是密不可分的,并且需要在设计之间进行权衡优化,根据实际应用进行外扩和裁剪。 基于ARM926EJS内核的LPC3180内部集成了丰富的外设资源,为嵌入式系统构建提供了很大的设计空间。本文结合笔者开发LPC3180嵌入式平台的实际经验,将具体介绍该系统的实现、结构组成和实验结果。 1 LPC3180芯片特性介绍 LPC3180是Philips公司新推出的一款ARM9微控制器。它采用90nm工艺技术,片内集成ARM9EJS处理器内核,具有高计算性能、低功耗的特性,这使得在很多对
[单片机]
京东方175亿元合肥投建内地首条六代线
9月12日消息,京东方科技集团12日晚间公告披露,其与安徽合肥地方政府及相关机构12日签署协议,双方共同投入人民币175亿元巨资,在合肥新建内地首条薄膜晶体管液晶显示器件(TFT-LCD)第6代线。 公告称,9月12日,京东方科技集团股份有限公司与合肥市人民政府、合肥鑫城国有资产经营有限公司、合肥市建设投资控股(集团)有限公司在合肥签署了《合肥薄膜晶体管液晶显示器件(TFT-LCD)六代线项目投资框架协议》(简称协议)。 协议主要内容包括,京东方将在合肥建设第6代TFT-LCD液晶面板线。这同时也是中国内地首条第六代TFT-LCD生产线。项目计划总投资175亿元人民币,设计产能为每月90千片,玻璃基板尺寸为1500
[焦点新闻]
日本大地震周年续:LCD面板受影响较小
日本地震之后,LCD面板显露韧性,灾害的总体影响不大。 尽管液晶显示器(LCD)面板与元件供应商的生产设施受到了2011年2月日本地震的影响,但这场灾害过去一年之后,可以明显看出其总体影响很小。这是因为日本在这些市场中的份额有限,而且恰好库存充足。 据IHS iSuppli公司的显示材料与系统服务,只有5%的大尺寸LCD面板产能和18%的中小LCD面板产能位于日本。 图所示为日本大尺寸及中小尺寸LCD面板产能在全球所占的份额。 库存救急 工厂受到地震影响的面板供应商只有Panasonic、日立和NEC三家,因其距离震中较近。夏普的第八代和第10代工厂根本没受到影响。 同时,尽管LCD元件供应受到影响,但面板厂商已
[半导体设计/制造]
STM32学习笔记一一TFTLCD 显示
1.TFTLCD 简介 TFT-LCD 即薄膜晶体管液晶显示器。TFT-LCD与无源 TN-LCD、 STN-LCD 的简单矩阵不同,它在液晶显示屏的每一个象素上都设置有一个薄膜晶体管( TFT),可有效地克服非选通时的串扰,使显示液晶屏的静态特性与扫描线数无关,因此大大提高了图像质量。 TFT-LCD 也被叫做真彩液晶显示器。ALIENTEK TFTLCD 模块采用 16 位的并方式与外部连接。 2.80 并口有如下一些信号线: 信号线 作用 CS TFTLCD 片选信号 WR 向 TFTLCD 写入数据 RD 从 TFTLCD 读取数据 D 16 位双向数据线 RST 硬复位 TFTLCD RS 命令/数据标志(
[单片机]
STM32单片机对TFTLCD的驱动设计
看了TFTLCD和FSMC(灵活的静态存储控制器)的简介,还是一知半解,不知所云。 TFTLCD使用80并口,80 并口有如下一些信号线: CS: TFTLCD 片选信号。 WR:向 TFTLCD 写入数据。 RD:从 TFTLCD 读取数据。 D[15: 0]: 16 位双向数据线。 RST:硬复位 TFTLCD。 RS:命令/数据标志( 0,读写命令; 1,读写数据)。 只是记住FSMC在使用的时候要初始化和使能就行了。 关于lcd.c这个文件竟然接近3000行,好吧,我是写不出来,只能在主函数里调用了。 main.c: intmain(void) { u8x=0; u8lcd_id[12];//存放LCDID字符串
[单片机]