觸控螢幕驅動程式設計

2021-07-04 21:35:32 字數 2452 閱讀 2259

觸控螢幕作為一種輸入裝置,是目前最簡單、方便的一種人機互動方式,具有堅固耐用、反應速度快、節省空間、易於交流等優點。從技術原理來分,觸控螢幕可以分為以下幾類:

①電阻式觸控螢幕

②電容式觸控螢幕

③紅外線技術觸控螢幕

④表面聲波技術觸控螢幕

⑤向量壓力感測技術觸控螢幕

常用的有電阻式觸控螢幕和電容式觸控螢幕。

電阻觸控螢幕結構圖為:

電阻觸控螢幕是一塊4層的透明的復合薄膜屏,觸控螢幕由兩層塑料薄膜組成,各薄膜層上均塗有一層導電金屬(通常是氧化銦錫),中間的空氣間隙將二者分開。如上圖所示,外面兩層白色的,上面為軟薄膜,下面白色為玻璃基板,中間兩層分別為x、y兩個透明電極層。由上圖可知,電阻觸控螢幕在最上面的觸控螢幕是軟的,所以也稱為軟屏(相對於電容觸控螢幕為硬屏)。

計算x,y觸點的座標分為兩步:

①計算y座標:在y+端施加驅動電壓vdd,y-端接地,x+作為引出端測量得到的觸點電壓。由於電極層均勻導電,觸點電壓域vdd電壓之比相當於觸點y座標與屏高度之比。

②計算x座標:在x+端施加驅動電壓vdd,x-端接地,y+作為引出端測量得到的觸點電壓。由於電極層均勻導電,觸點電壓域vdd電壓之比相當於觸點x座標與屏寬度之比。

相比於電阻屏,電容屏的優點是感應靈敏,支援多點觸控,更適合現代產品的要求。電容屏是利用人體的電流感應進行工作的。電容式觸控螢幕是一塊四層復合玻璃屏,玻璃屏的內表面和夾層各塗有一層ito,最外層是一薄層矽土玻璃保護層,夾層ito塗層作為工作面,四個角上引出四個電極,內層ito為遮蔽層以保證良好的工作環境。當手指觸控在金屬層上時,由於人體電場,使用者和觸控螢幕表面形成乙個耦合電容,對於高頻電流來說,電容是直接導體,於是手指從接觸點吸走乙個很小的電流。這個電流分從觸控螢幕的四角上的電極中流出,並且流經這四個電極的電流與手指到四角的距離成正比,控制器通過對這四個電流比例的精確計算,得出觸控點的位置。

驅動程式的設計步驟如下:

其中s3c2440支援的觸控螢幕中斷模式有兩種,一種是tc中斷,即按下產生中斷,一種是adc中斷,即完成ad轉換後產生中斷,這裡採用的是tc中斷。**如下:

int xdata,ydata;

#define adccon (*(volatile unsigned *)0x58000000) //adc control

#define adctsc (*(volatile unsigned *)0x58000004) //adc touch screen control

#define adcdly (*(volatile unsigned *)0x58000008) //adc start or interval delay

#define adcdat0 (*(volatile unsigned *)0x5800000c) //adc conversion data 0

#define adcdat1 (*(volatile unsigned *)0x58000010) //adc conversion data 1

/*interrupt registes*/

#define srcpnd (*(volatile unsigned long *)0x4a000000)

#define intmsk (*(volatile unsigned long *)0x4a000008)

#define intoffset (*(volatile unsigned long *)0x4a000014)

#define subsrcpnd (*(volatile unsigned long *)0x4a000018)

#define intsubmsk (*(volatile unsigned long *)0x4a00001c)

#define intpnd (*(volatile unsigned long *)0x4a000010)

void ts_init()

void tc_handler()

//6. 清除彈起中斷

subsrcpnd |= (1

<<9);

srcpnd = (1

<<31);

intpnd = (1

<<31);

printf("x is %d,y is %d\n",xdata,ydata);

//7. 再次進入等待按下中斷的狀態

adctsc = 0xd3;

}

完成以上設定後還需要在中斷判斷中新增中斷源判斷,使程式遇到觸控螢幕中斷時能判斷出該中斷是觸控螢幕的中斷,並跳轉到void tc_handler()執行**。

Linux 觸控螢幕驅動程式設計

一 輸入子系統模型解析 1.為什麼需要輸入子系統 完成乙個裝置驅動基本上需要三步 1.註冊乙個字元裝置模型 2.open 或者read對使用者程式的操作 3.對不同的硬體裝置進行操作 但這時候為求方便發現了乙個不同硬體的共性 所以引進了輸入子系統的概念 2.輸入子系統模型的概述 3.輸入子系統模型的...

觸控螢幕驅動

輸入子系統體系 核心層 linux dir drivers input input.c 提供最核心函式 裝置事件層 linux dir drivers input evdev.c 提供handler 提供輸入裝置產生的原始資料並上報給應用程式,這適用於 所有輸入裝置,該觸控螢幕也不例外 編寫基於輸入...

QT 觸控螢幕 驅動

要 本文主要介紹了在嵌入式 linux 系統下基於 qt embeded 的觸控螢幕驅動的設計,通過對 linux 裝置 驅動和qt embedded裝置驅動介面的工作原理和機制介紹,並結合大量源 進行分析,提出了基於qt embeded 的觸控螢幕驅動的開發方案。linux 下的裝置驅動基礎 li...