《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 顯示光電 > 設(shè)計(jì)應(yīng)用 > 基于ARM9的帶農(nóng)歷實(shí)時(shí)時(shí)鐘LCD顯示設(shè)計(jì)
基于ARM9的帶農(nóng)歷實(shí)時(shí)時(shí)鐘LCD顯示設(shè)計(jì)
摘要: S3C2440A是Samsung公司為手持設(shè)備應(yīng)用提供的低功耗、高性價(jià)比芯片。S3C2440A基于ARM920T內(nèi)核,并在ARM920T內(nèi)核基本功能的基礎(chǔ)上集成了豐富的外圍功能模塊,如UART、RTC、LCD控制器等外圍器件,從而降低了嵌入式應(yīng)用系統(tǒng)的成本。本文采用S3C2440A和WXCAT35液晶顯示屏模塊,搭建以兩者為基礎(chǔ)的嵌入式液晶系統(tǒng)工作平臺(tái)。在此平臺(tái)基礎(chǔ)上,詳細(xì)討論帶農(nóng)歷的實(shí)時(shí)時(shí)鐘在液晶顯示屏上的顯示以及更改時(shí)間和設(shè)置報(bào)警時(shí)間的方法,并給出了具體的實(shí)現(xiàn)程序。
Abstract:
Key words :
  S3C2440A是Samsung公司為手持設(shè)備應(yīng)用提供的低功耗、高性價(jià)比芯片。S3C2440A基于ARM920T內(nèi)核,并在ARM920T內(nèi)核基本功能的基礎(chǔ)上集成了豐富的外圍功能模塊,如UART、RTC、LCD控制器等外圍器件,從而降低了嵌入式應(yīng)用系統(tǒng)的成本。本文采用S3C2440A和WXCAT35液晶顯示屏模塊,搭建以兩者為基礎(chǔ)的嵌入式液晶系統(tǒng)工作平臺(tái)。在此平臺(tái)基礎(chǔ)上,詳細(xì)討論帶農(nóng)歷的實(shí)時(shí)時(shí)鐘在液晶顯示屏上的顯示以及更改時(shí)間和設(shè)置報(bào)警時(shí)間的方法,并給出了具體的實(shí)現(xiàn)程序。


  1 系統(tǒng)硬件設(shè)計(jì)

  1.1 實(shí)時(shí)時(shí)鐘(RTC)模塊

  S3C2440A集成了具有日歷功能的RTC模塊,它可以在系統(tǒng)關(guān)閉的情況下使用備用電池工作。RTC使用STRB/LDRB ARM操作傳輸二進(jìn)制編碼的十進(jìn)制數(shù)(BCD)的8位數(shù)據(jù)給CPU。數(shù)據(jù)包括年、月、日、星期、小時(shí)、分鐘、秒的時(shí)間信息。此外,RTC模塊還可以實(shí)現(xiàn)報(bào)警功能。RTC模塊采用32.768 kHz的外部晶體振蕩器,外部晶體振蕩器與S3C2440A的連接如圖1所示。XTIrtc和XTOrtc分別是RTC的32.768 kHz晶體振蕩器輸入和輸出,2個(gè)22 pF電容是晶體振蕩器的匹配電容,只有在外部所接電容為匹配電容的情況下,晶體振蕩器頻率才能保證在標(biāo)稱頻率附近的誤差范圍內(nèi)。

a.jpg

  1.2 通用異步接收傳輸(UART)模塊

  S3C2440A的UART提供了3個(gè)獨(dú)立的異步串行I/O端口,每個(gè)端口都可以在中斷模式或者DMA模式下操作。UART使用系統(tǒng)時(shí)鐘可以支持最高115.2 kb·s-1的速率。在對(duì)UART進(jìn)行操作時(shí),數(shù)據(jù)接收幀和發(fā)送幀的格式都是可編程的,它包含1個(gè)開(kāi)始位,5~8個(gè)數(shù)據(jù)位,1個(gè)可選的奇偶位和1或2個(gè)停止位,這些都是通過(guò)線性控制器(ULCONn)設(shè)置。本文采用UART更改時(shí)間和設(shè)置報(bào)警時(shí)間,串口通信連接圖如圖2所示。

