关于STM32应用触摸屏校准原理的总结
2016-08-20 17:16
405 查看
应用场景
发现以前写的有点模糊不清,先来普及一下应用场景吧,这篇博文是针对电阻屏的第一次校准而写的,应用场景图示:第一步,得到屏幕上 4 个点位置如下图
首先读取这四个点的AD转换值,然后由两点间的距离公式 D=Sqrt[(x1-x2)^2+(y1-y2)^2] 依次求出 d1,d2,d3,d4,以及相应的对角线距离,判断是否 d1==d2 ,d3==d4,以及对角线相等,如果相等则进行下一步,不相等则重新取值。
第二步,利用如下程序计算校准参数
(液晶理论宽度-40)/(x2-x1) 即 液晶理论宽度点阵值/AD测量值 = 每AD值对应多少点阵 xfac=(float)(lcddev.width-40)/(pos_temp[1][0]-pos_temp[0][0]);//得到 xfac [液晶理论宽度点阵值 - 每AD值对应多少点阵*(AD测量值)]/2 = 测量误差值(理论值为 20 点阵,实际是有误差的) xoff=(lcddev.width-tp_dev.xfac*(pos_temp[1][0]+pos_temp[0][0]))/2;// 得到 xoff (液晶理论高度-40)/(x2-x1) 即 液晶理论高度点阵值/AD测量值 =每AD值对应多少点阵 yfac=(float)(lcddev.height-40)/(pos_temp[2][1]-pos_temp[0][1]);//得到 yfac [液晶理论高度点阵值 - 每AD值对应多少点阵*(AD测量值)]/2 = 测量误差值(理论值为 20 点阵,实际是有误差的) yoff=(lcddev.height-tp_dev.yfac*(pos_temp[2][1]+pos_temp[0][1]))/2;//得到yoff
第三步,应用校准参数
每次读到相应的AD值时,转换为相应的触摸点阵位置 屏幕坐标点 = 测量AD值 * 每AD对应点阵数 + 误差 x = xfac * x的AD值 + xoff; //将结果转换为屏幕坐标 y = yfac * y的AD值 + yoff;
相关文章推荐
- 关于enum应用的总结
- 关于enum应用的总结
- 关于触摸屏的一些总结
- 关于enum应用的总结
- 【经验总结】C#常用线程同步方法应用场景和实现原理
- 设计总结2,关于template method 或者algorithm skeleton的一个应用
- 关于递归思想与prolog中的一些递归应用总结
- COM原理与应用中关于聚合实现的纪要
- 关于enum应用的总结
- Linux系统下内存申请应用的方法原理总结
- 关于I/O上下拉电阻的应用总结
- 关于enum应用的总结
- WINCE应用层设计经验总结-关于当前时间显示和当前时间获取
- 关于enum应用的总结
- 多媒体技术原理与应用考试总结
- 关于enum应用的总结
- WINCE应用层设计经验总结-关于用串口发AT命令给蓝牙
- 关于2410上LCD移植方面的几点总结(含触摸屏)——转载
- 关于2410上LCD移植方面的几点总结(含触摸屏)——转载
- 关于IPTV质量测试 RFC4445 MDI的原理和应用