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值,当值小于某个值时就可认为接触,启动坐标轴转换工作。这样做带来的还有一个好处是可以做笔画的灵敏度设置,避免噪点的出现。 这是我这两天思考、实践出得到的一些东西,一家之言,难免有不合理的地方,还望大家指教!

近期下载者

相关文件


收藏者