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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
四线电阻触摸屏校准算法小结

四线电阻触摸屏校准算法的实现 (一) 四线电阻屏的触摸板坐标和屏坐标有如下关系: X0 = xfac * X + xoff; Y0 = yfac * Y + yoff; 其中X0,Y0是屏的物理坐标,xfac,yfac为x,y方向的比例因子,xoff,yoff为x,y方向的偏移 量. 既然说到了校准,那么这四个量肯定是不变的,所以我们可以用至少两个屏的物理坐标点就 可算出这四个量,也即是两点校准法,由于按下屏后读出的是X,Y值,而校准时用的X0,Y0 也是已知的,那么就是解四元一次方程组了,算法如下: (X1,Y1)和(X2,Y2)是用于校准时屏上显示的两个点,这两个点的坐标必须不一样, 是已知的; (x1,y1)和(x2,y2)是校准时读取的被按下的两点的触摸板坐标值; 有如下方程组: 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轴方向的比例因子 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轴方向的偏移量 OK! 所谓的三点触摸校准,四点触摸校准只不过是加了可靠的滤波算法,因为触摸笔和屏 的接触不是很准确的!而像素点是很小的,所以通常都用四点校准,而且经验证这此算法是 必须加的,否则很不准,参见STM32学习笔记相关实验实验例程,已验证通过理论知识: * 触摸屏实际是在普通的lcd 上贴了一个触摸膜, 没有原生的触摸屏 校准公式 X液晶= ax + by + c x,y是触摸屏 Y液晶= dx + ey + d 公式原理 X,Y的公司类似, 这里就已X液晶的公式为例 先说a 首先, 液晶和触摸膜的分辨率通常是不一样的, 如液晶分辨率640*480, 触摸膜分辨率 1024 * 768, 则这时就需要把 触摸膜的分辨率 乘一个系数才和液晶分辨率对应, 这里 就是ax中的a, 这里a = 640 / 1024 = 0.625 再说c 由于安装的机械问题, 可能有水平的平移, 这里就是c 最后说b 一开始还以为公式错了, 为什么x的东西还有y的事, 原理还是安装机械的问题, 若膜和lcd 安装有一定的倾斜角度y就不是0了 计算abcdef参数 对应abc和def来说是独立的, 类似的, 下面以计算abc为例 有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]是触摸膜坐标 这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]); 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]); 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

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档