韩国理伦电源2020,一人吸乳一人做爰,欧美丰满熟妇bbb久久久,日本人も中国人も汉字を

當前位置:首頁 > 觸控技術 > 觸摸屏論文
觸摸屏論文

觸摸屏校準中拉格朗日插值算法的應用

拉格朗日插值算法在觸摸屏校準中的應用
楊莉 蔣奇良
(武漢理工大學自動化學院,湖北 武漢 430070)

摘要:以三星ARM9(S3C2440)處理器作為試驗平臺,研究了拉格朗日插值算法在觸摸屏校準中的應用,并對校準數據作了分析,在當前邏輯點比例換算校準法廣泛用于觸摸屏校準的情況下,為觸摸屏的校準提供了一種新的方法,解決了在觸摸屏安裝過程中所產生的機械安裝位置誤差的校準問題。

關鍵詞: 觸摸屏;校準;ARM9;拉格朗日插值算法

中圖分類號:TP301.6 文獻標識碼:A 文章編號:1672-4801(2011)02-008-03

    隨著社會的發展與進步,人們對人機交互界面的友好和方便程度提出了更高的要求,觸摸屏技術開始逐步取代傳統的按鍵[1]。采用觸摸屏不僅可以大大節省成本和空間而且能夠提供更為友好的交互界面,這些都使得觸摸屏的應用越來越廣泛,然而在觸摸屏安裝過程中和觸摸屏與液晶屏的實際尺寸的轉換中總是存在不可避免的誤差,因此觸摸屏的校準成為了觸摸屏應用首要考慮的問題。觸摸屏有很多種類,在本文中主要以四線電阻式觸摸屏作為研究對象,分析了拉格朗日插值算法在校準中的應用[2-5]。

1 觸摸屏原理和校準算法的分析

1.1 實驗的硬件構成介紹和框圖

    S3C2440 是一款基于ARM920T 內核的16/32位RISC 嵌入式微處理器,運行的頻率可達
400MHz,ARM920T 核由ARM9TDMI,存儲管理單元(MMU)和高速緩存三部分組成。本實驗所用的S3C2440 最小系統由電源模塊,時鐘模塊,復位模塊,SDRAM 存儲器模塊,Flash 模塊,UART 串口模塊,JTAG 調試接口設計組成[6-8]。最小系統的結構框圖如圖1 所示。

 

圖1 ARM 最小系統結構
圖1 ARM 最小系統結構
 

    觸摸屏系統結構框圖如圖2 所示。

 

圖2 典型的四線式電阻觸摸屏系統
圖2 典型的四線式電阻觸摸屏系統
 

1.2 觸摸屏原理和誤差的來源

    電阻觸摸屏的主要工作部分是一塊與顯示器表面非常配合的電阻薄膜層,這是一種多層復合薄膜,由一層玻璃或有機玻璃作為基層,表面涂有一層叫ITO 的透明導電層,上面再蓋有一層經外表面硬化處理的塑料層,它的內表面也涂有一層導電層(ITO 或鎳金),在兩層導電層之間有許多細小的透明隔離點把它們隔開絕緣。在觸摸屏被施壓后,觸摸屏的上下兩層會在施壓點導通,在上下兩層電阻表面分別交替的供電,并通過A/D 轉換就可以得到該觸摸點的坐標值,因此觸摸屏電阻的精度、A/D 轉換的精度、觸摸屏的安裝機械特性和擺放位置都會影響觸摸屏坐標轉換的精度[9-10]。本文主要討論有機械安裝產生的位置誤差。主要的機械安裝位置誤差有比例系數誤差和旋轉誤差。

    在安裝的過程中,由于機械特性的存在,觸摸屏的頂點坐標不可能和LCD 的頂點坐標完全重合,因此會有一個偏移量的修正問題(如圖3 和圖4 所示)。

 

圖3 比例系數誤差
圖3 比例系數誤差
 

圖4 旋轉誤差
圖4 旋轉誤差
 

    由于觸摸屏的坐標要通過A/D 轉換獲取,由于A/D 轉換的結果只與該A/D 的位數有關,例如在本文的實驗環境下,LCD 的尺寸是240×320mm,A/D 的精度是10bit,因此觸摸屏輸出的坐標值為x 方向:0-1023( f(X')), y 方向:0-1023(f ( y' ))  ;因此存在一個轉換關系,即:f (x') = X ', f (y' ) = Y 。

1.3 坐標轉換和插值算法分析

    在觸摸屏校準的過程中要求保證的是被按下的觸摸板處的坐標和LCD 上的像素坐標要盡量的接近,也就說在校準的過程對離散的精度要求很高,拉格朗日插值算法剛好就可以保證插值點的精度。

    在進行觸摸屏的校準時,首先需要在觸摸屏上定義5 個點,在LCD 上分別對應P0,P1,P2,P3 , P4 的像素點坐標為(20,20) , (20,300) ,(220,300),(220,20),并在屏幕上用“+”表示(如圖5 所示)。P0,P1,P2,P3,P4 的位置將觸摸屏劃分為4 個相等的三角形區域,在每顯示一個坐標的同時等待觸摸筆在觸摸屏相應的點按下,當觸摸屏按下時S3C2440 則保存了這5 個點經過AD 轉換的數據,P0,P1,P2,P3 一起作為拉格朗日插值算法的4 個插值,P4 作為驗證拉格朗日插值算法的一個點,如果P4 點計算出來的值和給定的像素點一致,則進入下一個界面證明拉格朗日算法有效,反之則說明誤差偏大,從P0 重新開始計算,直到P4 點計算出來的值和給定像素點一致。

圖5 校準點分布圖
圖5 校準點分布圖
 

1.4 拉格朗日插值算法的數學推理

    假定P0,P1,P2,P3 的4 個點分別為(X0,Y0),(X1,Y1),(X2,Y2),(X3,Y3)與之對應的觸摸屏上面的點為(f(X0)),(f(Y0)),(f(X1)),(f(Y1)),(f(X2)),(f(Y2)),(f(X3)),(f(Y3))分別組成關于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))分別構成關于X 和Y 的2 個拉格朗日插值函數,如下:

    l(x)和l'(y)分別為關于X 和Y 的2 個拉格朗日插值函數的插值基函數。

