7回答

2收藏

[分享] 4线电阻触摸屏校正学习

GD32 GD32 3543 人阅读 | 7 人回复 | 2016-01-26

本帖最后由 wambob 于 2016-1-27 11:49 编辑

      使用的3.2寸TFT上的液晶屏主控为SD1289,此屏分辨率是240*320,横着240点,竖着320点,坐标原点在左上角。对于初次接触触摸屏的小白来说,明白了原理是一回事,成功校正触摸屏又是一回事。
      XPT2046四线制电阻触摸屏控制芯片,和ADS7843原理一样,只不过是国产的。读取触摸屏的物理值后,要转换成相应的LCD坐标,网上搜了下,大致两个方法。
方法一:近似估算
        LCD的横坐标为0--240.首先读出触摸屏对应LCD的边缘值a--b,然后使用数学方法得出触摸点的LCD坐标。
       1.等比公式
         假设读取触摸点的读数为c,则此点的横坐标X可由 X/240=c/(b-a)得出;
       2.斜率计算法
         读出的触摸屏对应LCD边缘的宽度b-a. 算出斜率 (b-a)/240,  ,假设当前触摸点读出的横坐标为X,则lLCD上对应的坐标为X/斜率。
       这个方法准换成LCD坐标的时候,如果两者坐标系不同,还需要考虑坐标的转换。
方法二:使用软件计算
          触摸屏的坐标是什么,我们不关心,LCD屏的坐标系(x,y)才是我们需要的,数学上就是把两个2维线性坐标系通过几个样值的比较,对应起来, 即(X,Y)--->(x,y),  具体的做法是:
(1)在LCD上画点,( x1,y1),(x2,y2)...
  (2)  读出这些点对应的触摸屏坐标值(X1,Y1),(X2,Y2)...
   (3) 这时候,就可以得到了两个坐标系的对应关系,具体就是代入程序中读到的采样值求解下面对应方程的6个系数(a,b,c,d,e,f):
{   x=aX+bY+c, y=eX+fY+g   }
上面的情况是普遍适用的, 全面,精度较高,但求解的未知数多,需要的采样值也多; 事实上,现在的装配工艺完全可以保证两个坐标系的相位差为90度的整数倍, 也就是说,上面的对应方程简化为
{ x=aX+b, y=cY+d  }  或者 { x=aY+b, y=cX+d }
这样,只需要2组采样值, 就可以确定对应系数!   两个坐标系的对应关系就明确了, 一切触摸屏坐标都将根据这个对应关系式转化成LCD坐标系中相应的坐标
        首先依次在LCD屏上画出4个校正点(这4个点是长方形的角),然后依次读出校正点的触摸坐标并保存。算出每两个点之间的距离,两边之比和对角线之比为1,算出a,b,c,d参数。
上个效果视频


参考:正点原子例程
ALIENTEK MINISTM32 实验21 触摸屏实验.rar (369.04 KB, 下载次数: 5)

         
分享到:
回复

使用道具 举报

回答|共 7 个

倒序浏览

沙发

okwh

发表于 2016-1-26 23:10:42 | 只看该作者

楼主,能否提供代码?学习学习。

据说最麻烦的不是这个,而是采样不确定分布太大,每次触摸,采集到的是多个不一样的X,Y值,取哪个好的?这怎么办??
板凳

zhzhx66

发表于 2016-1-27 09:13:01 | 只看该作者

感谢楼主分享!!!!!!!!!!!!!!
地板

奋斗哥

发表于 2016-1-27 09:23:20 | 只看该作者

同求楼主共享代码啊
5#

Paderboy

发表于 2016-1-27 09:25:26 | 只看该作者

同求楼主共享代码啊
6#

wambob

发表于 2016-1-27 11:44:14 | 只看该作者

okwh 发表于 2016-1-26 23:10
楼主,能否提供代码?学习学习。

据说最麻烦的不是这个,而是采样不确定分布太大,每次触摸,采集到的是多 ...

采样的不确定分布可以用滤波处理 ,当然也不可能100%准确,但可以限定在某个范围内
参考网上的例程 校正的过程
                       1.画点定位
                       2.读数
                       2.滤波
                       3.坐标转换
                       
7#

yanhaijian

发表于 2016-1-30 16:34:47 | 只看该作者

读出来的AD值还是比较线性的。
8#

wambob

发表于 2016-1-31 10:37:07 | 只看该作者

本帖最后由 wambob 于 2016-1-31 10:38 编辑
yanhaijian 发表于 2016-1-30 16:34
读出来的AD值还是比较线性的。

必须线性     
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条