基于ARM處理器的LCD控制及觸摸屏接口設(shè)計(jì)
關(guān)鍵詞:ARM處理器;S3C44B0X;LCD;ADS7843;觸摸屏;
0 引言
隨著信息技術(shù)的不斷發(fā)展,嵌入式系統(tǒng)正在越來(lái)越廣泛的應(yīng)用到航空航天、消費(fèi)類電子、通信設(shè)備等領(lǐng)域。而在嵌入式系統(tǒng)中,LCD作為人機(jī)交互的主要設(shè)備之一,顯示系統(tǒng)又是不可缺少的一部分。近年來(lái),隨著微處理器性能的不斷提高,特別是ARM處理器系列的出現(xiàn),嵌入式系統(tǒng)的功能也變得越來(lái)越強(qiáng)大。液晶顯示器由于具有功耗低、外形尺寸小、價(jià)格低、驅(qū)動(dòng)電壓低等特點(diǎn)以及其優(yōu)越的字符和圖形的顯示功能,已經(jīng)成為嵌入式系統(tǒng)使用中的首選的輸出設(shè)備。隨著多媒體技術(shù)的發(fā)展,單色的LCD已不能滿足人們?cè)诟鞣N多媒體應(yīng)用方面的更高要求,彩色LCD正越來(lái)越廣泛地被應(yīng)用到嵌入式系統(tǒng)中。觸摸屏是人們獲取信息的一種便利工具, 已廣泛應(yīng)用于工商、稅務(wù)、銀行等各種需要對(duì)公眾提供信息服務(wù)的行業(yè)[1]。觸摸屏作為一種特殊的計(jì)算機(jī)外設(shè),是目前最簡(jiǎn)單、方便、自然的一種人機(jī)交互方式。它賦予了多媒體以嶄新的面貌,是極富吸引力的全新多媒體交互設(shè)備[2]。
S3C44B0X是三星公司生產(chǎn)的基于ARM7TDMI內(nèi)核的RISC微處理器,主頻可達(dá)66MHz[3]。它集成了包括LCD控制器在內(nèi)的等外圍器件。LM7M632是Sharp公司推出的分辨率為640×240的STN型彩色LCD顯示屏,支持256色顯示[4]。本文重點(diǎn)討論了S3C44B0X與LM7M632及ADS7843的接口設(shè)計(jì)以及LCD和觸摸屏的驅(qū)動(dòng)過(guò)程。
1 S3C44B0X中內(nèi)置LCD控制器介紹
S3C44B0X中內(nèi)置的LCD控制器可以支持4級(jí)灰度、16級(jí)灰度的黑白LCD和256級(jí)顏色的彩色LCD屏;支持3種LCD驅(qū)動(dòng)器:4位雙掃描,4位單掃描,8位單掃描顯示模式。內(nèi)置的LCD控制器的作用是將定位在系統(tǒng)存儲(chǔ)器(SDRAM)中的顯示緩沖區(qū)中的LCD圖像數(shù)據(jù)傳送到外部LCD驅(qū)動(dòng)器,并產(chǎn)生必須的LCD控制信號(hào)[5]。圖1為L(zhǎng)CD控制器內(nèi)部結(jié)構(gòu)框圖。其中,VCLK是LCD控制器和LCD驅(qū)動(dòng)器之間的像素時(shí)鐘信號(hào);VLINE是LCD控制器和LCD 驅(qū)動(dòng)器之間的行同步脈沖信號(hào);VFRAME是LCD控制器和LCD驅(qū)動(dòng)器之間的幀同步信號(hào)。VM是LCD驅(qū)動(dòng)器的AC信號(hào)。VD[3∶0 ]和VD[ 7∶4 ] 是LCD像素點(diǎn)數(shù)據(jù)輸出端口。
圖1:LCD 控制器內(nèi)部結(jié)構(gòu)圖
2 LCD模塊及硬件接口
LM7M632是按照8位單掃描模式工作的。所謂8位單掃描方式,就是顯示采用8位并行數(shù)據(jù)線進(jìn)行“行”數(shù)據(jù)連續(xù)移位輸出,直到整個(gè)幀的數(shù)據(jù)都被移出為止。LCD模塊接口信號(hào)線的定義如表1所示,圖2為L(zhǎng)CD控制器與LCD的硬件接口的連接圖。在該顯示系統(tǒng)的硬件電路中,S3C44B0中的內(nèi)置LCD控制器與LCD模塊LM7M632的連接是關(guān)鍵。圖3是LM7M632模塊接口時(shí)序圖。其中,YD是幀(寫滿整個(gè)屏的數(shù)據(jù)稱為1個(gè)“幀”)同步信號(hào),該信號(hào)啟動(dòng)LCD屏的新一幀的數(shù)據(jù)。兩個(gè)YD脈沖之間的時(shí)間長(zhǎng)度就稱之為“幀周期”。根據(jù)LCD模塊的特性,幀刷新周期為12ms到14ms,頻率為70Hz~80Hz。每1幀中包含240個(gè)LP脈沖。LP為行(共240行)數(shù)據(jù)輸入鎖存信號(hào),該信號(hào)啟動(dòng)LCD屏新的一行的數(shù)據(jù)。也就是行同步脈沖信號(hào)。每1行中包括640×3/8個(gè)XCK脈沖信號(hào)。XCK為行數(shù)據(jù)輸入信號(hào),也就是每一行中像素點(diǎn)數(shù)據(jù)傳輸?shù)臅r(shí)鐘信號(hào);每組8位的數(shù)據(jù)在XCK的下降沿處被輸入鎖存。D0~D7是8位的顯示數(shù)據(jù)輸入信號(hào)。
引腳 |
引腳描述 |
引腳 |
引腳描述 |
1 |
YD:掃描開(kāi)始 |
8 |
VDD:logic供電(3.3V) |
2 |
M:交變信號(hào) |
9 |
Vcon:對(duì)比調(diào)節(jié)電壓 |
3 |
LP:輸入鎖存 |
10 |
VSS:地 |
4 |
VSS:地 |
11~14 |
D0~D3:數(shù)據(jù)線低四位 |
5 |
XCK:時(shí)鐘 |
15 |
VSS:地 |
6 |
VSS:地 |
16~19 |
D4~D7:數(shù)據(jù)線高四位 |
7 |
DISP:顯示開(kāi)關(guān) |
20 |
VSS:地 |
表1:LCD模塊(LM7M632)接口信號(hào)線定義
圖2:LCD控制器與LCD硬件連接方法:
圖3:LM7M632模塊接口時(shí)序圖
在該顯示系統(tǒng)中,其顯示方式是以直接操作顯示緩沖區(qū)(SDRAM)的內(nèi)容進(jìn)行,LCD控制器會(huì)通過(guò)DMA方式從顯示緩沖區(qū)中獲取數(shù)據(jù),不需要CPU干預(yù)。在256色顯示模式下,顯示緩沖區(qū)中的一個(gè)字節(jié)數(shù)據(jù)代表LCD上的一個(gè)點(diǎn)的顏色信息,因此,所需要的緩沖區(qū)的大小為640 ×240 ×1 字節(jié),其中每個(gè)字節(jié)的RGB數(shù)據(jù)格式為:由3位紅色(Bit7~Bit5)、3位綠色(Bit4~Bit2)、2位藍(lán)色 (Bit1~Bit0) 組成。
3 觸摸屏原理及硬件接口
觸摸屏按其工作原理的不同可分為表面聲波屏、電容屏、電阻屏和紅外屏幾種[6]。其中最常見(jiàn)的是電阻式觸摸屏,其屏體部分是一塊與顯示器表面非常配合的多層復(fù)合薄膜。觸摸屏工作時(shí),上下導(dǎo)體層相當(dāng)于電阻網(wǎng)絡(luò)。當(dāng)某一層電極加上電壓時(shí),會(huì)在該網(wǎng)絡(luò)上形成電壓梯度。如有外力使得上下兩層在某一點(diǎn)接觸,則在另一層未加電壓的電極上可測(cè)得接觸點(diǎn)處的電壓,從而知道接觸點(diǎn)處的坐標(biāo)。
ADS7843是TI公司生產(chǎn)的四線電阻觸摸屏轉(zhuǎn)換接口芯片。它是一款具有同步串行接口的12位取樣模數(shù)轉(zhuǎn)換器。在125kHz吞吐速率和2.7V電壓下的功耗為750µW,而在關(guān)閉模式下的功耗僅為0.5µW。由于具有低功耗和高速等特性,所以被廣泛應(yīng)用。圖4是S3C44B0同ADS7843的連接電路。X+、Y+、X- 、Y-是轉(zhuǎn)換器模擬輸入端,DCLK是外部時(shí)鐘輸入;CS 是片選端;DIN 是串行輸入,其控制數(shù)據(jù)通過(guò)該引腳輸入;DOUT是串行數(shù)據(jù)輸出,用于輸出轉(zhuǎn)換后的觸摸位置數(shù)據(jù).最大數(shù)為二進(jìn)制的4095; IN3、IN4是輔助輸入;PENIRQ是PEN中斷引腳。其中,S3C44B0選取PG口與ADS7843接口,共使用PG2 - PG7的6條口線。
圖4:S3C44B0與ADS7843的接口電路
4、彩色液晶顯示及觸摸屏軟件設(shè)計(jì)
4.1 LCD顯示
4.1.1 初始化LCD端口。
由于LCD模塊與S3C44B0相連,LCD是8位數(shù)據(jù)線,所以必須初始化S3C44B0X的C口與D口。其程序如下: rPDATC = rPDATC &~ (1 << 8) | (1 << 8);/ / LCD使能
rPCONC = rPCONC &~ ( 0xff << 8) | ( 0xff <<8);/ / 配置VD[7∶4 ]
rPCOND = 0xaaaa;/ /配置VD[3∶0 ],VCLK,VLINE,VM,VFRAME
rPDATC=0xffff ;
4.1.2 申請(qǐng)大小為640×240字節(jié)大小的顯示緩沖區(qū)。
顯示緩沖區(qū)就是在系統(tǒng)存儲(chǔ)器中劃出一塊區(qū)域,用來(lái)存放要顯示的圖像數(shù)據(jù)。將要顯示的圖像數(shù)據(jù)直接放入顯示緩沖區(qū)就能直接在LCD顯示屏上顯示出所顯示的圖像。其程序如下:
frameBuffer256= (unsigned char*)malloc(ARRAY_SIZE_COLOR);其中ARRAY_SIZE_COLOR=640×240
4.1.3 初始化LCD控制寄存器
在點(diǎn)亮LCD之前,還應(yīng)該對(duì)LCD控制器相關(guān)的寄存器進(jìn)行初始化[6],使LCD控制器的配置與外接LCD顯示模塊特性相匹配,包括設(shè)置LCD分辨率、掃描頻率、顯示模式、產(chǎn)生控制信號(hào)和控制時(shí)序等。
4.1.4 LCD顯示
LCD初始化之后,由于在S3C44B0X中,CUP不支持文件管理,必須把要顯示的圖片包含到程序中。例如,如果要在LCD顯示640×240大小的圖片,在實(shí)際操作中,首先應(yīng)使用轉(zhuǎn)換工具(如:Image2Lcd)把圖片轉(zhuǎn)換成c格式的數(shù)組文件,即把每一個(gè)像素點(diǎn)的顏色轉(zhuǎn)換成用一個(gè)字節(jié)表示,然后把整個(gè)文件保存成240×640的數(shù)組形式。然后把文件包含在項(xiàng)目工程中,用循環(huán)語(yǔ)句即可實(shí)現(xiàn)顯示。如要顯示漢字、字符和數(shù)字等, 其方法和原理與顯示圖像基本一樣。
4.2 觸摸屏軟件設(shè)計(jì)
4.2.1觸摸屏模式設(shè)置
ADS7843的參考電壓模式設(shè)置分為兩種:?jiǎn)味四J胶筒罘帜J健T趩味四J街?,參考輸入電壓選取的是V cc 和GND ,由于內(nèi)部的開(kāi)關(guān)電阻壓降影響轉(zhuǎn)換結(jié)果帶來(lái)誤差,所以轉(zhuǎn)換器內(nèi)部的低阻開(kāi)關(guān)對(duì)轉(zhuǎn)換精度有一定影響;差分模式參考輸入由未選中的輸入通道Y + 、Y - 、 X + 、X - 提供參考電源和地,不管內(nèi)部開(kāi)關(guān)電阻如何變化,其轉(zhuǎn)換結(jié)果總與觸摸屏的電阻成比例,克服了內(nèi)部開(kāi)關(guān)電阻的影響,但當(dāng)轉(zhuǎn)換頻率很高時(shí)則增加了功耗,需要考慮低功耗設(shè)計(jì)。
4.2.2 PENIRQ作用
由于觸摸屏A/D采樣時(shí)功耗增加,所以軟件設(shè)計(jì)中,只有在用戶按下觸摸屏?xí)r,才需要進(jìn)行A/D轉(zhuǎn)換。為了降低功耗,充分利用該芯片的能力,配合軟件設(shè)計(jì),硬件電路設(shè)計(jì)成按下觸摸屏?xí)r,通過(guò)PENIRQ 向MCU發(fā)出中斷。同時(shí)軟件配置ADS7843采用筆中斷功能降低功耗,當(dāng)按下觸摸屏?xí)r,則PENIRQ引腳電位變低,MCU收到中斷請(qǐng)求后可以發(fā)出啟動(dòng)轉(zhuǎn)換命令,并查詢BUSY引腳直到轉(zhuǎn)換完成取出坐標(biāo)。啟動(dòng)轉(zhuǎn)換分兩次進(jìn)行,分別獲得x和y方向的坐標(biāo)。
4.2.3 觸摸屏程序設(shè)計(jì)流程
充分權(quán)衡單端模式和差分模式的優(yōu)缺點(diǎn),本系統(tǒng)選擇參考電壓的輸入模式為差分模式,控制程序使用的狀態(tài)字[7]設(shè)置為:X通道0x90,Y通道0xD0。觸摸屏程序流程如圖5所示。程序中S3C44B0X的GPG7在下降沿觸發(fā)的情況下檢測(cè)PENIRQ是否為低電平,若為低電平則認(rèn)為有按下觸摸屏;否則認(rèn)為沒(méi)有按下觸摸屏。利用I/O口模擬DIN,DOUT和DCLK上的3線串行傳輸時(shí)將讀取的x或y軸坐標(biāo)數(shù)值的控制字送入ADS7843,后再串行讀出坐標(biāo)值。坐標(biāo)值送給S3C44B0X,CPU經(jīng)過(guò)處理后在LCD上顯示相應(yīng)的信息并執(zhí)行相應(yīng)的參數(shù)指令,整個(gè)系統(tǒng)都是可以按照LCD上的提示,通過(guò)觸摸屏來(lái)控制,從而完成人機(jī)交互的功能。
圖5:觸摸屏程序流程圖
5 結(jié)束語(yǔ)
在嵌入式系統(tǒng)中,LCD作為人機(jī)交互的主要設(shè)備之一,具有重要的作用。本文完成了S3C44B0X控制LCD及觸摸屏的軟硬件設(shè)計(jì),實(shí)踐證明該系統(tǒng)穩(wěn)定可靠, 能夠達(dá)到預(yù)期效果。本文為人機(jī)界面中的LCD的硬件設(shè)計(jì)與控制驅(qū)動(dòng)提供了一種實(shí)用解決方案,本方案可應(yīng)用于其它嵌入式系統(tǒng)中。
參考文獻(xiàn)
[1] 李力,黎敏等.一種基于MIS 的觸摸屏漢字輸入方法的設(shè)計(jì)[J].微機(jī)算機(jī)與信息,2006.23:98-91.
[2] 賴誠(chéng),觸摸屏原理及在單片機(jī)系統(tǒng)的應(yīng)用[J]. 商場(chǎng)現(xiàn)代化, 2006年6月(下旬刊)總第471期
[3] Samsung Electronics User’s Manual S3C44B0X 32BitRISC Microprocessor [Z]. 2003.
[4] Sharp Microelectronic User’s Manual LM7M632 Passive Matrix LCD Module [Z]. 1998.
[5] 李巖,榮盤祥. 基于S3C44B0X嵌入式µCLinux系統(tǒng)原理及應(yīng)用[M].北京,清華大學(xué)出版社,2005.1
[6] 陳賾.ARM嵌入式實(shí)踐教程[M].北京,北京航空航天大學(xué)出版社,2005.2. 149-150
[7] ADS7843 Datasheet[Z]. TI, JULY.2001