AVR_A_D
所属分类:单片机开发
开发工具:C/C++
文件大小:431KB
下载次数:14
上传日期:2009-11-12 12:46:22
上 传 者:
boy364100
说明: AVR的A_D做触摸屏程序,效果非常的好
文件列表:
触摸屏实验_2\armok01124509.JPG (51357, 2006-11-15)
触摸屏实验_2\触摸屏实验_2.c (12182, 2006-07-29)
触摸屏实验_2\armok01124508.JPG (10351, 2006-11-15)
触摸屏实验_2\armok01124505.jpg (230454, 2006-11-15)
触摸屏实验_2\armok01124506.jpg (230454, 2006-11-15)
触摸屏实验_2\armok01124504.jpg (230454, 2006-11-15)
触摸屏实验_2\armok01124507.JPG (9953, 2006-11-15)
触摸屏实验_2 (0, 2006-11-15)
昨夜搬寝,搜出个以前毕业朋友sprite送的坏商务通。打开外壳,只见主控板已被电池液腐蚀得不成人样,继续拆螺丝,所幸显示屏部分还完好如初。见有个触摸屏的四线接口,便想着将其利用起来。
图一、触摸屏操作界面
[硬件部分]
查找我现在用的LCD控制IC RA8802的资料。就借用一下它的图说明一下:
图二、触摸屏构成
图三、原理
四线电阻式触摸屏是电阻式家族中应用最广、最普及的一种。其结构由下线路(玻璃或薄膜材料)导电ITO层和上线路(薄膜材料)导电ITO层组成。中间有细微绝缘点隔开,当触摸屏表面无压力时,上下线路成开路状态。一旦有压力施加到触摸屏上,上下线路导通,控制器通过下线路导电ITO层在X坐标方向上施加驱动电压,通过上线路导电ITO层上的探针,侦测X方向上的电压,由此推算出触点的X坐标。通过控制器改变施加电压的方向,同理可测出触点的Y坐标,从而明确触点的位置。
图四、电气原理图
图五、背部联线
图六、接口特写
[程序设计部分]
程序的思路描述如下:先分别拉高和置低X轴的两跟线,再对剩下两跟中的任一跟进行A/D值采样,得到X轴坐标;同样的道理,再采样Y轴坐标。至于图形的绘制就不用多说了,可参见前面示波器的文章。
[出现的问题]
大家可以仔细观看显示出来的图象,上面出现了很多离散的小点,当然,这可不是我特意弄上去的。
问题就出在这里了,在不触碰触摸屏的时候,光标停在中心点处,当在屏上“连笔”书写时,一切均正常;但是在落笔和抬笔的瞬间,光标将从中心到指定点运动,从而留下一排轨迹。这种情况如何处理?请有经验的朋友们多多赐教!
PS:今日下午晚些时候,我在触摸屏的每个引脚上都接了个27PF的贴片到地,但仍无明显改善。郁闷了~~
在X、Y轴上加弱上拉,避免在没有触摸的时候ADC输入悬空。
这几天忙着调程序,还没怎么上网,见谅!
首先多谢makesoft朋友的指点。基于这两天来的研究,已经能很好的滤除噪点,在此我想再多说几句,奉献给即将用或将来要用到触摸屏的朋友们。
[1]、在最初的程序设计中,已经用到了makesoft朋友提到的方法。但是效果却很不明显,分析原因是采样的速度相对较快,而采集X/Y轴坐标时需要不断转换端口状态,由于端口的电平还没建立起来就去采集A/D值是肯定有偏差的,这里甚至叫“错误”,现在我的解决办法是等待4-5个A/D周期,直到电平稳定了再去采集;
[2]、另外一个问题是“野点”的去除。现在的算法是每个轴的数据都采集采集三次,放在SampleVoltage[i]的数组里,在6次采样完后,(SampleVoltage[0]+SampleVoltage[2])>>1应和SampleVoltage[1]在一定的范围内,否则就作为野点抛弃处理。但是这样做,加长了坐标值读取的时间,在笔画运动较快的情况下会造成轨迹的不连续;
[3]、最后一个问题是有无接触的检测。原理很简单,在每次的坐标轴采样前,将底面膜拉低,检测顶膜的A/D值,当值小于某个值时就可认为接触,启动坐标轴转换工作。这样做带来的还有一个好处是可以做笔画的灵敏度设置,避免噪点的出现。
这是我这两天思考、实践出得到的一些东西,一家之言,难免有不合理的地方,还望大家指教!
近期下载者:
相关文件:
收藏者: