fuzidage
专注嵌入式、linux驱动 、arm裸机研究

导航

 

1.触摸屏校准原理

之前点的触摸屏解析出来的ADCDATA的bit[9:0]表示坐标ADC的转换结果,那么这些结果都是通过电压值来转换过来的。

 

所谓触摸屏校准,就是让触摸屏坐标(电压值)与LCD的坐标能够对应起来,所以校准就是要找到一个公式把电压值转换成和LCD宽高相符合的坐标值。

如下图,上面一层膜是TS触摸屏,下面一层是LCD显示屏,如果我们的LCD size是480*272,那么当我们点击触摸屏上的原点,那它的坐标可能不是(0,0),而是(X1', Y1'),因此我们需要对触摸屏进行校准,期望把x', y’的坐标能够映射成和lcd一样的坐标0,0.

 

那么如何较准呢,如下图以X方向为为例。

 

如果触摸屏的x坐标区间为[x1', x2'], LCD的x坐标区间为[0, 479].那么我们期望把[x1',x2']映射到区间为[0, 479]。如何映射:

如下图以X方向为为例。假设我们在LCD上显示两个点,那分别对应的横坐标为x1, x2.

那么当我们在触摸屏上对应的位置点击该两个点时,那么对应的触摸屏产生的横坐标分别为x1',x2',那这个坐标是实际ADC转换出来的坐标,那可能和实际lcd坐标x1, x2不一致。由于我们的触摸屏的坐标是线性变化的,所以有公式如下:

 

 

 

 

x = (x2 - x1)/(x2' - x1') * (x'-x1') + x1

 (x2 - x1)/(x2' - x1')表示长度比例

x1x1'分别表示LCD和触摸屏的原点坐标

x'表示触点的实际触摸屏坐标

x表示LCD的实际坐标

举个例子:

①长度比例=1

假设lcd显示的两点x1 = 200, x2=400。然后当触摸屏点击x1', x2'位置时产生的TS实际坐标为240, 440

那如果我在中间再次点击一个点,对应lcd的x = 300,对应触摸屏的 x'=340.

那么我们就需要用到这个长度比例来换算出期待的(校准后的)触摸屏坐标

长度比例 =( 400 -200 )/( 440- 240) = 1

x期望 = 长度比例 * (340 - 240) + 200 = 300

这样就校准出来了理想的触摸屏坐标x期望 = 300.

②长度比例不等于1

假设当触摸屏点击x1', x2'位置时产生的TS实际坐标为240, 360

那如果我在中间再次点击一个点,对应x = 300, x'=300.

那么我们就需要用到这个长度比例来换算出期待的(校准后的)触摸屏坐标

长度比例 =( 400 -200 )/( 360- 240) = 1.6666

x期望 = 长度比例 * (300 - 240) + 200 = 300

这样还是校准出来了理想的触摸屏坐标x期望 = 300.

那Y方向也是同理。

 五点法校准

1. 如何计算长度比列:

取上下左右4点坐标对称的4个点,如图,s1',s2'分别表示触摸屏两条横线的实际坐标产生的距离,s1,s2分别表示LCD两条横线的距离。所以两条横线取平均的话

比例kx =  (s1+s2)/(s1'+s2'),我们干脆让lcd的上下横线x坐标相等,这样s1 = s2, kx =  2s/(s1'+s2')

 

y轴方向同理.

2. 原点坐标

我们一般情况下将原点选择LCD的中心位置,对应的LCD坐标Xc,Yc,触摸屏坐标对应xc',Yc'。

 

那么最终5点校准法的公式就出来了,x期望 = kx * (x' - xc') +xc, 其中x'表示触点实际产生的触摸屏坐标。

y期望= ky * (y' - yc') + yc

posted on 2021-06-15 20:35  fuzidage  阅读(1099)  评论(0编辑  收藏  举报