TA的每日心情 | 奋斗 2020-5-27 15:41 |
---|
签到天数: 868 天 连续签到: 1 天 [LV.10]以坛为家III
|
本帖最后由 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)
|
|