查看: 2681|回复: 7

[经验] 4线电阻触摸屏校正学习

[复制链接]
  • TA的每日心情
    奋斗
    2020-5-27 15:41
  • 签到天数: 868 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-1-26 14:44:12 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 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)
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2018-1-4 09:36
  • 签到天数: 58 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2016-1-26 23:10:42 | 显示全部楼层
    楼主,能否提供代码?学习学习。

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

    使用道具 举报

  • TA的每日心情
    开心
    2019-11-30 19:48
  • 签到天数: 981 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-1-27 09:13:01 | 显示全部楼层
    感谢楼主分享!!!!!!!!!!!!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2016-8-15 09:28
  • 签到天数: 222 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2016-1-27 09:23:20 | 显示全部楼层
    同求楼主共享代码啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-23 13:44
  • 签到天数: 243 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2016-1-27 09:25:26 | 显示全部楼层
    同求楼主共享代码啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-5-27 15:41
  • 签到天数: 868 天

    连续签到: 1 天

    [LV.10]以坛为家III

     楼主| 发表于 2016-1-27 11:44:14 | 显示全部楼层
    okwh 发表于 2016-1-26 23:10
    楼主,能否提供代码?学习学习。

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-3-13 10:11
  • 签到天数: 1088 天

    连续签到: 2 天

    [LV.10]以坛为家III

    发表于 2016-1-30 16:34:47 | 显示全部楼层
    读出来的AD值还是比较线性的。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-5-27 15:41
  • 签到天数: 868 天

    连续签到: 1 天

    [LV.10]以坛为家III

     楼主| 发表于 2016-1-31 10:37:07 | 显示全部楼层
    本帖最后由 wambob 于 2016-1-31 10:38 编辑
    yanhaijian 发表于 2016-1-30 16:34
    读出来的AD值还是比较线性的。

    必须线性     
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-6-2 23:41 , Processed in 0.163865 second(s), 29 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.