触摸屏校准分析
电阻式触摸屏校准算法分析

电阻式触摸屏校准算法分析<一> 算法分析电阻式触摸屏在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。
关于触摸屏校准问题及触摸屏中断过程图解

保存下来的参数即可。
LCD 校准
3点校准:6个未知数K1,A1,B1,K2,A2,B2
校准公式:二元一次方程。
*
*
*
XZ1,YZ1 XJ1,YJ1 XZ1=K1XJ1+A1YJ1+B1 YZ1=K2XJ1+A2YJ1+B2
校准:5点
5点校准:10个未知数K1,A1,B1,K2,A2,B2
ቤተ መጻሕፍቲ ባይዱ
校准公式:二元二次方程。
设 LCD 上每个点 PD 的坐标为[XD,YD],触摸屏上每个点 PT 的坐标为[XT,YT]。要实现触 摸屏上的坐标转换为 LCD 上的坐标,需要下列公式进行转换: 30,30,28,32
XD=A×XT+B×YT+C
YD=D×XT+E×YT+F
因为其中一共有六个参数(A,B,C,D,E,F),因此只需要三个取样点就可以求得这六个参数。 这六个参数一旦确定下来,只要给出任意触摸屏上的坐标点 PT,代入这个公式,就可以得 到它所对应的 LCD 上像素点的坐标 PD。具体的求解过程就不细讲,只给出最终的结果。已 知 LCD 上 的 三 个 取 样 点 为 : PD0,PD1,PD2 , 它 们 所 对 应 的 触 摸 屏 上 的 三 个 点 为 : PT0,PT1,PT2。A,B,C,D,E,F 这六个参数最终的结果都是一个分式,而且都有一个共同的分母, 为:
触摸屏实验报告

触摸屏实验报告一、实验目的本次触摸屏实验的主要目的是深入了解触摸屏的工作原理、性能特点以及应用场景,并通过实际操作和测试,掌握触摸屏的基本使用方法和相关技术参数的测量。
二、实验设备1、触摸屏实验装置一套,包括触摸屏、控制器、数据线等。
2、电脑一台,用于运行测试软件和数据处理。
3、测量工具,如游标卡尺、万用表等。
三、实验原理触摸屏是一种可接收触头等输入讯号的感应式液晶显示装置。
从技术原理来区别触摸屏,可分为五个基本种类:电阻技术触摸屏、电容技术触摸屏、红外线技术触摸屏、表面声波技术触摸屏和近场成像技术触摸屏。
电阻触摸屏的屏体部分是一块多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层(ITO 膜),上面再盖有一层外表面硬化处理、光滑防刮的塑料层。
它的工作原理是通过压力使上下两层导电层在触摸点位置接触,从而实现触摸位置的检测。
电容触摸屏是利用人体的电流感应进行工作的。
电容屏是一块四层复合玻璃屏,玻璃屏的内表面和夹层各涂有一层 ITO(纳米铟锡金属氧化物),最外层是一薄层矽土玻璃保护层,夹层 ITO 涂层作为工作面,四个角上引出四个电极,内层 ITO 为屏蔽层以保证良好的工作环境。
当手指触摸在金属层上时,由于人体电场,用户和触摸屏表面形成一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流。
这个电流分别从触摸屏的四角上的电极中流出,并且流经这四个电极的电流与手指到四角的距离成正比,控制器通过对这四个电流比例的精确计算,得出触摸点的位置。
四、实验步骤1、连接设备将触摸屏实验装置与电脑正确连接,确保数据线连接牢固,设备电源正常接通。
2、安装驱动和测试软件在电脑上安装触摸屏的驱动程序,并运行相应的测试软件。
3、校准触摸屏按照测试软件的提示,进行触摸屏的校准操作,以确保触摸位置的准确性。
4、进行触摸测试使用手指或专用的触摸笔在触摸屏上进行点击、滑动、缩放等操作,观察触摸屏的响应情况,并记录相关数据。
屏幕4点校准算法

