ADS7843连续读取一组触摸屏坐标值有时差异很大,需要对AD值进行处理。
一、用中值平均滤波:连续读取10组坐标,去掉最大值和最小值,余下的8组取算术平均值,但是效果仍不理想,表现在:
1。如果在触摸屏上某个位置轻轻的用触摸笔磨蹭或者轻按,会在较远的其它地方显示出这个点(程序中将触摸值变换为LCD坐标并显示出来,坐标变换部分应该没有问题),
2。如果爽快的用力的点在屏上也会出现上述情况,只是机率稍小一些;
3。我试了在手机的触摸屏不会出现这样的情况,不管轻按还是重按坐标都很准。
二、用XX滤波法:连续读取9组坐标,前三次(0,1,2)为一组,中三次(3,4,5)为一组,后三次(6,7,8)为一组,分别计算三组的平均值为m0,m1,m2,再将m0,m1,m2两两之间取差值得N01,N12,N20,如果这三个差值均大于某一个限定误差E(假设为3),则舍弃,否则取N01,N12,N20中最小的那两组的6次数据的平均值作为坐标。
这种屡波的问题:
1。当E比较小时,如E=3,不管是轻按磨蹭还是直截了当的重按,都不会出现偏离实际按的位置很远的情况,也就是说点显示的位置和按的位置高度吻合;但是却有另一个问题:要点N多次才能点出一个点来,大概要点六七次才能点出一个点。
2。当E设置比较大时,不会出现点很多次才能点出一个点的问题,但同时又会出现(一)所述的情况,也就是严重偏离实际点的位置的情况。
不知道各路侠客是否遇到过这类问题,对于触摸屏的防抖动及数据滤波有什么办法来解决上述问题? |