四线电阻触摸屏校准算法小结
- 格式:doc
- 大小:29.00 KB
- 文档页数:2
电阻式触摸屏校准算法分析<一> 算法分析电阻式触摸屏在X,Y坐标方向上是线性的,比如S32采用的触摸屏,理论上Xmin=0,Xmax=1023,Ymin=0,Ymax=1023。
但是实际的触摸屏,往往是xmin>0,xmax<1023,ymin>0,ymax<1023。
所以就需要校准。
此文讨论的校准算法,其原理就是利用触摸屏的线性特性,针对被校准的触摸屏,获取其真正的x,y的范围,即xmin,ymin,xmax,ymax将其记录下来。
以后当触摸事件发生,将触摸屏报告的原始坐标(x,y)按比例投射到0~1023的坐标上即可。
注意,TP与LCD在相同的坐标方向上,具有相似性,即比例一致性。
看看对原始坐标的处理:If (x<xmin) x=0;Else if (x>xmax) x=xmax-xmin;Else x=1023*(x-xmin)/(xmax-xmin);If (y<ymin) y=0;Else if (y>ymax) y=ymax-ymin;Else y=1023*(y-ymin)/(ymax-ymin);可见,对原始坐标,先减去一个0位置的偏移量(x-xmin),然后求得它X范围上的比率((x-xmin)/(xmax-xmin)),再乘以1023,就得到了投射到(0~1023)上的坐标。
再看看校准算法。
在以下的讨论中,所谓物理坐标,指触摸屏上的坐标PT;所谓逻辑坐标,指LCD上的坐标PL。
LCD的宽度(W)对应TP的X方向,LCD的高度(H)对应TP的Y方向。
通过点击三个校准点Po(x,y),Px(x,y),Py(x,y),我们能得到图中内层方框的X,Y的物理坐标范围,即Xm = Px.x – Po.x Ym = Py.y – Po.y将此图投射到LCD上,有如下(物理值->逻辑值)的对应关系:Xl->Lwl,Xm->Lwm,Xr->Lwr,Yb->Lhb,Ym->Lhm,Yt->Lht。
三点校准法三点校准法较之前面介绍的二点校准法更为精确。
当触摸屏与液晶屏间的角度差很小时,经过推理可以假设触摸屏与液晶显示器各点之间的对应关系为(假设液晶显示器的坐标为(XD, YD),触摸屏的坐标为(X,Y)):XD = AX + BY + CYD =DX + EY + F因为要取三个点进行校准,所以存在六个变量,即要通过六个方程式求出液晶显示器的坐标。
此处要求三个点尽量分散,最好为左上角、中间、右下角三点。
得:XD0 = AX0 + BY0 + CXD1 = AX1 + BY1 + CXD2 = AX2 + BY2 + CYD0 = DX0 + EY0 + FYD1 = DX1 + EY1 + FYD2 = DX2 + EY2 + F可求出 A、B、C、D、E、F的值,一旦这些参数值定下来,便可利用上面的方程组,通过触摸屏上的原始数据计算出它在LCD显示器上的对应点。
推导得出将K作为各方程式的公分母,便可得出未知量:K = (X0-X2)(Y1-Y2)-(X1-X2)(Y0-Y2)A = ((XD0-XD2)(Y1-Y2)-(XD1-XD2)(Y0-Y2))/KB = ((X0-X2)(XD1-XD2)-(XD0-XD2)(X1-X2))/KC = (Y0(X2XD1-X1XD2) + Y1(X0XD2-X2XD0) + Y2(X1XD0-X0XD1))/KD = ((YD0-YD2)(Y1-Y2)-(YD1-YD2)(Y0-Y2))/KE = ((X0-X2)(YD1-YD2)-(YD0-YD2)(X1-X2))/KF = (Y0(X2YD1-X1YD2) + Y1(X0YD2-X2YD0) + Y2(X1YD0-X0YD1))/K。
屏幕4点校准算法介绍屏幕4点校准算法是一种用于校准触摸屏幕的方法。
通过测量用户点击屏幕时的坐标,并与屏幕上实际显示的坐标进行比较,可以计算出触摸屏幕的误差,并进行校准,从而提高触摸屏幕的准确性和灵敏度。
本文将详细介绍屏幕4点校准算法的原理、步骤和应用。
原理屏幕4点校准算法的原理基于触摸屏幕在不同位置的响应误差是不一样的。
通常情况下,由于制造过程中的一些偏差和材料差异,触摸屏幕在边缘和角落的响应误差较大,而在中心位置的响应误差较小。
因此,通过在触摸屏幕的四个角落进行校准,可以得到一个精确的校准参数,从而减小触摸屏幕的误差。
步骤屏幕4点校准算法的步骤如下:步骤1:选择参考点首先,需要选择四个参考点,一般选取屏幕的四个角落。
这四个参考点的坐标需要事先确定,并且要尽可能分布在屏幕的不同位置。
步骤2:用户操作用户需要按照指示在屏幕上分别点击四个参考点位置。
系统会记录下用户点击时的坐标。
步骤3:计算校准参数根据用户点击时的坐标和事先确定的参考点坐标,可以计算出校准参数。
校准参数可以通过线性插值或者其他数学模型得到,具体的计算方法要根据具体情况而定。
步骤4:应用校准参数最后,将计算出的校准参数应用到触摸屏幕上,以校正触摸屏幕的误差。
校准参数可以通过软件或者硬件的方式进行应用。
应用屏幕4点校准算法广泛应用于各类触摸屏设备,例如智能手机、平板电脑、工控机等。
通过校准触摸屏幕,可以提高用户的触控体验,减少误操作,并且可以精确地控制光标的位置。
总结屏幕4点校准算法是一种用于校准触摸屏幕的方法,通过选择参考点、用户操作、计算校准参数和应用校准参数等步骤,可以提高触摸屏幕的准确性和灵敏度。
该算法广泛应用于各类触摸屏设备,可以改善用户的触摸体验。
触摸屏及ADS7846/HT20462009-05-15 10:17四线电阻式触摸屏,上图我们看到,触摸屏一般是上线和下线为一组。
左右线为一组,用万用表可以量到阻值。
上下的线阻为(Y+ Y-)阻值为 500欧----680欧。
左右线阻(X+ X-)阻值为 350欧----450欧。
jz4740,的中断计算程序#define SPCS_HIGH v_pSSIGPIORegs->group[SPI_EN_PIN/32].DATS = 1 <<(SPI_EN_PIN%32)#define SPCS_LOW v_pSSIGPIORegs->group[SPI_EN_PIN/32].DATC = 1 << (SPI_EN_PIN%32)#define SPCK_HIGH v_pSSIGPIORegs->group[SPI_CLK_PIN/32].DATS = 1 <<(SPI_CLK_PIN%32)#define SPCK_LOW v_pSSIGPIORegs->group[SPI_CLK_PIN/32].DATC = 1 <<(SPI_CLK_PIN%32)#define SPDA_HIGH v_pSSIGPIORegs->group[SPI_DATA_PIN/32].DATS = 1 <<(SPI_DATA_PIN%32)#define SPDA_LOW v_pSSIGPIORegs->group[SPI_DATA_PIN/32].DATC = 1 <<(SPI_DATA_PIN%32)#define SPDAIN v_pSSIGPIORegs->group[SPI_DATARX_PIN/32].PIN & (1 <<(SPI_DATARX_PIN % 32))//insert 0 ,not insert 1;#define SPDABUSY v_pSSIGPIORegs->group[SPI_BUSY_PIN/32].PIN & (1 <<(SPI_BUSY_PIN % 32))//insert 0 ,not insert 1;//------------------------------------------------------------------------------ void delay(int k){int i;for(i=0;i<k;i++);}void start()//SPI开始{SPCK_LOW;SPCS_HIGH;SPDA_HIGH;SPCK_HIGH;SPCS_LOW;}void WriteCharTo7843(unsigned char num) //SPI写数据{unsigned char count=0;SPCK_LOW;for(count=0;count<8;count++){if ( (num & 0x80) == 0x80)SPDA_HIGH;elseSPDA_LOW;SPCK_LOW;delay(3);SPCK_HIGH;delay(3);num <<= 1;}}int ReadFromCharFrom7843() //SPI 读数据{unsigned char count=0;WORD Num=0;for(count=0;count<12;count++){Num<<=1;SPCK_HIGH;delay(3); //下降沿有效SPCK_LOW;delay(3);if(SPDAIN)Num++;}return(Num);}INT WINAPI SpiISR( VOID ){while ( !g_SpiISR.bISTExist ){int X=0,Y=0,X_,y_;WaitForSingleObject( g_SpiISR.hIntrEvent, INFINITE );Sleep(30);//中断后延时以消除抖动,使得采样数据更准确start(); //启动SPIWriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标详细请见有关资料delay(2);while(SPDABUSY);SPCK_HIGH; delay(4);SPCK_LOW; delay(4);X=ReadFromCharFrom7843();WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标详细请见有关资料delay(2);while(SPDABUSY);SPCK_HIGH; delay(4);SPCK_LOW; delay(4);Y=ReadFromCharFrom7843();SPCS_HIGH;RETAILMSG(1, (TEXT("SpiISR X=%d,Y=%d\r\n"),X,Y));InterruptDone( g_SpiISR.dwSwIntr );}return ( 0 );}控制字ADS7846的控制字由表1所列,其中S为数据传输起始标志位,该位必为“1”,A2~A0进行通道选择。
关于电阻式触摸屏的线性校准问题1 引言阻性触摸屏与LCD 显示器上的各点很难完全准确配合,因此除了采用精确的机械装配技术校准之外,在使用之前还必须进行软件校准。
本文介绍的校准方法首先确定误差源,然后通过三个选定点导出触摸屏的校准矩阵,并用软件方法来实施点与点之间对应关系的校准。
掌握这种技术,对降低嵌入式系统的成本至关重要。
图1所示是一个阻性触摸屏的横截面,其结构十分简单,由上下相对放置的两层结构构成,FILM 和玻璃的内表面涂上薄薄一层导电材料,并用一些透明绝缘隔离点(绝缘点)将导电表面隔开。
当手指或铁笔按压玻璃表面时,上层FILM 产生弯曲接触下层玻璃。
这种结构中层间的距离决定了触摸屏的敏感度。
层间距离越近,敏感度越小,压力就要越大,以使两层结构可靠接触。
玻璃或图1 阻性触摸屏的横截面 图2 触摸屏的等效电路图2所示是触摸屏的等效电路。
通过一个触摸屏控制器(AD 转换器)将电源的正、负极加到一块玻璃的导电层两端,另一块玻璃上的导电层则起到一个电位计游标的作用。
在玻璃上不同的触摸点,导电的情况也不同,数字转换器上便会录得不同的测试电压值,然后控制器将录得的电压值转换成一个二维坐标:X 轴坐标和Y 坐标。
这些控制器每秒钟可进行200次或更多的采样。
采样率通常与背景噪声和控制器质量有关。
智能控制器还具备其它一些功能,如检测到触摸时中断CPU 、在检测到触摸前设定采样率连续进行采样。
没有触摸时,控制器处于待机状态。
由于阻性触摸屏结构简单、操作易懂、所需软硬件有多个厂商可供选择,因此可用于对成本敏感的设计中。
然而,由于触摸屏与它背后的显示器(LCD 或其它)间的对应点很难完全配合,因此几乎所有带阻性触摸屏的设备在出厂前均要经过一定的校准。
否则在触摸屏上点击某一按钮或选择某项功能时,内置的软件便无法对这一点击做出正确响应。
本文介绍的校准方法需要三个目标点/或测试点,然后依次进行触摸测试,以确定该显示屏特有的校准因数。