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)值,。觸摸屏查詢(xún)方式流程(圖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)單,、編程靈活和性?xún)r(jià)比高等優(yōu)點(diǎn),,且內(nèi)建4線電阻式觸摸屏接口,內(nèi)置中文字庫(kù)和ASCII碼字庫(kù),。因此基于RA8806的LCD可廣泛應(yīng)用于智能儀表,、數(shù)字化儀器等。