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