隨著現代電子產品設計技術的不斷發展,電子產品的設計,尤其是人機交互界面的設計越來越趨向于人性化。觸摸屏憑借其獨特的操作特性,應用日益廣泛,它配合微控制器使用,能使嵌入式設備或手持式設備具有更加良好的人機交互界面,操作更加方便快捷。本文給出了一個基于C8051F021單片機和ADS7846 觸摸屏控制器的觸摸屏控制系統的設計方法。 1 觸摸屏工作原理 觸摸屏有電阻式、電容式、紅外線式、表面聲波式等多種。其中電阻式觸摸屏是目前應用較為廣泛的一種,可分為四線、五線、七線等幾類。其中四線制電阻式觸摸屏采用的是四線電阻模擬量技術,即兩個阻性層工作時,每層均加有5 V恒定電壓,一個豎直方向,一個水平方向,含四根導線;其特點主要是傳輸反應快,解析度高,穩定性好,一次校正,不易漂移,比較適合于工業控制領域,但使用時要注意防止外導電層被劃傷。 電阻式觸摸屏實際上是一種傳感器,它采用分壓器原理將矩形區域中的觸摸點(X,Y)的物理位置轉換為代表X坐標和Y坐標的電壓,圖1所示是其原理圖。四線制觸摸屏一般包含兩個阻性層:其中一層在屏幕的左右邊緣各有一條垂直總線,而另一層在屏幕的底部和頂部各有一條水平總線。為了在X軸方向進行測量,可將左側總線偏置為0 V,右側總線偏置為VREF,并將頂部或底部總線連接到ADC,這樣,當兩個阻性層相接觸時(即有觸摸時)即可作一次測量;為了在Y軸方向進行測量,可將底部總線偏置為0 V,頂部總線偏置為VREF,并將左側或右側總線連接到ADC,這樣,當兩個阻性層相接觸時,即可對電壓進行測量;該屏最理想的連接方法是將偏置為 VREF職的總線接在ADC的正參考輸入端,而將偏置為OV的總線接在ADC的負參考輸入端。 2 系統的硬件設計與實現 2.1 C8051F021的主要功能特點 本系統選用性能優良且成本較低的SOC單片機C8051F021作為控制核心。它是完全集成的混合信號系統級MCU芯片,具有32個數字I/O引腳。其主要的內部資源有8通道12位ADC,2通道12位DAC,4 KB的RAM,64 KB的FLASH,以及硬件實現的SPI、SMBus/I2C和兩個UART串行接口,同時帶有時鐘振蕩器,看門狗定時器,VDD監視器,溫度傳感器等。其所有模擬和數字外設均可由IDE軟件使能/禁止和配置。同時,它還采用了與8051兼容的CIP-51微控制器內核,因采用流水線結構,其指令執行速度有了很大的提高。此外,C8051F021還配置了標準的JTAG接口,在IDE軟件的支持下,可對安裝在最終產品上的MCU進行非侵入式、全速、在系統調試。該器件的封裝為TQFP-64,可在工業溫度范圍內(-45℃"+85℃)使用2.7"3.6 V的電壓工作。 2.2 ADS7846的主要功能和特點 ADS7846是BB公司生產的一種四線制觸摸屏控制器。可廣泛應用在電阻式觸摸屏系統中。ADS7846的核心是一個具有采樣和保持功能的12位逐次逼近式A/D轉換器,其轉換速率可達125kHz.且分辨率可編程為8位或12位。該器件不僅具有X、Y坐標測量功能,還具有電池電壓、芯片溫度、觸摸壓力和外模擬量4種測量功能,其工作方式可由控制字決定,片內的6選1模擬多路開關可根據微控制器送來的命令字來選擇6個電壓量之一(X+、Y+、Y-、 VBAT、TEMP、AUX-IN),并將其送入A/D轉換器轉換,然后再通過SPI接口將轉換值送入微控制器。此外,ADS7846還集成有觸摸識別電路,當檢測到有觸摸時,該電路會在PENIRQ(筆中斷)引腳輸出一個低電平信號,并以該信號向微控制器提出測量觸點坐標的中斷請求。該芯片采用單電源供電,工作電壓為2.2"5.25 V,且內部自帶+2.5 V的參考電壓。 2.3 C8051F021和ADS7846的硬件接口 基于C8051F021單片機和ADS7846觸摸屏控制器的觸摸屏控制系統的硬件接口電路如圖2所示。 圖2中。TX+、TX-、TY+、TY-為位置輸入端,分別對應四線制電阻式觸摸屏的四線制接口: BUSY為忙信號指示,可在數據轉換時持續一個時鐘周期的高電平狀態,當TCS為高時,BUSY為高阻狀態: TCS為片選輸入,只有當TCS為低時,串行數據才可以從DIN讀入; DIN為串行數據輸入,在DCLK的上升沿讀入數據; DOUT為串行數據輸出,用于輸出轉換后的觸摸點位置數據,12位工作方式下,其最大為4095,可在DCLK的下降沿輸出數據,當TCS為高時,DOUT為高阻狀態; DCLK為外部時鐘輸人引腳,其輸入時鐘信號的頻率決定了電路的轉換速度,其推薦占空比為40%~60%; PENIRQ為筆中斷引腳。工作時應通過10~100 kΩ電阻器上拉,當有觸摸事件發生時,可向微控制器申請中斷服務; VREF為A/D參考電壓輸入; TCS、DCLK、 DIN、 BUSY、DOUT、PENIRQ分別接C8051F021的P1.0、P1.1、P1.2、P1.3、P1.4、PO.3。另外,IN3、IN4為兩個附屬A/D輸入通道,本系統沒有用到,使用時可將其接地。 3 系統軟件的設計與實現 ADS7846可通過片內模擬多路開關的切換,將X+/Y+端接VCC,將X-/Y-端接地,并將X+/Y+和X-/Y-以差分形式接到A/D轉換器的輸入端。這樣,當點擊觸摸屏的不同位置時,輸入到A/D轉換器中的電壓就不相同,然后再經A/D轉換后,就可得到觸點的輸出值,該輸出值與觸點的位置成近似線性關系。ADS7846通過一般控制字來設置工作方式,其控制字如表1所列。 在表1中,S為數據傳輸起始標志位,該位必為“1”;A2~A0用于通道選擇;MODE用來選擇A/D轉換精度: “1”選擇8位, “0”選擇12位;SER/DFR選擇參考電壓的輸入模式;PD1、PD0選擇省電模式: “00”為省電模式,可在兩次A/D轉換之間掉電,且允許中斷,而“01”同“00”相似,但不允許中斷; “10”為保留; “11”為禁止省電模式。 ADS7846與C8051F021之間通過標準的SPI接口相連。并由C8051F021啟動3次SPI傳送來完成轉換。第1次SPI傳送由 C8051F021向ADS7846發送控制字,含起始位、通道選擇、8/12位模式選擇、差分/單端選擇和掉電模式選擇;后兩次SPI傳送則是 C8051F021讀取A/D轉換后的結果數據,至此便完成了ADS7846和C8051F021之間的一次通信。其數據傳送時序如圖3所示。 本系統中的觸摸屏應用流程圖如圖4所示。 在編程過程中,通常應該注意以下問題: (1) C8051F021的初始化,一般還會包括顯示模塊的初始化等; (2)DS7846的初始化,一般包括寄存器和筆中斷的初始化等; (3)防止抖動和連擊,通常需要加入消抖子程序和延時子程序; (4)減小測量誤差,往往應采用多次測量并加入軟件濾波子程序; (5)觸摸屏與液晶屏的坐標系不一致,還必須加入坐標變換子程序。 4 結束語 本文給出了一個基于C8051F021單片機和ADS7846觸摸屏控制器的觸摸屏控制系統的設計方法。討論了在觸摸屏控制系統開發過程中的若干軟、硬件問題。在工程實際中,本系統經過多次測試,效果良好。 |