屏幕4点校准算法介绍屏幕4点校准算法是一种用于校准触摸屏幕的方法。
通过测量用户点击屏幕时的坐标,并与屏幕上实际显示的坐标进行比较,可以计算出触摸屏幕的误差,并进行校准,从而提高触摸屏幕的准确性和灵敏度。
本文将详细介绍屏幕4点校准算法的原理、步骤和应用。
原理屏幕4点校准算法的原理基于触摸屏幕在不同位置的响应误差是不一样的。
通常情况下,由于制造过程中的一些偏差和材料差异,触摸屏幕在边缘和角落的响应误差较大,而在中心位置的响应误差较小。
因此,通过在触摸屏幕的四个角落进行校准,可以得到一个精确的校准参数,从而减小触摸屏幕的误差。
步骤屏幕4点校准算法的步骤如下:步骤1:选择参考点首先,需要选择四个参考点,一般选取屏幕的四个角落。
这四个参考点的坐标需要事先确定,并且要尽可能分布在屏幕的不同位置。
步骤2:用户操作用户需要按照指示在屏幕上分别点击四个参考点位置。
系统会记录下用户点击时的坐标。
步骤3:计算校准参数根据用户点击时的坐标和事先确定的参考点坐标,可以计算出校准参数。
校准参数可以通过线性插值或者其他数学模型得到,具体的计算方法要根据具体情况而定。
步骤4:应用校准参数最后,将计算出的校准参数应用到触摸屏幕上,以校正触摸屏幕的误差。
校准参数可以通过软件或者硬件的方式进行应用。
应用屏幕4点校准算法广泛应用于各类触摸屏设备,例如智能手机、平板电脑、工控机等。
通过校准触摸屏幕,可以提高用户的触控体验,减少误操作,并且可以精确地控制光标的位置。
总结屏幕4点校准算法是一种用于校准触摸屏幕的方法,通过选择参考点、用户操作、计算校准参数和应用校准参数等步骤,可以提高触摸屏幕的准确性和灵敏度。
该算法广泛应用于各类触摸屏设备,可以改善用户的触摸体验。
触摸屏校准

触摸屏校准
一、3.22触摸屏校准
触摸屏上电后迅速按住屏下方中部位置,当听到“吱”一声后抬手,进入一界面,按任意一点进入触摸校准画面,点击屏中心上出现的小黑点。
然后跟随小黑点点击屏的四个角。
返回。
二、6410;6408系列屏的校准
1.触摸屏上电后,当出现“心系健康,诚信天下”画面时,迅速快速的点击“心系健康”四个字的中部,进入设置界面。
点击“Touch Setting”按钮,在出现的选择框点“Touch Calibration”按钮,然后选择YES 键。
进入触摸校准画面,点屏中心的十字标中心2秒钟,抬起。
然后点击屏四个角落的十字图标,完成后点任意位置返回。
2.连接鼠标至触摸屏下端的USB口,重新上电,任意点击鼠标左键,进入系统设置画面。
点击“Touch Setting”按钮,在出现的选择框点“Touch Calibration”按钮,然后选择YES键。
进入触摸校准画面,点击屏中部的十字标中心。
然后点击屏四个角落的十字图标。
点任意位置返回。
三、8610;8608系列屏的校准
1、连接鼠标至触摸屏下端的USB口,重新上电,点击屏中间的触
摸校准按钮,点击屏中部的十字标中心。
然后点击屏四个角落
的十字图标。
点任意位置返回。
触摸屏上电后,点击屏中间的触摸校准按钮,进入校准画面。
点屏中心的十字标中心2秒钟,抬起。
然后点击屏四个角落的十字图标,完
成后点任意位置返回。
2、。
电容屏触摸校准方法

电容屏触摸校准方法
电容屏触摸校准是确保触摸屏准确响应用户输入的重要步骤。
以下是电容屏触摸校准的一般方法:
1. 手动校准,在某些设备上,可以通过进入设置菜单中的触摸屏校准选项来手动进行校准。
在这种情况下,系统会显示一些目标点,用户需要按照指示用手指精确地点击这些点,以便系统能够准确地识别屏幕的触摸位置。
2. 自动校准,许多设备在启动时会自动进行触摸屏校准,系统会通过内置的算法自动识别触摸屏的特征并进行校准。
这种方法通常更简单,用户无需进行手动操作。
3. 使用校准工具,一些设备可能配备了专门的校准工具,用户可以通过这些工具进行更精细的触摸屏校准,以确保触摸屏在不同位置都能准确响应。
4. 软件校准,在一些情况下,触摸屏校准可以通过安装特定的校准软件来实现,这些软件通常提供了更多的参数和选项,用户可以根据自己的需求进行定制化的校准。
无论采用哪种方法,触摸屏校准都是非常重要的,它可以确保设备在日常使用中能够准确响应用户的操作,提高了用户体验。
在进行触摸屏校准时,用户需要确保环境安静,避免干扰,以获得最佳的校准效果。
同时,定期进行触摸屏校准也是一个好习惯,可以确保设备长期保持良好的触摸性能。
电容屏触摸校准方法