b.jpg

  1.3 LCD顯示模塊

  S3C2440A的LCD控制器的作用是將LCD圖像數(shù)據(jù)從系統(tǒng)存儲(chǔ)器中的視頻緩沖區(qū)傳送到外部LCD驅(qū)動(dòng)器。LCD控制可以通過(guò)編程實(shí)現(xiàn)屏幕的不同要求,比如:水平和垂直像素的數(shù)量、接口時(shí)鐘、刷新率等。S3C2440A與WXCAT35液晶顯示屏模塊的連接電路如圖3所示。

c.jpg

  圖中LCD控制器接口信號(hào)的意義:

  VFRAME:LCD控制器與LCD驅(qū)動(dòng)器之間的幀同步信號(hào),它通知LCD屏新一幀的顯示,LCD控制器在一個(gè)完整幀的顯示后發(fā)出VFRAME信號(hào),開(kāi)始新一幀顯示。

  VLINE:LCD控制器與LCD驅(qū)動(dòng)器之間的同步脈沖信號(hào),LCD驅(qū)動(dòng)器通過(guò)它來(lái)將水平移位寄存器的內(nèi)容顯示到LCD屏上。

  VCLK:LCD控制器與LCD驅(qū)動(dòng)器之間的像素時(shí)鐘信號(hào)。

  VM:LCD驅(qū)動(dòng)器所使用的交流信號(hào)。LCD驅(qū)動(dòng)器使用VM信號(hào)改變用于打開(kāi)或者關(guān)閉像素的行和列電壓的極性,從而控制像素點(diǎn)的顯示或熄滅。

  VD0~VD23:LCD像素?cái)?shù)據(jù)輸出端口。

  2 軟件設(shè)計(jì)

  2.1 讀寫(xiě)RTC操作

  S3C2440內(nèi)部集成了RTC模塊,其內(nèi)部的寄存器 BCDSEC,BCDMIN,BCDHOUR,BCDDAY,BCDDATE,BCDMON和BCDYEAR分別存儲(chǔ)了當(dāng)前的秒,分,小時(shí),星期,日,月和年,表示時(shí)間的數(shù)值都是BCD碼。這些寄存器的內(nèi)容可讀可寫(xiě)。在進(jìn)行讀寫(xiě)操作時(shí),必須將RTC控制寄存器RTCCON的第0位置1 。實(shí)現(xiàn)讀寫(xiě)功能的程序如下?! ?/p>

d.jpg

  2.2 更改時(shí)間和設(shè)置報(bào)警時(shí)間

  采用S3C2440A的UART,在PC機(jī)上實(shí)現(xiàn)對(duì)實(shí)時(shí)時(shí)鐘的更改和設(shè)置報(bào)警時(shí)間。其通訊協(xié)議為:當(dāng)從PC機(jī)上發(fā)送0xaa時(shí),分別將年、月、日、星期、小時(shí)、分和秒寫(xiě)到實(shí)時(shí)時(shí)鐘數(shù)據(jù)寄存器中。當(dāng)S3C2440A接收到數(shù)據(jù)后發(fā)送0xaa以示確認(rèn),調(diào)用前面的寫(xiě)操作函數(shù),從而實(shí)現(xiàn)對(duì)實(shí)時(shí)時(shí)鐘的更改;當(dāng)從PC機(jī)上發(fā)送0xbb時(shí),分別將預(yù)置的報(bào)警時(shí)間ALMYEAR(年)、ALMMON(月)、ALMDATE(日)、ALMHOUR(小時(shí))、ALMMIN(分)和ALMSEC(秒)寫(xiě)到報(bào)警時(shí)間數(shù)據(jù)寄存器中,當(dāng)S3C2440A接收到數(shù)據(jù)后發(fā)送0xbb以示確認(rèn),調(diào)用設(shè)置報(bào)警時(shí)間設(shè)置函數(shù),從而實(shí)現(xiàn)對(duì)報(bào)警時(shí)間的設(shè)置。通過(guò)設(shè)置報(bào)警控制寄存器RTCALM,即可實(shí)現(xiàn)報(bào)警,程序流程圖如圖4所示。

