您的位置:首页 > 其它

关于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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  触摸屏 stm32