張鵬
(漢中職業技術學院汽車與機電工程學院,陜西漢中,723002)
觸摸屏(touch screen)又稱為觸控屏或觸控板,是一種便于接收觸頭等輸入信號的感應式液晶顯示設備,當接觸到液晶顯示屏幕時,屏幕上的觸覺信號反饋系統就會根據預先編寫的算法程序驅動各種外接設備,用以代替常規機械式的手動按鈕面板,同時,借用液晶顯示畫面顯示出形象生動的視覺效果。S3C2410觸摸屏是一種傳統的電阻式觸摸屏,它使用帶統一電阻外表面的玻璃板,在玻璃板上緊貼一層聚醋表層,通過小的透明絕緣顆粒與玻璃面分開的電子設備,其中,在聚醋表層外表面無其他表層,而內表面有一層信號傳導層。
當液晶屏幕被觸摸操作時,上層傳導層與下層玻璃面表層進行電子信號傳遞。當觸摸屏被觸摸按下時,首先電子信號導通MOS管組Q1和Q3,X+與X-回路外加+5V電壓后,再將MOS管組Q2和Q4關閉,斷開Y+和Y-,然后啟動處理器的A/D模數轉換,電路電阻與觸摸屏被按下產生了電阻產生輸出分量電壓,并經過A/D模數轉換器將電壓值轉換為數值,計算出X軸的具體坐標。同理,接著導通MOS管組Q2和Q4,Y+與Y-回路外加+5V電壓,再將MOS管組Q1和Q3關閉,斷開X+和X-,然后啟動處理器的A/D模數轉換通道1,電路電阻與觸摸屏被按下產生了電阻輸出分量電壓,并經過A/D轉換器將電壓值轉換為數值,計算出Y軸的具體坐標。
基本轉換模式(AUTO_PST=0,XY_PST=0)是用作基本情況下的ADC信號轉換。該模式通過對寄存器ADCCON和ADCTSC配置進行對AD操作的初始化,而XPDATA域值的轉換是通過讀取ADCDAT0(ADC數據寄存器0)來完成。
X軸坐標的轉換操作(AUTO_PST=0且XY_PST=1)是將X軸坐標轉換數值寫入到寄存器ADCDAT0的XPDATA域,轉換結束后,觸摸屏接口將觸摸產生的中斷源(INT_ADC)傳輸到中斷控制器中操作。同理,Y軸坐標的轉換操作(AUTO_PST=0且XY_PST=2)即將Y軸坐標轉換數值寫入到寄存器ADCDAT1的YPDATA域,轉換結束后,觸摸屏接口將觸摸產生的中斷源(INT_ADC)傳輸到中斷控制器。
X/Y軸坐標(連續)轉換模式(AUTO_PST=1且XY_PST=0)具體操作如下:
首先,觸摸屏控制器將主動地切換X軸、Y軸坐標并讀取兩個坐標軸上的坐標值,然后將測量得到的X軸數據值寫入到寄存器ADCDAT0的XPDATA域,將測量到的Y軸數據值到寄存器ADCDAT1的YPDATA域,最后,當連續進行轉換結束后,觸摸屏控制器產生中斷源(INT_ADC)到中斷控制器。
當觸摸筆未觸碰到觸摸屏時,觸摸屏控制器就自動進入等待中斷模式。當觸摸筆點擊到觸摸屏時,控制器立刻產生中斷信號(INC_TC),結束等待中斷,并通過設置適當的轉換模式(X/Y軸坐標分離轉換模式或X/Y軸坐標連續轉換模式)來讀取X和Y的具體位置。
當寄存器ADCCON的STDBM位被置1時,靜態模式被激活。在該模式下,A/D轉換操作停止,寄存器ADCDAT0的XPDATA域和寄存器ADCDAT1的YPDATA域保持著先前X/Y轉換所得的值不變。
(1)ADCCON,主要用到ECFLG[15]查詢AD轉換是否結束,READ_START[1] AD轉換通過讀取是否開始,用來控制AD轉換器的工作方式。
(2)ADCTSC,主要作用是控制觸摸屏的工作方式。
(3)ADCDLY,設置AD轉換開始的延遲值。
(4)ADCDAT0,用來存儲X坐標、Y坐標轉換模式采集到的X軸坐標值及Y軸坐標值。
(1)觸摸屏LCD初始化,用來初始化觸摸屏工作模式,本設計中操作LCD顯示4個不同顏色矩形,用以判斷驅動程序執行效果。當開始觸摸操作前,觸摸屏處于等待中斷模式,用來響應感應外部信號。
(2)判斷在LCD顯示屏上是否有觸摸按下,即為觸摸查詢,在查詢過程中,判斷ADCDAT寄存器15位的值,判斷是否抬起或按下,判斷是否需要進行AD轉換或者開始新的轉換值采集,如沒有觸摸按下,加入延時,繼續等待,繼續判斷。
(3)當在LCD顯示屏上有觸摸按下時,進入中斷,讀取觸摸點X、Y位置。此時應用AD采樣電壓值轉換為LCD物理點坐標值,只有轉化成為對應的LCD物理點坐標后,X,Y坐標值才能用來判斷LCD上的觸摸點選擇圖形位置。
(4)同時,在觸摸點操作中,為避免操作中的抖動,設計中加入去抖動程序,修正采樣值得到最優LCD點坐標。
注:觸摸屏驅動程序設計流程如圖1所示。

圖1 觸摸屏驅動程序設計流程圖
本設計使用ADS軟件進行內核信息設置,ADS是命令行開發的一種內核配置工具,它由ARM時實庫,圖形用戶接口開發環境,實用程序和支持軟件組成。
在使用ADS軟件時,配置正確的內核信息和預期希望得到的編譯代碼信息。具體操作:①打開ADS軟件,新建工程,點擊New按鈕,在下一級界面中,選擇ARM Executable Image,并輸入工程名和要保存工程的位置。②將建立的工程打開,在生成的工程中選擇Debug操作選項。③接下來點擊Edit—Debug Settings,在設置界面進行設置,修改Postlinker,選擇CPU核,然后進行RO、RW及地址的修改,修改Image entry point(入口文件程序),修改Ourput format、Output file name(輸出文件的名稱),這里就完成了ADS的參數設置,下一步只需要將要加載的程序加入工程中,就可以編譯出能用的映像文件進行調試。
在調試時,鏈接正確的Jlink口驅動和完整的ADS程序,生成可用的映像文件,其中輸出段(output section)必須包含了一系列具有相同的RO,RW或ZI屬性的輸入段。同時,在一個映像文件中,一個域包含了1至3個輸出段,將多個域組織在一起,就構成了最終的映像文件。
經過多次調試,本設計最終得到如圖2、圖3效果。

圖2 效果圖

圖3 效果圖
圖2是程序運行后,初始化時LCD顯示圖,圖3是點擊圖中藍色區域顯示子界面,其可以自動返回主界面繼續執行觸摸任務。
本文完成了基于S3C2410觸摸屏驅動程序的設計,讓人們對觸摸屏驅動設計的相關技術有了更多的了解。當前人民的生活早已離不開各類電子產品,智能化、工業化已全面覆蓋,本文對其他電子產品驅動程序的設計很大的幫助,為滿足用戶,兼容各類驅動程序的開發提供了新的思路。