基于C8051F020的觸摸屏驅(qū)動控制
目前觸摸屏和液晶屏已成為嵌入式計算機系統(tǒng)常用的輸入輸出設(shè)備。觸摸屏分為電阻、電容、表面聲波、紅外線掃描和矢量壓力傳感式觸摸屏,其中使用最多的是四線或五線電阻式觸摸屏。TSC2046為四線電阻式觸摸屏控制器,以其低功耗和高速率
等特性廣泛應(yīng)用于電池供電的小型手持設(shè)備。
C8G051Fxxx系列單片機是完全集成的混合信號系統(tǒng)級器件,峰值速率達25 MI/s。片內(nèi)集成ADC和DAC;SMBus/I2C、UART、SPI接口:可編程計數(shù)器/定時器陣列;64個I/O端口(P0~P7);內(nèi)部具有JTAG和調(diào)試電路,支持在系統(tǒng)調(diào)試。本文介紹了利用該系列單片機C8051F020、TSC2046和液晶屏實現(xiàn)人機互動接口。
2 觸摸屏工作原理
觸摸屏控制器相當(dāng)于觸摸屏體與微控制器間的接口。觸摸屏體是一個4層的復(fù)合薄膜,附著在顯示器表面與顯示器配合使用。圖1為觸摸屏外部結(jié)構(gòu)。每一導(dǎo)電層為觸摸屏的一個工作面,每個工作面的兩端各涂一條銀膠,稱為該工作面的一對兒電極,分別稱為X電極對和Y電極對。當(dāng)觸摸屏控制器同X電極對施加一確定電壓,而不向Y電極對施加電壓時,X電極對的工作面會形成均勻連續(xù)的平行電壓場,如圖2(a)所示。當(dāng)手指或觸筆觸及觸摸屏?xí)r,觸點電壓則反映觸點在Y工作面的位置,將該電壓量通過Y+(或Y-)電極引至觸摸屏控制器,經(jīng)過A/D轉(zhuǎn)換,便可得到觸點電壓的數(shù)字量,即Y坐標(biāo)。同理,向Y電極對上施加電壓,以X+(或X-)為測量電極,便可得到X坐標(biāo)。微控制器根據(jù)觸點坐標(biāo)位置以及對應(yīng)坐標(biāo)位置顯示內(nèi)容,便可得知觸摸者的意圖。
3 TSC2046的工作模式和控制字
TSC2046可設(shè)置為8位或12位工作模式,輸入方式為差分輸入和單端輸入,本文以12位差分輸入模式進行說明。表1為TSC22046的控制字。
其中S為數(shù)據(jù)傳輸起始標(biāo)志位,該位恒為“1”。A2~A0用于通道選擇,決定觸摸屏體輸出模擬電壓從TSC2046的哪個引腳輸入。MODE用于選擇A/D轉(zhuǎn)換的精度,當(dāng)為1時選擇8位;當(dāng)為0時選擇12位。在12位工作模式下,其二進制結(jié)果的最低位表示模擬電壓為參考電壓(TSC2046引腳+VCC與GND的壓差)的1/4 096。SER/DFR可用于選擇輸入模式,SER選擇單端模式,DFR選擇差分模式。PD1、PD0用于選擇省電模式。圖3為差分輸入模式下的示意圖。表2是差分模式輸入配置。差分模式是一種比率度量轉(zhuǎn)換方式,加在觸摸屏體電極上的電壓為TSC2046引腳+VCC與GND之間的電壓,轉(zhuǎn)換結(jié)果是觸摸屏上分布電阻值的百分比。
4 典型應(yīng)用
4.1 接口電路
TSC2046與C8051F020的電路連接圖如圖4所示。觸摸屏體兩對兒電極通過J2接至TSC2046的四個電極。為了增強驅(qū)動能力,TSC2046與C8051F020的連線均通過一只10 kΩ的上拉電阻拉至5 V,采用SPI接口通信,相關(guān)引腳對應(yīng)關(guān)系:TSDIN-數(shù)據(jù)輸入、TSBUSY-忙信號、TSINT-筆中斷信號、TSDDOUT一數(shù)據(jù)輸出、TSDCLK一時鐘信號、TSCS一片選信號。TSC2046與C8051F020連接時,由于TSINT引腳接收TSC2046發(fā)送的中斷信號,因此配置C8051F020時,TSINT引腳通過交叉開關(guān)配置為外部中斷引腳。否則只能通過查詢TSINT引腳的電平狀態(tài)判斷是否有觸摸事件。為了減少干擾,在X+、X-、Y+、Y-四個輸入端都應(yīng)接一只旁路電容,數(shù)據(jù)線要盡量短。
4.2 程序設(shè)計
TSC2046的驅(qū)動程序遵循標(biāo)準(zhǔn)的SPI協(xié)議實現(xiàn)與微控制器的通信。當(dāng)觸摸屏按下時(即有觸摸事件發(fā)生),則TSC2046通過筆中斷引腳(TSINT)向微控制器發(fā)送中斷請求,微控制器接收請求后,延時30 ms,再響應(yīng)其請求,目的是消除抖動使采樣更準(zhǔn)確。如果一次采樣不準(zhǔn)確,可多次采樣并取最后一次結(jié)果。TSC2046驅(qū)動程序的流程如圖5所示。圖6為A/D轉(zhuǎn)換時序(一次轉(zhuǎn)換需16個時鐘信號)。
根據(jù)時序圖,采用12位輸出結(jié)果方式取讀TSC2046子函數(shù)代碼如下:
以上為驅(qū)動程序中一個典型子函數(shù),其余子函數(shù)與之類似。需要注意的是:完成一次轉(zhuǎn)換需16個時鐘信號,輸出卻為12位數(shù)據(jù),因此應(yīng)加補4個空閑時鐘信號,使之達到16個時鐘信號,才能得到正確的A/D轉(zhuǎn)換結(jié)果。否則,TSC2046與C8051F020無法同步,則無數(shù)據(jù)輸出。此外,TSC2046的控制字發(fā)送完成,需禁止SPI通信,直到A/D轉(zhuǎn)換結(jié)束,以免數(shù)字信號對模擬電壓產(chǎn)生干擾。該觸摸屏已應(yīng)用于某醫(yī)療設(shè)備的輸入輸出系統(tǒng),反應(yīng)良好。
評論