电容屏触摸校准方法标题:电容屏触摸校准方法详解随着科技的发展,智能手机、平板电脑等移动设备已经深入到我们的日常生活中。
这些设备大多使用电容式触摸屏,但有时我们会发现屏幕的触摸点与实际位置存在偏差,这时就需要进行触摸校准。
本文将详细介绍电容屏触摸校准的方法。
一、了解电容屏工作原理电容屏是通过人体的导电性来感知触控位置的。
电容屏由多层组成,其中最重要的是底层的玻璃板和顶层的保护层。
这两层之间有许多透明的电极,形成许多小电容。
当手指接触屏幕时,会改变这些小电容的电荷分布,从而计算出触控的位置。
二、电容屏触摸校准的重要性由于制造误差、环境温度变化等因素,电容屏的实际触摸位置可能会与设计位置产生偏差,这就需要我们进行触摸校准。
触摸校准可以确保屏幕的精确度,提高用户的操作体验。
三、电容屏触摸校准方法1. 使用系统自带的校准工具:大部分移动设备都有内置的触摸屏校准工具。
通常在设置菜单中可以找到。
按照提示完成一系列的操作,如点击指定的点,画线等,就可以完成校准。
2. 手动校准:如果设备没有提供校准工具,或者校准后仍然存在问题,我们可以尝试手动校准。
首先,我们需要找到设备的固件文件,然后使用文本编辑器打开。
在固件文件中,我们可以找到触摸屏的校准参数,包括X轴和Y轴的偏移量和灵敏度。
根据实际情况调整这些参数,然后保存并重新刷入固件,就可以完成校准。
四、注意事项1. 在进行触摸校准时,应保证设备电量充足,避免在过程中断电导致数据丢失。
2. 校准过程需要一定的耐心和细心,不要急躁,以免影响校准效果。
3. 如果多次校准后仍然无法解决问题,可能是硬件问题,需要找专业的维修人员处理。
总的来说,电容屏触摸校准是一项简单但重要的任务。
只有正确的校准,才能保证屏幕的准确性和稳定性,提高用户的使用体验。
希望以上的介绍能帮助大家更好地理解和掌握电容屏触摸校准的方法。
触摸屏校准方法!!!

