1 引言
由于點(diǎn)陣液晶顯示具有高清晰度和高分辨率,可顯示復(fù)雜文字和圖形,耗電省等優(yōu)點(diǎn),在移動(dòng)通訊、儀器儀表、電子設(shè)備等方面得到廣泛應(yīng)用。而觸摸屏作為良好的人機(jī)接口一直應(yīng)用于儀器儀表。觸摸屏和點(diǎn)陣液晶顯示模塊的相互配合使用,使得人機(jī)界面更加完善美觀。這里介紹的基于RA8806控制器的LCD就是內(nèi)建觸摸屏控制器的點(diǎn)陣液品顯示模塊。
2 RA8806控制器簡(jiǎn)介
RA8806是點(diǎn)矩陣液晶顯示控制器,支持320x240、四灰階、雙圖層文字及圖形顯示模式,內(nèi)建中、日、英、歐文字型碼,可將文字旋轉(zhuǎn)90°、180°、270°顯示。RA8806內(nèi)建智能型觸摸掃描控制器,支持4線電阻式觸摸屏接口,帶8x8的鍵盤(pán)掃描接口,可編程設(shè)置的脈寬調(diào)制用來(lái)調(diào)節(jié)LCD面板的對(duì)比度或背光。RA8806也提供如區(qū)域卷動(dòng)、文字反白、粗體文字、文字放大、內(nèi)存清除等功能。RA8806還提供一項(xiàng)創(chuàng)新功能即無(wú)雪花模式,可有效移除當(dāng)頻繁對(duì)內(nèi)存讀寫(xiě)所產(chǎn)生的雪花。
3 RA8806和51單片機(jī)接口電路
RA8806支持4位或8位數(shù)據(jù)總線的8080/6800系列MPU接口,其外部接口引腳功能描述如表1所示?;赗A8806控制器的LCD和51系列單片機(jī)的接口采用總線或直接I/O方式,基于總線的接口方式如圖1所示,數(shù)據(jù)總線直接和單片機(jī)的PO端口相連,P20選擇指令或數(shù)據(jù),P27作為片選信號(hào),因此LCD的命令端口地址是0x7100,數(shù)據(jù)端口地址是0x7000。LCD的復(fù)位信號(hào)直接從51單片機(jī)的復(fù)位信號(hào)取反得到,為保證LCD復(fù)位信號(hào)的穩(wěn)定,單片機(jī)復(fù)位的對(duì)地電阻不能大于4.7 kΩ。LCD的復(fù)位也可采用基于直接I/O方式的LCD接口方式(圖2),用一個(gè)單片機(jī)引腳產(chǎn)生復(fù)位信號(hào)。
4 軟件設(shè)計(jì)
基于RA8806控制器的LCD軟件設(shè)計(jì)包括基本讀寫(xiě)函數(shù)、字符串顯示函數(shù)、畫(huà)線函數(shù)、圖像顯示函數(shù)、觸摸屏相關(guān)函數(shù)等。這里重點(diǎn)介紹基本讀寫(xiě)函數(shù)的編程方法,編程注意事項(xiàng)及觸摸屏的開(kāi)發(fā)過(guò)程。
4.1 基本讀寫(xiě)函數(shù)
基于RA8806控制器的LCD和51單片機(jī)接口的基本讀寫(xiě)函數(shù)主要包括:指令寫(xiě)入函數(shù)(寫(xiě)數(shù)據(jù)到寄存器),緩沖器讀取函數(shù),內(nèi)存寫(xiě)入和讀取函數(shù),以及狀態(tài)讀取函數(shù)。這些函數(shù)主要是按照RA8806數(shù)據(jù)資料給出的時(shí)序要求進(jìn)行編寫(xiě)。單片機(jī)和 RA8806接口方式不同,編程方式也不同。以RA8806指令寫(xiě)入函數(shù)為例,時(shí)序要求如圖3所示。
若RA8806和單片機(jī)的接口按圖1的總線方式,指令簡(jiǎn)單,接口時(shí)序由單片機(jī)自動(dòng)形成,其指令如下:
4.2 RA8806編程注意事項(xiàng)
(1)內(nèi)存寫(xiě)入與讀取 當(dāng)寫(xiě)數(shù)據(jù)到內(nèi)存(可能是顯示內(nèi)存或字型產(chǎn)生內(nèi)存)時(shí),必須先執(zhí)行緩存器編號(hào)為B0h的“寫(xiě)入指令周期”。反之,如果讀取內(nèi)存中的數(shù)據(jù)時(shí),則必須先執(zhí)行緩存器編號(hào)為B1h的“寫(xiě)入指令周期”。
(2)字符模式和圖形模式 RA8806支持兩種自MPU寫(xiě)入內(nèi)存的模式:字符模式和圖形模式。在圖形模式時(shí),數(shù)據(jù)以點(diǎn)陣的方式直接寫(xiě)入內(nèi)存;而在字符模式下,寫(xiě)入的數(shù)據(jù)以字碼的形式被寫(xiě)入RA8806,而寫(xiě)入的字碼會(huì)再到CGROM中讀出相對(duì)的字型碼而后寫(xiě)入內(nèi)存。因此,當(dāng)需要畫(huà)線或顯示圖像時(shí),必須設(shè)置LCD 工作在圖形方式;當(dāng)顯示字符時(shí),務(wù)必切換到文字方式。
(3)LCD的復(fù)位和初始化 為保證RA8806無(wú)誤操作,RA8806供電后要進(jìn)行復(fù)位。復(fù)位方式可采用圖1方式,也可采用圖2方式,或單獨(dú)采用阻容方式。復(fù)位后要初始化設(shè)定RA8806內(nèi)部緩存器,即編寫(xiě)一個(gè)初始化函數(shù),并在復(fù)位后運(yùn)行。
RA8806功能強(qiáng)大,只有包括卷動(dòng)、反白、雙圖層、四灰度等功能,以及獨(dú)特的消除閃爍模式功能,建議使用C51編程,以函數(shù)的形式實(shí)現(xiàn)以上功能,將這些函數(shù)封裝在一個(gè)C程序中,通過(guò)頭文件供主程序調(diào)用。
4.3 觸摸屏編程
RA8806內(nèi)建一組10位A/D轉(zhuǎn)換和控制電路,以連接4線電阻式觸摸屏。一般,電阻式觸摸屏由兩層很薄的電阻式屏幕組成,當(dāng)外力施加在面板上的某一點(diǎn)時(shí),兩層屏幕將被觸碰,相對(duì)于觸碰的位置,系統(tǒng)將偵測(cè)到一個(gè)(X,Y)坐標(biāo)值。觸摸屏查詢方式流程(圖4)的作用是開(kāi)啟觸屏功能,判斷當(dāng)觸控事件發(fā)生時(shí),首先讀回對(duì)應(yīng)的(X,Y)坐標(biāo)值(兩組10位A/D轉(zhuǎn)換值),再轉(zhuǎn)換為對(duì)應(yīng)的屏幕坐標(biāo)。
觸摸控制電路的10位A/D轉(zhuǎn)換器產(chǎn)生的(X、Y)坐標(biāo)都在1 023~0中,而基于RA8806的LCD分辨率是320x240,程序要將觸摸屏的(X,Y)坐標(biāo)值轉(zhuǎn)換為L(zhǎng)CD坐標(biāo)值,確定兩者間的轉(zhuǎn)換關(guān)系一般通過(guò)觸摸屏的校準(zhǔn)程序完成。最簡(jiǎn)單的校準(zhǔn)算法是兩點(diǎn)校準(zhǔn):在LCD的左上角和右下角顯示2個(gè)校準(zhǔn)圖標(biāo)(長(zhǎng)為20的十字光標(biāo)),十字光標(biāo)的交叉點(diǎn)即為校準(zhǔn)點(diǎn)。分別觸摸2個(gè)十字中心的交點(diǎn),可得到兩組觸摸屏的(X,Y)坐標(biāo)值,而LCD的2個(gè)十字中心的坐標(biāo)已知,由式(1)可得到水平和垂直方向的斜率和截距,然后將水平和垂直方向的斜率和截距保存在EEPROM中。
對(duì)于要求觸摸定位不很精確的場(chǎng)合,比如僅以字符為單位的定位精度,也可在系統(tǒng)中省去校準(zhǔn)程序,而在程序轉(zhuǎn)換中給出一個(gè)相近的斜率和截距。
5 結(jié)束語(yǔ)
基于RA8806的LCD與同類(lèi)產(chǎn)品相比,具有功能強(qiáng)、調(diào)試簡(jiǎn)單、編程靈活和性價(jià)比高等優(yōu)點(diǎn),且內(nèi)建4線電阻式觸摸屏接口,內(nèi)置中文字庫(kù)和ASCII碼字庫(kù)。因此基于RA8806的LCD可廣泛應(yīng)用于智能儀表、數(shù)字化儀器等。