1 引言
不同的應(yīng)用領(lǐng)域觸摸屏的設(shè)計(jì)方式也各不相同,,一般有以下三種:⑴應(yīng)用觸摸屏模塊,。觸摸屏模塊提供標(biāo)準(zhǔn)的硬件接口與應(yīng)用系統(tǒng)(一般為PC或X86架構(gòu)的工控機(jī))相連,安裝驅(qū)動(dòng)程序后即可工作,,基本無需開發(fā);⑵擴(kuò)展觸摸屏控制器,。這是嵌入式系統(tǒng)中設(shè)計(jì)觸摸屏普遍使用的方法,常用的觸摸屏控制芯片有ADS7843,、ADS7846等,,這些芯片內(nèi)部集成了A/D轉(zhuǎn)換器和觸摸屏的驅(qū)動(dòng)電路,同時(shí)要設(shè)計(jì)一定的軟件;⑶與前面方式⑵相仿,,有些處理器集成了A/D轉(zhuǎn)換器,,通過IO口模擬觸摸屏的驅(qū)動(dòng)信號(hào)也可實(shí)現(xiàn)觸摸屏的控制。
ARM7202集成了ARM7TDMI CPU核,、存儲(chǔ)器管理單元(MMU),、8KB高速緩沖存儲(chǔ)器(Cache),主頻達(dá)70MHz。是一高性能嵌入式處理器,。除觸摸屏控制器外,,其片內(nèi)還包含了其他豐富的資源,如LCD控制器,、SDRAM控制器,、中斷控制器、DMA 控制器等[1],。ARM7202與觸摸屏的接口在軟/硬件設(shè)計(jì)上有些與前面三種不同的方面,。
2 硬件設(shè)計(jì)
2.1 電阻觸摸屏原理
電阻觸摸屏是一多層的復(fù)合膜,由一層玻璃或有機(jī)玻璃作為基層,,表面涂有一層透明的導(dǎo)電層,,上面再蓋有一層塑料層,它的內(nèi)表面也涂有一層透明的導(dǎo)電層,,在兩層導(dǎo)電層之間有許多細(xì)小的透明隔離點(diǎn)把它們隔開絕緣,,如圖1。當(dāng)手指觸摸屏幕時(shí),,平常絕緣的兩層導(dǎo)電層在觸摸點(diǎn)位置就有了一個(gè)接觸,,控制器檢測(cè)到這個(gè)接觸后,其中一面導(dǎo)電層接通Y軸方向的5V均勻電壓場(chǎng),,另一導(dǎo)電層將接觸點(diǎn)的電壓引至控制器進(jìn)行A/D轉(zhuǎn)換,,得到電壓值后與5V相比即可得觸摸點(diǎn)的Y軸坐標(biāo),如圖2,。同理得出X軸的坐標(biāo),。這是所有電阻觸摸屏共同的基本原理,。
2.2 ARM7202與觸摸屏的接口
ARM7202片上資源包含觸摸屏控制器,用于控制4線電阻式觸摸屏,。在5路A/D轉(zhuǎn)換通道中A0和A1是用于觸摸屏坐標(biāo)采集的,,同時(shí)芯片提供ATSXP、ATSXN,、ATSYP和ATSYN四根掃描線分別對(duì)X方向和Y方向進(jìn)行掃描,。ATSXP和ATSXN在X方向施加正向電壓時(shí),在Y方向檢測(cè)到X坐標(biāo)的對(duì)應(yīng)值;同理ATSYP和ATSYN在Y方向施加正向電壓時(shí),,在X方向檢測(cè)到Y(jié)坐標(biāo)的對(duì)應(yīng)值,,分別由A0和A1采集。為了減少系統(tǒng)功耗和觸摸屏所占CPU資源,,只在有落筆時(shí)觸摸屏控制器才啟動(dòng)掃描,,通過A/D轉(zhuǎn)換得到坐標(biāo)的對(duì)應(yīng)值,因此需在外部設(shè)計(jì)落筆檢測(cè)電路,,如圖3所示,。圖中IRLML6302和IRLML2402分別為PMOSFET和NMOSFET,作為開關(guān)管控制X方向和Y方向的掃描輸出,。PB7接上拉電阻,檢測(cè)落筆中斷,,當(dāng)有落筆時(shí),,PB7檢測(cè)到低電平,觸發(fā)中斷,。PB6為中斷檢測(cè)電路的使能信號(hào),,當(dāng)PB6為高電平時(shí),中斷有效,,觸摸屏掃描無效;反之中斷無效,,觸摸屏掃描有效。
3 觸摸屏控制程序機(jī)制
不同的操作系統(tǒng)下對(duì)觸摸屏的應(yīng)用各有不同,,但都包括了設(shè)備的初始化,、設(shè)備讀寫及中斷響應(yīng)等基本模塊。觸摸屏的驅(qū)動(dòng)程序涉及到兩個(gè)中斷:落筆中斷和觸摸屏A/D轉(zhuǎn)換中斷,。所包含的程序模塊有:觸摸屏初始化,、落筆中斷服務(wù)程序、A/D中斷服務(wù)程序,、濾波程序和坐標(biāo)轉(zhuǎn)換程序,。這里重點(diǎn)說明觸摸屏的兩個(gè)中斷。
觸摸屏初始化程序完成外部電路的中斷設(shè)置和采樣率的設(shè)置,,并將觸摸屏的A/D中斷和A/D轉(zhuǎn)換器電源關(guān)閉,,使外部電路中斷有效,。
有落筆時(shí),外部中斷被觸發(fā),,進(jìn)入落筆中斷服務(wù)程序,。在落筆中斷服務(wù)程序中清中斷源,關(guān)外部中斷,,使外部中斷電路無效,,打開觸摸屏中斷和AD轉(zhuǎn)換器電源。此時(shí)觸摸屏電路開始掃描觸摸屏,。觸摸屏A/D轉(zhuǎn)換結(jié)束后,,產(chǎn)生A/D中斷,進(jìn)入A/D中斷服務(wù)程序,。在觸摸屏A/D中斷服務(wù)程序中,,清A/D中斷,關(guān)觸摸屏A/D中斷,,讀A/D轉(zhuǎn)換值,。此時(shí)還要判斷落筆是否繼續(xù),若無落筆,,開外部電路中斷,,使外部中斷電路有效,關(guān)A/D中斷和A/D轉(zhuǎn)換器電源,,進(jìn)入節(jié)能模式,,如圖4(a);若還有落筆,要繼續(xù)開觸摸屏A/D中斷,,使外部中斷電路無效,,觸摸屏的A/D轉(zhuǎn)換繼續(xù)進(jìn)行,如圖4(b)所示,。
圖4 觸摸屏程序流圖
由A/D轉(zhuǎn)換得到的值是觸摸屏上觸摸點(diǎn)的X坐標(biāo)和Y坐標(biāo)的值,,要通過一定的方法轉(zhuǎn)換為顯示屏上的坐標(biāo)。限于篇幅這里省略,,其原理和實(shí)現(xiàn)方法見參考文獻(xiàn)[2],。在A/D轉(zhuǎn)換時(shí),每次由A/D轉(zhuǎn)換寄存器得到4組轉(zhuǎn)換值,,可以設(shè)計(jì)一個(gè)濾波程序以提高檢測(cè)精度,。
4 程序設(shè)計(jì)
觸摸屏的應(yīng)用程序模塊有:觸摸屏初始化、落筆中斷服務(wù)程序,、A/D中斷服務(wù)程序,、濾波程序和坐標(biāo)轉(zhuǎn)換程序。初始化程序、濾波程序和坐標(biāo)轉(zhuǎn)換程序是一般常規(guī)通用程序,。觸摸屏驅(qū)動(dòng)程序其核心是落筆中斷和A/D轉(zhuǎn)換這兩個(gè)中斷服務(wù)程序,,以下是在uc/OS操作系統(tǒng)下觸摸屏驅(qū)動(dòng)程序的兩個(gè)中斷服務(wù)程序,其詳細(xì)說明見注釋,。
static void TouchPenDownISR(int level) //落筆中斷服務(wù)程序
{
unsigned int status;
status=*(volatile int *)PioCIS&0xfff;
if (status & 0x80 )
{
*(volatile int *)PioCIC|=0x80; //清落筆中斷
*(volatile int *)PioCIM&=~0x80; //關(guān)落筆中斷
*(volatile int *)PioCDR&=~0x100; //使落筆中斷檢測(cè)無效,,觸摸屏掃描電路有效
*(volatile int*)ADCCR&=~0x80; //開A/D電源
*(volatile int*)ADCTPCR|=0x80|0x40; //觸摸屏讀有效,A/D中斷有效
}
}
static void TouchINIISR(int level) //觸摸屏A/D轉(zhuǎn)換中斷服務(wù)程序
{
int x[4];
int y[4];
*adcisr |= 0x80; //清觸摸屏A/D中斷
TouchSample(x,y); //得到X/Y方向數(shù)值
*(volatile int*)ADCTPCR&=~(0x80|0x40); //觸摸屏讀無效,,觸摸屏A/D中斷無效
*(volatile int *)PioCDR|=0x100; //使落筆中斷檢測(cè)有效,,觸摸屏掃描電路無效
if(*(volatile int *)PioCDR&0x80) //檢測(cè)到起筆
{
*(volatile int *)PioCIC|=0x80; //清落筆中斷
*(volatile int *)PioCIM|=0x80; //開落筆中斷
*(volatile int *)ADCCR|=0x80; //關(guān)A/D電源
*(volatile int*)ADCTPCR&=~(0x80|0x40); //觸摸屏讀無效,觸摸屏A/D中斷無效
}
else //如仍有落筆
{
*(volatile int *)PioCDR&=~0x100; //使落筆中斷檢測(cè)無效,,觸摸屏掃描電路有效
*(volatile int *)ADCTPCR|=0x80|0x40; //觸摸屏讀有效,,觸摸屏A/D中斷有效
}
}
5 結(jié)束語
根據(jù)上述對(duì)觸摸屏工作機(jī)制的分析,筆者在實(shí)時(shí)嵌入式操作系統(tǒng)uc/OS下編寫的觸摸屏驅(qū)動(dòng)程序應(yīng)用于基于ARM7202的智能控制器,,實(shí)踐證明系統(tǒng)穩(wěn)定可靠,,滿足了在復(fù)雜的實(shí)時(shí)多任務(wù)環(huán)境中觸摸屏快速響應(yīng)的要求。