摘要:RA8806點矩陣液晶顯示控制器內(nèi)置字庫、觸摸屏和鍵盤接口,具有功能強、移植性強、性價比高的特點,比其他同類產(chǎn)品更受設(shè)計人員歡迎。采用RA8806控制器的LCD可以充分滿足STM32嵌入式系統(tǒng)的各種液晶顯示需求,為了實現(xiàn)這一目的,給出了在STM32上驅(qū)動該控制器的方法、觸摸屏校準(zhǔn)的思路及部分程序,并在實驗中得以實現(xiàn)。
關(guān)鍵詞:RA8806;LCD;STM32;液晶觸摸屏
0 引言
在現(xiàn)代電子設(shè)備中,觸摸屏的應(yīng)用使電子設(shè)備更智能化、人性化。在手機、導(dǎo)航儀、電子儀器、咨詢終端等設(shè)備中,作為信息交流的媒介,觸摸屏具有界面編程靈活、反應(yīng)速度快、功耗低、體積小的特點。
RA8806是一個文字與繪圖模式相結(jié)合的點矩陣液晶顯示控制器,最大能驅(qū)動640×240或320×480分辨率的LCD液晶觸摸屏,可以顯示文字、圖片、符號等復(fù)雜信息,支持文字、圖片混合顯示和區(qū)域卷動,支持90°,180°,270°的文字旋轉(zhuǎn)顯示,支持4/8 b的8080和6800系列兩種MPU接口,提供4×8或8×8的鍵盤掃描接口,提供使用者自行創(chuàng)建字型及符號的功能,可以進行文字對齊、設(shè)置粗體字、設(shè)置行間距和LCD對比度、背光調(diào)節(jié)。
STM32系列嵌入式芯片是常用的微控制器芯片,本文使用的是內(nèi)核為32位CotrexTM-M3的STM32F103,并行LCD接口兼容8080/6800模式,通過配置FSMC來連接LCD。在實驗中還把UCGUI軟件移植入STM32F103中,UCGUI是一種嵌入式系統(tǒng)中常用的圖形支持軟件,適用于各種尺寸的LCD,將UCGUI軟件移植入微控制器可以方便的繪制圖形、文字、控件等人機交互界面元素。
1 RA8806數(shù)據(jù)總線接口方式
常見的RA8806是用I/O或總線方式與單片機或嵌入式系統(tǒng)連接,本文采用的是320×240分辨率的RA8806控制器觸摸屏以總線方式與STM32F103連接,連接的電路如圖1所示。
在設(shè)計中將BUSY引腳9空置,復(fù)位引腳11接高電平,可以通過STM32F130復(fù)位完成整個電路復(fù)位。RA8806和STM32F103都是采用了Intel 8080模式連接,數(shù)據(jù)總線寬度為8 b。
2 軟件設(shè)計
2.1 軟件初始化
系統(tǒng)軟件初始化包括STM32F103初始化、UCGUI初始化和RA8806控制器初始化,在STM32F103初始化中FSMC的配置為:
在RA8806控制器中,觸摸屏有自動模式和手動模式兩種,自動模式和手動模式中,都可以通過觸碰產(chǎn)生中斷讀取觸碰坐標(biāo)值,手動模式還可以通過輪詢觸碰事件讀取坐標(biāo),在實驗中采用的是手動模式中的輪詢方式,這種方式的流程圖如圖2所示。在初始化RA8806時,寄存器TPCR1,TPCR2,INTR須按流程圖設(shè)置,DWWR=AWRR=0x27,DWHR=AWBR=0xEF,其他寄存器默認(rèn)設(shè)置。
2.2 觸摸屏坐標(biāo)
觸摸屏的坐標(biāo)分為邏輯坐標(biāo)和物理坐標(biāo),邏輯坐標(biāo)為用戶觸摸是手指所點擊屏幕的坐標(biāo),物理坐標(biāo)為觸摸屏顯示的實際坐標(biāo),邏輯坐標(biāo)和物理坐標(biāo)比較接近,如果相差太多就需要校準(zhǔn)。
RA8806是通過一個10位的A/D轉(zhuǎn)換器連接4線電阻式觸摸屏,用戶觸摸后產(chǎn)生的邏輯坐標(biāo)存于TPXR,TPYR和TPZR 3個寄存器中,TPXR中存放了x軸坐標(biāo)的高8位,TPYR中存放了y軸坐標(biāo)的高8位,TPZR的bit[1:0]是x軸的低二位,bit[3:2]是y軸的低二位。
為了便于處理邏輯坐標(biāo),將TPXR和TPYR寄存器的數(shù)據(jù)左移2位進行計算,再分別取出TPZR寄存器中的低二位進行或運算,得出x,y軸的坐標(biāo)。這個邏輯坐標(biāo)不能直接顯示,需要進行校準(zhǔn)處理后根據(jù)觸摸屏的大小轉(zhuǎn)換為物理坐標(biāo)顯示,設(shè)計程序如下:
如果用戶觸摸的范圍超出了設(shè)定的顯示窗口,就需要對邏輯坐標(biāo)(x,y)進行判斷,如果超出了范圍,邏輯坐標(biāo)無效,就將鼠標(biāo)設(shè)置到對應(yīng)的邊緣,反之邏輯坐標(biāo)有效。
2.3 觸摸屏校準(zhǔn)
由于觸摸屏自身的性能不好,或使用一段時間后會發(fā)現(xiàn)邏輯坐標(biāo)和物理坐標(biāo)的偏差越來越大,坐標(biāo)不準(zhǔn)造成誤操作影響用戶使用,這樣就要通過校準(zhǔn)程序來減少誤差。電阻式觸摸屏的電壓成線性均勻分布,假設(shè)觸摸屏上一點的邏輯坐標(biāo)為(xA,yA),對應(yīng)的物理坐標(biāo)為(xDA,yDA),由電阻式觸摸屏的線性特性可知,任意一點B的邏輯坐標(biāo)可以用下面公式表示:
只需在觸摸屏上取3個物理坐標(biāo)已知的點A,B,C,這3個點應(yīng)該分布均勻不靠近邊緣以免不準(zhǔn)確,通過讀取TPXR,TPYR,TPZR寄存器讀出邏輯坐標(biāo)求出Kx,Ky,求出Kx,Ky后由式(1)校準(zhǔn)邏輯坐標(biāo)與物理坐標(biāo),圖3(a)為校準(zhǔn)的界面,圖3(b)為校準(zhǔn)后計算的Kx,Ky,由圖可以看出兩個系數(shù)都接近于1,說明觸摸屏的坐標(biāo)誤差比較小。
3 結(jié)語
RA8806控制器在軟件設(shè)計上方便、靈活,能滿足開發(fā)人員對中等尺寸觸摸屏控制器的要求,豐富的功能和較高的性價比使RA8806控制器的LCD在市場上有很大的優(yōu)勢,基于RA8806的觸摸屏與STM32嵌入式系統(tǒng)通過數(shù)據(jù)總線方式相結(jié)合,可以構(gòu)造出理想的人機交互界面,具有廣闊的應(yīng)用領(lǐng)域。