1.5 程序的軟件結構和插值算法的代碼實現

    控制程序在ADS 下用C 語言開發,采用前臺程序結構。主程序開始進行系統初始化配置,包括S3C2440 系統時鐘配置,LCD 和觸摸屏端口工作模式的配置,再進行數據的采集和處理的過程。觸摸屏模塊的軟件設計思想:當觸摸屏受到擠壓或點擊時,通過中斷請求通知ARM 有觸摸發生,此時引腳為低電平,從而向ARM 提出中斷請求[6],進入中斷服務程序,關掉外部中斷,可以避免多個觸摸點相互干擾發生沖突,通過判斷中斷輸入口電平的變化消除非意圖觸摸產生的抖動,消除抖動后,在進行具體的算法處理。軟件的具體流程如圖6 所示。

 

圖6 軟件結構圖
圖6 軟件結構圖
 

具體的代碼實現:

float lagrange (float x,int count)
{
float y=0.0;
for(int k=0;k<count;k++)//這兒默認為count-1 次
插值,count 在這里為5
{
float p=1.0;//初始化p
for(int j=0;j<count;j++)
{ //計算p 的值
if(k==j)continue; //判斷是否為同一個數
p=p*(x-d[j].x)/(d[k].x-d[j].x); //為插值基函數
}
y=y+p*d[k].y; //求和
}
return y;//返回y 的值 ,即校準后對應LCD 上的
像素點
}

2 實驗調試分析

    電阻式觸摸屏參數一般具有較大的分散性,由于觸摸屏按下時間的長短因場合、人等的不同而不同,所觸發的中斷也會因此有所偏差,導致觸摸屏的AD 轉換值在同一位置也會有一定的差異,所以我們必須在中斷觸發的AD 轉換函數中對采樣值取一組值,然后通過簡單算法剔除偏差最大的值,最后計算平均值作為觸摸屏的AD 轉換值,這樣能有效的減少上述偏差。如果條件允許的話,可以選擇盡量多的點作為拉格朗日插值算法的插值點,可以進一步的減小機械安裝誤差。表1 是拉氏校準法和邏輯點比例換算校準的實驗結果對比表。

表1 實驗結果對比表

表1 實驗結果對比表
 

    通過對比分析,此方法可以有效提高在觸摸屏校準中常用方法邏輯點比例換算校準的精度,很大程度的降低了邏輯點選點過程中的偶然誤差。

3 結束語

    本文提出了一個基于拉格朗日插值算法的觸摸屏校準方法,一定程度上提高了校準算法的精度。對于電阻式觸摸屏來說,在機械安裝誤差不可避免的情況下,確保其硬件工作穩定可靠,不斷提高軟件算法的精度,是在觸摸屏校準中切實可行的辦法。

參考文獻
[1] 許榮斌,謝瑩,朱永紅. 觸摸屏校準常用算法分析[J]. 工業控制計算機,2006,1(4):77-78.
[2] 魏瑾,郁云. 觸摸屏數據采樣和濾波算法實現[J]. 電腦知識與技術,2008,4(34)1965-1968.
[3] 楊偉鈞,戴青云,張輝,等. 基于STC 單片機的觸摸屏5 點校準算法設計與實現[J].儀器儀表用戶,2009,15(3):79-81.
[4] 宋學瑞,蔡子裕,段青青.觸摸屏數據處理算法[J]. 計算機工程,2009,34(23)255-257.
[5] 王丁,閆瑤,張廷宇. 觸摸屏校準的一種通用算法[J]. 自動化技術與應用,200827(2):116-117.
[6] 盛占石,王楚華,周新云,孫俊.基于ARM7 嵌入式系統中的觸摸屏的設計和研究[J].電測與儀表,2008,45(5):61-64.
[7] 王黎明,陳雙橋等. ARM9 嵌入式系統開發與實踐[M]. 北京:北京航空航天大學出社,2007.
[8] 田澤. 嵌入式系統開發與應用[M]. 北京:北京航空航天大學出版社,2005.
[9] 韓兵. 觸摸屏技術及應用[M]. 北京:化學工業出版社,2008
[10] 萬厚沖,孫超云. 電阻式觸摸屏數據校準的一種補償算法[J]. 福建電腦,2010(2:64-64.


相關文章
精彩評論:
0  相關評論
主站蜘蛛池模板: 汝南县| 上高县| 胶南市| 马龙县| 阳新县| 海原县| 祥云县| 侯马市| 宁阳县| 健康| 泰安市| 即墨市| 南丰县| 青田县| 普宁市| 申扎县| 威宁| 朝阳县| 康马县| 盘锦市| 永修县| 荥阳市| 武城县| 平江县| 贺州市| 兴仁县| 大同县| 红桥区| 河间市| 丰镇市| 武川县| 蓝田县| 凤庆县| 罗江县| 田东县| 怀远县| 凉山| 东乡族自治县| 大姚县| 镇康县| 乌海市|