关于STM32应用触摸屏校准原理的总结

应用场景

发现以前写的有点模糊不清,先来普及一下应用场景吧,这篇博文是针对电阻屏的第一次校准而写的,应用场景图示:
这里写图片描述

##第一步,得到屏幕上 4 个点位置如下图
获得点击触摸屏上的点

在这里插入图片描述

变量解释:

pos_temp[0-3][2]: 
	[0-3] 依次 (x1,y1, - x4,y4,)       
	[2] =   0, x     
			  1, y 


首先读取这四个点的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 值对应多少点阵 * (x1+x2)   = 左边 20 点阵的测试误差 
// 再除 2 是因为 x1+x2 将左边 20 点阵加了两次,误差也 double 了 
xoff = (lcddev.width-tp_dev.xfac*(pos_temp[1][0]+pos_temp[0][0]))/2;							// 得到 xoff


//  (液晶理论高度-40)/(y2-y1) 即 液晶理论高度点阵值/AD测量值 =每AD值对应多少点阵  
yfac = (float)(lcddev.height-40)/(pos_temp[2][1]-pos_temp[0][1]);								// 得到 yfac

// 液晶理论宽度点阵值  - 每 AD 值对应多少点阵 * (y3+y1)   = 左边 20 点阵的测试误差 
// 再除 2 是因为 x1+x2 将左边 20 点阵加了两次,误差也 double 了
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;  
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值