触摸屏及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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
触摸屏校准分析
----------Vector(2013-05-14) 1.基础知识
我们传统的鼠标是一种相对定位系统,只和前一次鼠标的位置坐标有关。
而触摸屏则是一种绝对坐标系统,要选哪就直接
点哪,与相对定位系统有着本质的区别。
绝对坐标系统的特点是每一次定位坐标与上一次定位坐标没有关系,每次触摸的数据通过校准转为屏幕上的坐标,不管在什么情况下,触摸屏这套坐标在同一点的输出数据是稳定的。
不过由于技术原理的原因,并不能保证同一点触摸每一次采样数据相同,不能保证绝对坐标定位,点不准,这就是触摸屏最怕出现的问题:漂移。
对于性能质量好的触摸屏来说,漂移的情况出现并不是很严重。
所以很多应用触摸屏的系统启动后,进入应用程序前,先要执行校准程序。
通常应用程序中使用的LCD坐标是以像素为单位的。
比如说:左上角的坐标是一组非0的数值,比如(20,20),而右下角的坐标为(620,460)。
这些点的坐标都是以像素为单位的,而从触摸屏中读出的是点的物理坐标,其坐标轴的方向、XY值的比例因子、
偏移量、缩放因子都与LCD坐标不同,图是LCD坐标和触摸屏的物理坐标的比较。
(友善之臂mini2440开发板采用这种对应关系)
2.触摸屏校准原理
以上说了触摸屏需要校准的原因,问题出在,物理坐标和屏幕坐标并不匹配,不匹配有两个方面:第一,物理坐标的1个单位和屏幕坐标的1个单位并不相等,我们知道屏幕坐标1个单位一般是一个像素,而物理坐标的1个单位并不是1个像素.第二,假设我们把屏幕的左上角定义为(0,0),那么触摸屏的左上角的物理坐标并不是(0,0)(我们点击之后的物理采样数据)。
LCD 坐标和触摸屏坐标对应关系如下:
Vx = xFactor*Px + xOffset //Vx:LCD 像素坐标,Px: 触摸屏物理坐标
Vy = yFactor*Py + yOffset //同上
综上,校准有两个方面:第一,物理采样坐标与屏幕像素坐标的对应关系,也就是伸缩系数,
即单位物理采样数据代表几个单位屏幕像素数据,x坐标和y坐标各有一个伸缩系数,分别记作:xScale和yScale。
计算方法很简单,为了精确,可以采样屏幕上的四个点,让用户点击,比如(20,20),(20,200),(300, 200),(300,20),通过横着的线段除以物理采样的数据线段,得到了x的伸缩系数。
同理可以得到y的伸缩系数。
第二,物理坐标的相对于屏幕像素坐标的偏移,假如我们不计算偏移,只计算伸缩系数的话,假设用户在屏幕点(20,20)点击,我们经过转换物理采样数据,即乘上伸缩系数,发现,校准后的数据并不是(20,20)点,原因就是因为有偏移,原因是触摸屏的物理采样数据,在左上角并不是(0,0),而是某个正数对,采样到的数据不会是0的,这就是偏移产生的原因,所以,在计算过伸缩系数之后,比如点击屏幕(20,20),采样到的数据是(45,78),而第一步计算出的伸缩系数分别是0.78和0.67,那么物理坐标转换成屏幕坐标后是
(45*0.78,78*0.67),此时虽然我们得到了物理坐标对应的屏幕坐标,但是现在屏幕坐标和我们(20,20)所在的屏幕坐标并不在一个坐标系,即(0,0)点不同,所以我们要减去一个坐标系偏移,假设分别是xOffset和yOffset,那么两个坐标做差便得到了xOffset和yOffset。
根据上面的四个参数,我们来举个例子,假如屏幕坐标左上角为(0,0),当我们点击屏幕,此时我们从驱动那里得到物理x和y数据,分别乘上xScale和yScale 得到相对屏幕坐标,加上(平移)xOffset和yOffset,得到了当前的屏幕坐标。
3.示例代码:
int pointBas[4][2] = //预先在屏上绘制出的四个十字标记
{
20, 20, //A
20, 300, //B
219, 300,//C
219, 20, //D
};
int pointGet[4][2] =
{
40, 274,
40, 60,
191, 60,
191, 274, //实际点按触摸屏得到的数值
};
STATUS PenCalibratePoint(void)
{
float tmpBas = 0.0;
float tmpGet = 0.0;
//xScale
tmpBas = pointBas[3][0] - pointBas[0][0];
//printf("tmpBas:%f\n",tmpBas);
tmpGet = pointGet[3][0] - pointGet[0][0];
//printf("tmpGet:%f\n",tmpGet);
_gPenConfig.xFactor = tmpBas/tmpGet;
printf("xFactor:%f\n",_gPenConfig.xFactor);
//yScale
tmpBas = pointBas[1][1] - pointBas[0][1];
tmpGet = pointGet[1][1] - pointGet[0][1];
_gPenConfig.yFactor = tmpBas/tmpGet;
printf("yFactor:%f\n",_gPenConfig.yFactor);
//xOffset
tmpBas = pointBas[3][0]-pointGet[3][0]*_gPenConfig.xFactor;
_gPenConfig.xOffset = tmpBas;
printf("xOffset:%f\n",_gPenConfig.xOffset);
//yOffset
tmpBas = pointBas[3][1]-pointGet[3][1]*_gPenConfig.yFactor;
_gPenConfig.yOffset = tmpBas;
printf("yOffset:%f\n",_gPenConfig.yOffset);
return 0;
}
U16 PenMapX(U16 x)
{
float tmp;
tmp=x*_gPenConfig.xFactor+_gPenConfig.xOffset;
return (U16)tmp;
}
U16 PenMapY(U16 y)
{
float tmp;
tmp=y*_gPenConfig.yFactor+_gPenConfig.yOffset;
return (U16)tmp;
}。