內(nèi)置觸摸屏與鍵盤接口的LCD控制器RA8806的應(yīng)用
LCD作為一種常見(jiàn)的顯示設(shè)備。具有功耗低、體積小、重量輕、顯示的信息量大等特點(diǎn),尤其是在便攜設(shè)備中,更是占據(jù)著絕對(duì)主流的地位。對(duì)于字符或數(shù)字的簡(jiǎn)單信息顯示,通常可用段碼式LCD驅(qū)動(dòng)器。而對(duì)于復(fù)雜的信息顯示,則必須由點(diǎn)陣式LCD驅(qū)動(dòng)顯示,最常見(jiàn)的點(diǎn)陣式LCD控制/驅(qū)動(dòng)器中,有不帶中文字庫(kù)的LCD驅(qū)動(dòng)器T6963,也有帶中文字庫(kù)的LCD驅(qū)動(dòng)器ST7920。
對(duì)于輸入設(shè)備,最常見(jiàn)的是鍵盤。在小型控制系統(tǒng)中,鍵盤通常利用處理器的I/O端口掃描矩陣式行列。但占用I/O端口線,并降低處理器效率。另一種方法是利用專用的鍵盤接口器件,如英特爾的8279。周立功的ZLG7289等。觸摸屏作為一種簡(jiǎn)單、自然的輸入設(shè)備。具有堅(jiān)固耐用、反應(yīng)速度快、節(jié)省空間、易于交流等優(yōu)點(diǎn)。觸摸屏使人機(jī)交互更為直截,極大方便用戶操作。常見(jiàn)的觸摸屏控制器有ADS7846。但不論是鍵盤還是觸摸屏,使用外擴(kuò)器件的實(shí)現(xiàn)方法無(wú)疑會(huì)增加電路的復(fù)雜性和成本。
RA8806是一個(gè)雙圖層中英文字符與繪圖模式的點(diǎn)陣LCD控制器,最大支持320×240點(diǎn)分辨率的LCD面板(擴(kuò)展模式下,可支持640×240或是320×480分辨率的LCD面板)。RA8806不僅內(nèi)置中文字庫(kù),還提供了8×8的鍵盤掃描接口和4線電阻式觸摸屏控制接口,為中型尺寸LCD顯示控制提供了完整人機(jī)交互的解決方案。這里全面介紹RA8806的硬件配置方法以及軟件編程方法。
2 RA8806主要特性
RA8806的內(nèi)部結(jié)構(gòu)如圖l所示。RA8806內(nèi)置了4×8或8x8的鍵盤掃描接口,支持多鍵同時(shí)按下及按鍵時(shí)間長(zhǎng)短判斷功能;RA8806觸摸屏控制器,支持了4線電阻式觸摸屏掃描接口;一路可編程PWM控制器,可調(diào)節(jié)LCD面板的對(duì)比度或背光亮度;在與控制器接口方面,RA8806能夠支持4位或8位數(shù)據(jù)總線寬度的8080/6800系列控制器;在顯示效果方面,RA8806能夠提供4級(jí)灰度顯示。此外還提供了屏幕局部滾動(dòng)、文字反白、粗體顯示、文字放大與旋轉(zhuǎn)等顯示功能。
3 RA8806接口及編程
3.1 RA8806控制接口
RA8806支持8080和6800兩種微控制器接口,由接口類型選擇引腳MI的狀態(tài)決定;MI接低電平時(shí),選擇8080接口,反之,選擇6800接口。數(shù)據(jù)總線的寬度由引腳DB的狀態(tài)決定:當(dāng)DB接高電平時(shí),數(shù)據(jù)總線的寬度為8位,反之,總線寬度為4位。在并行模式下,只要將RA8806和微控制器的對(duì)應(yīng)引腳相連即可。對(duì)RA8806的控制訪問(wèn),與8080/6800控制器對(duì)存儲(chǔ)器的訪問(wèn)方式相同。需要注意的是引腳RS用來(lái)確定要傳送的數(shù)據(jù)類型:RS為高電平時(shí)表示命令周期,RS為低電平表示為數(shù)據(jù)周期,對(duì)RA8806的訪問(wèn)類型如表l所示。
3.2 RA8806鍵盤接口
RA8806的矩陣鍵盤掃描接口應(yīng)用起來(lái)非常方便,只要將KOUT[7:O]行掃描輸出和KIN[7:O]列信號(hào)輸人接上相應(yīng)的按鍵即可,如圖2所示。
與鍵盤掃描相關(guān)的寄存器有:掃描控制寄存器KSCR0和KSCRl,掃描數(shù)據(jù)寄存器KSDRO~KSDR2。在KSCRO中,最高位DB7是鍵盤掃描功能使能位。DB6為鍵盤矩陣大小選擇位,DB6=1,鍵盤大小為4x8;DB6=O,鍵盤大小為8x8。DB[5:4]決定鍵盤消抖動(dòng)的采樣次數(shù)DB3為按鍵長(zhǎng)按判斷功能使能位。DB[2:0]決定鍵盤掃描的速度。KSCRl用來(lái)設(shè)置鍵盤喚醒功能及長(zhǎng)按時(shí)間調(diào)整等。通過(guò)配置相應(yīng)命令寄存器,RA8806的鍵盤掃描電路就能正常工作。
當(dāng)有按鍵事件發(fā)生時(shí)RA8806可以通過(guò)引腳INT向系統(tǒng)控制器請(qǐng)求中斷,由于RA8806的所有中斷共用一個(gè)中斷請(qǐng)求引腳INT。因此系統(tǒng)控制器需要讀取RA8806的中斷狀態(tài)寄存器INTR,以判斷中斷來(lái)源,下面以Keil C51為例,給出鍵盤中斷程序的主要代碼:
3.3 RA8806觸摸屏接口
RA8806內(nèi)置一組10位A/D轉(zhuǎn)換器和控制電路,用來(lái)連接4線電阻式觸摸屏。只要將RA8806的X1和X2、Yl和Y2分別與觸摸屏的對(duì)應(yīng)引腳相連,并在Yl引腳接39~51 kΩ的上拉電阻即可,如圖3所示。當(dāng)觸摸屏被有效觸摸時(shí),觸摸點(diǎn)的X,Y坐標(biāo)值被記錄在RA8806的相應(yīng)寄存器中,同時(shí)可以向微控制器申請(qǐng)中斷。
與觸摸屏相關(guān)的寄存器有:觸摸屏控制寄存器TPCRl和TPCR2;觸摸屏數(shù)據(jù)寄存器TPXR、TPYR和TPZR。TPCRl的DB7是觸摸屏使能位;DB[6:4]決定采樣觸摸屏數(shù)據(jù)前的等待時(shí)間;DB[2:0]選擇觸摸屏A/D轉(zhuǎn)換器的轉(zhuǎn)換速度;TPCR2用來(lái)設(shè)置觸摸屏的工作模式。觸摸屏的數(shù)據(jù)寄存器TPXR和TPYR用來(lái)保存觸摸點(diǎn)X、Y坐標(biāo)值的高8位,而低2位則保存在TPZR,如果對(duì)觸摸屏的分辨率要求不高,可忽略TPZR的內(nèi)容。當(dāng)觸摸屏被接觸時(shí),信號(hào)不夠穩(wěn)定,為了避免誤動(dòng)作,通常采取連續(xù)讀兩次坐標(biāo)值進(jìn)行對(duì)比的方法加以消除,觸摸屏中斷服務(wù)程序的流程圖如圖4所示。
評(píng)論