四线电阻触摸屏校准算法小结

  • 格式:doc
  • 大小:29.00 KB
  • 文档页数:2

下载文档原格式

  / 2
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这里a = 640 / 1024 = 0.625
再说c
由于安装的机械问题,可能有水平的平移,这里就是c
最后说b
一开始还以为公式错了,为什么x的东西还有y的事,原理还是安装机械的问题,若膜和lcd
安装有一定的倾斜角度y就不是0了
计算abcdef参数
对应abc和def来说是独立的,类似的,下面以计算abc为例
校准公式
X液晶= ax + by + c x,y是触摸屏
Y液晶= dx + ey + d
公式原理
X,Y的公司类似,这里就已X液晶的公式为例
先说a
首先,液晶和触摸膜的分辨率通常是不一样的,如液晶分辨率640*480,触摸膜分辨率
1024 * 768,
则这时就需要把触摸膜的分辨率乘一个系数才和液晶分辨率对应,这里就是ax中的a,
四线电阻触摸屏校准算法的实现
(一)
四线电阻屏的触摸板坐标和屏坐标有如下关系:
X0 = xfac * X + xoff;
Y0 = yfac * Y + yoff;
其Байду номын сангаасX0,Y0是屏的物理坐标,xfac,yfac为x,y方向的比例因子,xoff,yoff为x,y方向的偏移
量.
既然说到了校准,那么这四个量肯定是不变的,所以我们可以用至少两个屏的物理坐标点就
B=(Xt[0]-Xt[2])*(Xd1-Xd2)-(Xd0-Xd2)*(Xt[1]-Xt[2]);
C=Yt[0]*(Xt[2]*Xd1-Xt[1]*Xd2)+Yt[1]*(Xt[0]*Xd2-Xt[2]*Xd0)+Yt[2]*(Xt[1]*Xd0-Xt[0]*Xd1);
D=(Yd0 -Yd2)*(Yt[1] -Yt[2]) -(Yd1 -Yd2)*(Yt[0] -Yt[2]);
3 + 1得xoff = [(X2 + X1)-xfac(x2 + x1)]/2; //得到x轴方向的偏移量
4 -2得yfac = (Y2 -Y1)/(y2 -y1); //得到y轴方向的比例因子
4 + 2得yoff = [(Y2 + Y1)-yfac(y2 + y1)]/2; //得到y轴方向的偏移量
可算出这四个量,也即是两点校准法,由于按下屏后读出的是X,Y值,而校准时用的X0,Y0
也是已知的,那么就是解四元一次方程组了,算法如下:
(X1,Y1)和(X2,Y2)是用于校准时屏上显示的两个点,这两个点的坐标必须不一样,
是已知的;
(x1,y1)和(x2,y2)是校准时读取的被按下的两点的触摸板坐标值;
有3个未知数abc,显然需要3个方程
M[0] = A * x[0] + B * y[0] + C
M[1] = A * x[1] + B * y[1] + C
M[2] = A * x[2] + B * y[2] + C
M[0]~M[2]代表lcd的坐标, x[0]~x[2], y[0]~y[2]是触摸膜坐标
有如下方程组:
X1 = xfac * x1 + xoff; // 1
Y1 = yfac * y1 + yoff; // 2
X2 = xfac * x2 + xoff; // 3
Y2 = yfac * y2 + yoff; // 4
解得:
3 -1得xfac = (X2 -X1)/(x2 -x1); //得到x轴方向的比例因子
E=(Xt[0] -Xt[2])*(Yd1 -Yd2) -(Yd0 -Yd2)*(Xt[1] -Xt[2]);
F=Yt[0]*(Xt[2]*Yd1 -Xt[1]*Yd2) + Yt[1]*(Xt[0]*Yd2 -Xt[2]*Yd0) + Yt[2]*(Xt[1]*Yd0 -Xt[0]*Yd1);
2012-8-9
这3个点不能在同一条直线上,在校准过程中,在源代码中给M[0]~M[2]赋值,然后x[0]等是
从驱动读数,最后解方程即可
最后abc表达式,
F= (Xt[0] -Xt[2])*(Yt[1] -Yt[2]) -(Xt[1] -Xt[2])*(Yt[0] -Yt[2]);
//计算参数
A=(Xd0-Xd2)*(Yt[1]-Yt[2])-(Xd1-Xd2)*(Yt[0]-Yt[2]);
OK!所谓的三点触摸校准,四点触摸校准只不过是加了可靠的滤波算法,因为触摸笔和屏
的接触不是很准确的!而像素点是很小的,所以通常都用四点校准,而且经验证这此算法是
必须加的,否则很不准,参见STM32学习笔记相关实验实验例程,已验证通过理论知识:
*触摸屏实际是在普通的lcd上贴了一个触摸膜,没有原生的触摸屏