基于W77E58的LCD控制及觸摸屏接口設(shè)計
摘要: 提出了一種用8位單片機控制16位帶觸摸屏的LCD的設(shè)計方法。TFT- LCD 模塊T32QM 6450是一種點陣型LCD, 文中介紹了該模塊以及觸摸屏控制器ADS7843 的基本功能和工作原理。給出了W 77E58、T32QM6450 及ADS7843之間的接口設(shè)計方法, 研究了實現(xiàn)字符、漢字、畫面顯示及屏幕滾動的編程方法, 并給出了實現(xiàn)部分功能的通用子程序。
0 引言
隨著嵌入式系統(tǒng)的廣泛應用, 出現(xiàn)了大量的16位和32位的嵌入式處理器。而傳統(tǒng)的8位單片機長期用于生產(chǎn)實踐, 制造工藝成熟、性能更加可靠, 仍然占有相當大的市場, 特別是在汽車電子等對可靠性要求極高的領(lǐng)域。液晶顯示位模塊具有顯示信息量豐富、功耗低、體積小、質(zhì)量輕、無輻射等優(yōu)點。
觸摸屏作為一種特殊的計算機外設(shè), 是目前最自然、便利的一種人機交互方式。T32QM 6450液晶顯示模塊是帶有觸摸屏功能TFT 型彩色LCD顯示屏, 分辨率為240×320, 支持2.6 ×105色顯示。其功能強, 使用方便, 接口簡單, 具有豐富的專用控制指令, 可方便地實現(xiàn)畫面滾動顯示及觸摸屏等功能。
1 T32QM6450液晶模塊結(jié)構(gòu)
T32QM 6450是液晶模塊, 主要由TFT - LCD 顯示器、LED背光燈、觸摸屏、源極驅(qū)動IC IS2102和柵極驅(qū)動IC IS2202構(gòu)成, 其中Source Driver負責提供列上各色素點的驅(qū)動電壓, 而Ga te Driver控制每行像素的選通狀態(tài)。TFT液晶的每個像素點都是由集成在像素點后面的薄膜晶體管來驅(qū)動, 從而可以做到高速度、高亮度、高對比度顯示屏幕信息, 可以精確控制顯示灰度, LCD通過總線與處理器連接, 實現(xiàn)數(shù)據(jù)和指令的傳遞。
2 T32QM6450與W77E58接口電路
硬件連接如圖1所示。處理器芯片選用W77E58.該芯片是一個快速8051兼容微控制器, 其內(nèi)核經(jīng)過重新設(shè)計, 提高了時鐘速度和存儲器訪問周期速度。它的指令集基本與8051相同, 多了一條DEC DPTR指令。8051每12個時鐘周期為一個機器周期, 而W77E58每4個時鐘周期為一個機器周期, 提高了指令執(zhí)行速度。另外, W77E58 還可調(diào)整MOVX 指令的周期,范圍為2~ 9個機器周期, 這種設(shè)計使W77E58能夠更有效訪問慢速或快速外部RAM 及外設(shè)。
圖1 液晶屏與W77E58硬件連接電路
因為W77E58是高速8 位單片機, 而該LCD模塊采用16位總線接口, 所以電路中用了2 片鎖存器74HC573, 用P24~P27口分別控制2片鎖存器的鎖存使能和輸出使能引腳LE (下降沿鎖存) 、OE (低電平有效), 先給第一片74HC573的LE一個高電平, 通過P1口傳送低8 位數(shù)據(jù), 然后給該片的LE 低電平鎖存當前數(shù)據(jù); 給第二片的LE 高電平, 同樣通過P1口傳送高8位數(shù)據(jù)并鎖存, 最后同時給2片74H C573的OE低電平, 即可實現(xiàn)16位數(shù)據(jù)的傳送。
該系統(tǒng)是混合電壓系統(tǒng), 液晶模塊和ADS7843用3.3 V 供電, 而處理器和鎖存器是5 V 供電, 這2部分是不能直接相連的。所以還要處理好電平的轉(zhuǎn)換問題, 電路中用4 片雙向電平轉(zhuǎn)換芯片74LVC4245, 它可以實現(xiàn)3.3 V和5 V的相互轉(zhuǎn)換。
為實現(xiàn)觸摸屏功能, 電路中用1 片觸摸屏控制器ADS7843.它是電阻式觸摸屏控制芯片, 具備串行12 位A /D轉(zhuǎn)換功能, 在關(guān)閉模式下, 功耗僅為0.5uW, 在12 V、125 kH z的工作模式下功耗為750 uW3. 文中僅結(jié)合電路對主要功能加以介紹。CS是芯片選通端; DCLK 是時鐘輸入端, 由P20 腳軟件模擬時鐘信號輸入; DIN 是數(shù)據(jù)串行輸入端, 控制數(shù)據(jù)通過該引腳輸入; X+ 、Y + 、X- 、Y - 是接觸點坐標數(shù)據(jù)輸入端; INT是中斷引腳, 用于通知MCU 有觸摸事件發(fā)生, DOUT 將轉(zhuǎn)換后的觸摸位置數(shù)據(jù)串行輸出到MCU。
[!--empirenews.page--]
3 LCD 顯示的程序設(shè)計
3. 1 指令、數(shù)據(jù)的讀寫
通過對LCD模塊的RS引腳設(shè)置1或0 值, 即可實現(xiàn)處理器和LCD之間數(shù)據(jù)或指令的傳送。當設(shè)定RS= 1, 傳遞的是數(shù)據(jù)信號; 設(shè)定RS= 0, 傳遞的是指令信號, 模塊的D8~ D15端口接收到的數(shù)據(jù)(即高8位)代表寄存器號, D0~ D7接收到的是控制指令。部分子程序如下:
3. 2 字符、漢字及顏色的顯示
可調(diào)用以上子程序方便地向LCD模塊發(fā)送控制命令和顏色信息。T32QM 6450模塊共有158 個寄存器, 通過調(diào)用WriCom 函數(shù)可向相關(guān)寄存器寫入控制命令, 然后調(diào)用WriData寫入2字節(jié)的顏色信息, 其RGB格式為: 紅色為高5位( B it15~B it11), 綠色為中間6位( B it10~ B it5), 藍色為低5位( B it4~B it0)。經(jīng)以上操作, 即可在指定位置或區(qū)域顯示色彩、字符、圖象等。如要在屏上坐標為(X, Y) 的點以顏色Co lo r顯示一個字符或漢字, 只要知道其點陣數(shù)組, 在每個要顯示的點調(diào)用W r iDa ta(Color)即可。圖片的顯示原理類似, 用轉(zhuǎn)換工具將圖片轉(zhuǎn)換成C格式的數(shù)組文件即可。下例為顯示字符的程序:
[!--empirenews.page--]
3. 3 滾動顯示畫面
要實現(xiàn)指定區(qū)域的畫面的滾動顯示效果, 可以通過設(shè)置寄存器R75~ R80實現(xiàn), 其中寄存器R75、R76用于設(shè)置滾動區(qū)域的起始行; R77、R78設(shè)置畫面的范圍, 即要滾動顯示的行數(shù);R79、R80設(shè)置每次滾動的行數(shù), 即步長。要注意的是, 步長的設(shè)置并不是一勞永逸的, 因為這里的步長是相對于滾屏初始化設(shè)置時的狀態(tài)而言的, 并非相對于上一次滾屏動作而言。圖2舉例說明了滾屏的設(shè)置及演示效果。
圖2 滾屏的設(shè)置及過程演示
圖2所示過程的C程序如下:
如果按照上述程序調(diào)試, 則畫面滾動較快, 效果不明顯。
實際應用時, 可以結(jié)合定時器, 每隔一定時間改變一次寄存器R79、R80的值, 一般是按遞增的等差數(shù)列賦值,可以獲得很好的視覺效果。所賦最大值不能超過319, 因為屏幕最大只有320行; 當所賦值為319, 并且R75、R76所賦值為0時, 可實現(xiàn)全屏畫面的滾動顯示。
4 結(jié)束語
該顯示系統(tǒng)調(diào)試完成后, 通過串口和GPS 模塊連接, 可以實時顯示經(jīng)度、緯度、時間等信號, 顯示效果良好。文中給出的子程序的形參多為2 字節(jié)的整型值, 可直接用于16位、32位單片機, 兼容性強, 為其在便攜式系統(tǒng)中的應用提供了一種方法。