e.jpg

  2.3 農(nóng)歷顯示設(shè)計(jì)

  S3C2440的實(shí)時(shí)時(shí)鐘模塊沒(méi)有提供農(nóng)歷的時(shí)間信息,因此采用公歷轉(zhuǎn)農(nóng)歷的方式,實(shí)現(xiàn)對(duì)農(nóng)歷的顯示。公歷轉(zhuǎn)換為農(nóng)歷的算法是:首先建立公歷年對(duì)應(yīng)的農(nóng)歷數(shù)據(jù),并將其存放入數(shù)組中,然后通過(guò)查表的方式實(shí)現(xiàn)公歷與農(nóng)歷的轉(zhuǎn)換。

  建立公歷年對(duì)應(yīng)的農(nóng)歷數(shù)據(jù),每年用3個(gè)字節(jié)表示。

  公歷年對(duì)應(yīng)的農(nóng)歷數(shù)據(jù)的第1 Byte的高4位表示農(nóng)歷閏年月份,低4位表示農(nóng)歷1~4月的大小,其具體含義如表1所示。第2 Byte表示農(nóng)歷5~12月的大小,其具體含義如表2所示。第3 Byte的最高位表示農(nóng)歷第13個(gè)月的大小,第7位和第6位表示春節(jié)所在的公歷月份,低5位表示春節(jié)所在的公歷日期,其具體含義如表3所示。

f.jpgg.jpg

  以2010年為例,農(nóng)歷無(wú)閏月,農(nóng)歷1月和3月是大月,2月和4月是小月,故而第1 Byte為00001010(即0x0A);農(nóng)歷的5月、8月、10月和12月是大月,6月、7月、9月和11月是小月,故而第2 Byte為10010101(即0x95);由于2010年的農(nóng)歷沒(méi)有閏月,所以也就沒(méi)有第13個(gè)月,故而第3Byte的第7位為0,2010年春節(jié)所在的公歷2月14日,故而第3 Byte的第6~0位為1001110,即第3 Byte為0x4E。

  公歷轉(zhuǎn)農(nóng)歷的算法框圖如圖5所示。

h.jpg

  2.4 實(shí)時(shí)時(shí)鐘的顯示

  通過(guò)調(diào)用字符顯示函數(shù),將讀取的實(shí)時(shí)時(shí)鐘顯示在LCD屏幕上。本文將要顯示的實(shí)時(shí)時(shí)鐘字符轉(zhuǎn)換成字模,把所得的字模放在數(shù)組中,讀取實(shí)時(shí)時(shí)鐘寄存器,調(diào)用字符顯示函數(shù)顯示數(shù)字和漢字,從而將實(shí)時(shí)時(shí)鐘顯示在LCD屏幕上。最后顯示效果圖如圖6所示。

i.jpg

  3 結(jié)束語(yǔ)

  設(shè)計(jì)了基于Samsung公司ARM9處理器S3C2440和液晶顯示屏WXCAT35的帶農(nóng)歷實(shí)時(shí)時(shí)鐘顯示電路。為了能夠?qū)崿F(xiàn)RTC的實(shí)時(shí)顯示,采用S3C2440A中提供的RTC時(shí)間節(jié)拍中斷,讓它每秒鐘中斷一次,每次中斷讀取時(shí)間,刷新一次實(shí)時(shí)時(shí)鐘。此外,在通過(guò)UART對(duì)RTC進(jìn)行修改后,采用外部按鍵中斷實(shí)現(xiàn)對(duì)實(shí)時(shí)時(shí)鐘的更新,從而完成對(duì)時(shí)間的修改。設(shè)計(jì)通過(guò)軟件形式使得不帶農(nóng)歷實(shí)時(shí)時(shí)鐘芯片能夠?qū)崿F(xiàn)對(duì)農(nóng)歷的顯示,增強(qiáng)了芯片的應(yīng)用范圍,為在需要農(nóng)歷時(shí)鐘作為參考的工作環(huán)境提供了便利。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。