拉格朗日插值算法在觸摸屏校準(zhǔn)中的應(yīng)用
楊莉 蔣奇良
(武漢理工大學(xué)自動(dòng)化學(xué)院,湖北 武漢 430070)
摘要:以三星ARM9(S3C2440)處理器作為試驗(yàn)平臺(tái),研究了拉格朗日插值算法在觸摸屏校準(zhǔn)中的應(yīng)用,并對(duì)校準(zhǔn)數(shù)據(jù)作了分析,在當(dāng)前邏輯點(diǎn)比例換算校準(zhǔn)法廣泛用于觸摸屏校準(zhǔn)的情況下,為觸摸屏的校準(zhǔn)提供了一種新的方法,解決了在觸摸屏安裝過程中所產(chǎn)生的機(jī)械安裝位置誤差的校準(zhǔn)問題。
關(guān)鍵詞: 觸摸屏;校準(zhǔn);ARM9;拉格朗日插值算法
中圖分類號(hào):TP301.6 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-4801(2011)02-008-03
隨著社會(huì)的發(fā)展與進(jìn)步,人們對(duì)人機(jī)交互界面的友好和方便程度提出了更高的要求,觸摸屏技術(shù)開始逐步取代傳統(tǒng)的按鍵[1]。采用觸摸屏不僅可以大大節(jié)省成本和空間而且能夠提供更為友好的交互界面,這些都使得觸摸屏的應(yīng)用越來越廣泛,然而在觸摸屏安裝過程中和觸摸屏與液晶屏的實(shí)際尺寸的轉(zhuǎn)換中總是存在不可避免的誤差,因此觸摸屏的校準(zhǔn)成為了觸摸屏應(yīng)用首要考慮的問題。觸摸屏有很多種類,在本文中主要以四線電阻式觸摸屏作為研究對(duì)象,分析了拉格朗日插值算法在校準(zhǔn)中的應(yīng)用[2-5]。
1 觸摸屏原理和校準(zhǔn)算法的分析
1.1 實(shí)驗(yàn)的硬件構(gòu)成介紹和框圖
S3C2440 是一款基于ARM920T 內(nèi)核的16/32位RISC 嵌入式微處理器,運(yùn)行的頻率可達(dá)
400MHz,ARM920T 核由ARM9TDMI,存儲(chǔ)管理單元(MMU)和高速緩存三部分組成。本實(shí)驗(yàn)所用的S3C2440 最小系統(tǒng)由電源模塊,時(shí)鐘模塊,復(fù)位模塊,SDRAM 存儲(chǔ)器模塊,F(xiàn)lash 模塊,UART 串口模塊,JTAG 調(diào)試接口設(shè)計(jì)組成[6-8]。最小系統(tǒng)的結(jié)構(gòu)框圖如圖1 所示。
圖1 ARM 最小系統(tǒng)結(jié)構(gòu)
觸摸屏系統(tǒng)結(jié)構(gòu)框圖如圖2 所示。
圖2 典型的四線式電阻觸摸屏系統(tǒng)
1.2 觸摸屏原理和誤差的來源
電阻觸摸屏的主要工作部分是一塊與顯示器表面非常配合的電阻薄膜層,這是一種多層復(fù)合薄膜,由一層玻璃或有機(jī)玻璃作為基層,表面涂有一層叫ITO 的透明導(dǎo)電層,上面再蓋有一層經(jīng)外表面硬化處理的塑料層,它的內(nèi)表面也涂有一層導(dǎo)電層(ITO 或鎳金),在兩層導(dǎo)電層之間有許多細(xì)小的透明隔離點(diǎn)把它們隔開絕緣。在觸摸屏被施壓后,觸摸屏的上下兩層會(huì)在施壓點(diǎn)導(dǎo)通,在上下兩層電阻表面分別交替的供電,并通過A/D 轉(zhuǎn)換就可以得到該觸摸點(diǎn)的坐標(biāo)值,因此觸摸屏電阻的精度、A/D 轉(zhuǎn)換的精度、觸摸屏的安裝機(jī)械特性和擺放位置都會(huì)影響觸摸屏坐標(biāo)轉(zhuǎn)換的精度[9-10]。本文主要討論有機(jī)械安裝產(chǎn)生的位置誤差。主要的機(jī)械安裝位置誤差有比例系數(shù)誤差和旋轉(zhuǎn)誤差。
在安裝的過程中,由于機(jī)械特性的存在,觸摸屏的頂點(diǎn)坐標(biāo)不可能和LCD 的頂點(diǎn)坐標(biāo)完全重合,因此會(huì)有一個(gè)偏移量的修正問題(如圖3 和圖4 所示)。
圖3 比例系數(shù)誤差
圖4 旋轉(zhuǎn)誤差
由于觸摸屏的坐標(biāo)要通過A/D 轉(zhuǎn)換獲取,由于A/D 轉(zhuǎn)換的結(jié)果只與該A/D 的位數(shù)有關(guān),例如在本文的實(shí)驗(yàn)環(huán)境下,LCD 的尺寸是240×320mm,A/D 的精度是10bit,因此觸摸屏輸出的坐標(biāo)值為x 方向:0-1023( f(X')), y 方向:0-1023(f ( y' )) ;因此存在一個(gè)轉(zhuǎn)換關(guān)系,即:f (x') = X ', f (y' ) = Y 。
1.3 坐標(biāo)轉(zhuǎn)換和插值算法分析
在觸摸屏校準(zhǔn)的過程中要求保證的是被按下的觸摸板處的坐標(biāo)和LCD 上的像素坐標(biāo)要盡量的接近,也就說在校準(zhǔn)的過程對(duì)離散的精度要求很高,拉格朗日插值算法剛好就可以保證插值點(diǎn)的精度。
在進(jìn)行觸摸屏的校準(zhǔn)時(shí),首先需要在觸摸屏上定義5 個(gè)點(diǎn),在LCD 上分別對(duì)應(yīng)P0,P1,P2,P3 , P4 的像素點(diǎn)坐標(biāo)為(20,20) , (20,300) ,(220,300),(220,20),并在屏幕上用“+”表示(如圖5 所示)。P0,P1,P2,P3,P4 的位置將觸摸屏劃分為4 個(gè)相等的三角形區(qū)域,在每顯示一個(gè)坐標(biāo)的同時(shí)等待觸摸筆在觸摸屏相應(yīng)的點(diǎn)按下,當(dāng)觸摸屏按下時(shí)S3C2440 則保存了這5 個(gè)點(diǎn)經(jīng)過AD 轉(zhuǎn)換的數(shù)據(jù),P0,P1,P2,P3 一起作為拉格朗日插值算法的4 個(gè)插值,P4 作為驗(yàn)證拉格朗日插值算法的一個(gè)點(diǎn),如果P4 點(diǎn)計(jì)算出來的值和給定的像素點(diǎn)一致,則進(jìn)入下一個(gè)界面證明拉格朗日算法有效,反之則說明誤差偏大,從P0 重新開始計(jì)算,直到P4 點(diǎn)計(jì)算出來的值和給定像素點(diǎn)一致。
圖5 校準(zhǔn)點(diǎn)分布圖
1.4 拉格朗日插值算法的數(shù)學(xué)推理
假定P0,P1,P2,P3 的4 個(gè)點(diǎn)分別為(X0,Y0),(X1,Y1),(X2,Y2),(X3,Y3)與之對(duì)應(yīng)的觸摸屏上面的點(diǎn)為(f(X0)),(f(Y0)),(f(X1)),(f(Y1)),(f(X2)),(f(Y2)),(f(X3)),(f(Y3))分別組成關(guān)于X和Y 的2組插值(X0,f(X0)),(Y0,f(Y0)),(X1,f(X1)),(Y1,f(Y1)),(X2,f(X2)),(Y2,f(Y2)),(X3,f(X3)),(Y3,f(Y3))分別構(gòu)成關(guān)于X 和Y 的2 個(gè)拉格朗日插值函數(shù),如下:
l(x)和l'(y)分別為關(guān)于X 和Y 的2 個(gè)拉格朗日插值函數(shù)的插值基函數(shù)。
1.5 程序的軟件結(jié)構(gòu)和插值算法的代碼實(shí)現(xiàn)
控制程序在ADS 下用C 語言開發(fā),采用前臺(tái)程序結(jié)構(gòu)。主程序開始進(jìn)行系統(tǒng)初始化配置,包括S3C2440 系統(tǒng)時(shí)鐘配置,LCD 和觸摸屏端口工作模式的配置,再進(jìn)行數(shù)據(jù)的采集和處理的過程。觸摸屏模塊的軟件設(shè)計(jì)思想:當(dāng)觸摸屏受到擠壓或點(diǎn)擊時(shí),通過中斷請(qǐng)求通知ARM 有觸摸發(fā)生,此時(shí)引腳為低電平,從而向ARM 提出中斷請(qǐng)求[6],進(jìn)入中斷服務(wù)程序,關(guān)掉外部中斷,可以避免多個(gè)觸摸點(diǎn)相互干擾發(fā)生沖突,通過判斷中斷輸入口電平的變化消除非意圖觸摸產(chǎn)生的抖動(dòng),消除抖動(dòng)后,在進(jìn)行具體的算法處理。軟件的具體流程如圖6 所示。
圖6 軟件結(jié)構(gòu)圖
具體的代碼實(shí)現(xiàn):
float lagrange (float x,int count)
{
float y=0.0;
for(int k=0;k<count;k++)//這兒默認(rèn)為count-1 次
插值,count 在這里為5
{
float p=1.0;//初始化p
for(int j=0;j<count;j++)
{ //計(jì)算p 的值
if(k==j)continue; //判斷是否為同一個(gè)數(shù)
p=p*(x-d[j].x)/(d[k].x-d[j].x); //為插值基函數(shù)
}
y=y+p*d[k].y; //求和
}
return y;//返回y 的值 ,即校準(zhǔn)后對(duì)應(yīng)LCD 上的
像素點(diǎn)
}
2 實(shí)驗(yàn)調(diào)試分析
電阻式觸摸屏參數(shù)一般具有較大的分散性,由于觸摸屏按下時(shí)間的長(zhǎng)短因場(chǎng)合、人等的不同而不同,所觸發(fā)的中斷也會(huì)因此有所偏差,導(dǎo)致觸摸屏的AD 轉(zhuǎn)換值在同一位置也會(huì)有一定的差異,所以我們必須在中斷觸發(fā)的AD 轉(zhuǎn)換函數(shù)中對(duì)采樣值取一組值,然后通過簡(jiǎn)單算法剔除偏差最大的值,最后計(jì)算平均值作為觸摸屏的AD 轉(zhuǎn)換值,這樣能有效的減少上述偏差。如果條件允許的話,可以選擇盡量多的點(diǎn)作為拉格朗日插值算法的插值點(diǎn),可以進(jìn)一步的減小機(jī)械安裝誤差。表1 是拉氏校準(zhǔn)法和邏輯點(diǎn)比例換算校準(zhǔn)的實(shí)驗(yàn)結(jié)果對(duì)比表。
表1 實(shí)驗(yàn)結(jié)果對(duì)比表
通過對(duì)比分析,此方法可以有效提高在觸摸屏校準(zhǔn)中常用方法邏輯點(diǎn)比例換算校準(zhǔn)的精度,很大程度的降低了邏輯點(diǎn)選點(diǎn)過程中的偶然誤差。
3 結(jié)束語
本文提出了一個(gè)基于拉格朗日插值算法的觸摸屏校準(zhǔn)方法,一定程度上提高了校準(zhǔn)算法的精度。對(duì)于電阻式觸摸屏來說,在機(jī)械安裝誤差不可避免的情況下,確保其硬件工作穩(wěn)定可靠,不斷提高軟件算法的精度,是在觸摸屏校準(zhǔn)中切實(shí)可行的辦法。
參考文獻(xiàn)
[1] 許榮斌,謝瑩,朱永紅. 觸摸屏校準(zhǔn)常用算法分析[J]. 工業(yè)控制計(jì)算機(jī),2006,1(4):77-78.
[2] 魏瑾,郁云. 觸摸屏數(shù)據(jù)采樣和濾波算法實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù),2008,4(34)1965-1968.
[3] 楊偉鈞,戴青云,張輝,等. 基于STC 單片機(jī)的觸摸屏5 點(diǎn)校準(zhǔn)算法設(shè)計(jì)與實(shí)現(xiàn)[J].儀器儀表用戶,2009,15(3):79-81.
[4] 宋學(xué)瑞,蔡子裕,段青青.觸摸屏數(shù)據(jù)處理算法[J]. 計(jì)算機(jī)工程,2009,34(23)255-257.
[5] 王丁,閆瑤,張廷宇. 觸摸屏校準(zhǔn)的一種通用算法[J]. 自動(dòng)化技術(shù)與應(yīng)用,200827(2):116-117.
[6] 盛占石,王楚華,周新云,孫俊.基于ARM7 嵌入式系統(tǒng)中的觸摸屏的設(shè)計(jì)和研究[J].電測(cè)與儀表,2008,45(5):61-64.
[7] 王黎明,陳雙橋等. ARM9 嵌入式系統(tǒng)開發(fā)與實(shí)踐[M]. 北京:北京航空航天大學(xué)出社,2007.
[8] 田澤. 嵌入式系統(tǒng)開發(fā)與應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社,2005.
[9] 韓兵. 觸摸屏技術(shù)及應(yīng)用[M]. 北京:化學(xué)工業(yè)出版社,2008
[10] 萬厚沖,孫超云. 電阻式觸摸屏數(shù)據(jù)校準(zhǔn)的一種補(bǔ)償算法[J]. 福建電腦,2010(2:64-64.