基于AVR微控制器的ADC按键设计技巧
出处:linchangquan 发布于:2007-04-10 09:41:37
1引言
在应用领域中,人机交互的途径和方式灵活多样,但键盘输人仍然是常见、重要的方法。通常实现键盘接口的方式有:直接输入、矩阵结构、A/D方式、键盘和显示复用、并行扩展、串口扩充以及用键盘和显示专用控制器件。本设计使用A/D转换的方法,其硬件电路简单,按键电路与MCU的连线少,易修改,而且可以节省MCU有限的I/0资源。但在处理按键数目较多的情况时,往往会出现按键不可靠的问题,如按键没有任何反映,按键功能交叉。本文除了给出A/D按键的硬件电路外.着重介绍利用软件技巧来实现可靠的键盘接口。
2硬件设计
本设计选用的单片机是基于AVR增强型RISC结构的低功耗8位CMOSATmegal68「1」该微控制器具有8个10位带采样保持电路的逐次逼近型ADC,以确保在转换过程中输入ADC的电压保持恒定。A/D转换按键的具体硬件电路如图l所示。A/D转换的方法不仅成本低、功耗少、体积小、布线灵活,而且与带MCU的主板的连接非常简单, 只需提供信号线和地线。
当按键接通或断开时,ATmega168通过A/D转换后对读取的电压值比较判断便可识别是否有按键按下。无按键按下时电路完全断开,符合低功耗设计的原则。这种结构的键盘具有自然的优先权,即某个按键按下后,其后的按键均无效。对于组合按键的输入,则通过将其中的按键分别与不同的A/D口相连来实现。中电容Cl的作用是消除干扰信号「2」
3 软件设计
软件设计是加转换按键处理的,一旦检测的A/D值不准,按键操作就会产生误动作和不动作,按键数目达到二三十个时,这种现象会经常出现,针对此种情况,本文在软件设计中做相应的技巧处理,按键处理程序的软件设计流程如所示。
首先,电阻阻值的选择决定了按键的数目,考虑到电压误差、电阻等因素,R0的阻值不能太小「3」。由实验得知,R0的阻值为20 kΩ~100 kΩ比较合适。ATmega168的A/D转换为10位,为提高按键分辨率,并保证按键的准确性,本设计只用高8位,而且设定相邻按键键值的差值一致,也就是将256等区间划分,这样可以实现较多的按键。然后根据定义好的键值用确定相应阻值。该程序每隔2 ms处理,每次采样,共采样6次,所以确定平均键值需要12 ms。延时去抖是通过再次求平均键值完成「4」,故确定按键是按下还是释放需要24 ms,这样不仅可以保证按键可靠,而且无需再加延时去抖过程。当采样6次后进行数字滤波,舍去其中的值和值,并且判断值与值之差是否超过2,是则认为无键按下,否则就将其余的4个采样值求平均值。当按键数目较多时,为提高按键处理程序的速度,在键值确定和按键识别程序中采用二分法「5.6」,即先与中间键键值比较,如果所得键值比其A/D值小则与前面按键的键值比较,否则与后面按键比较。考虑到电压波动、电阻以及人为操作等各方面因素的影响,对凡是符合每个键值±l区间的平均值都认为是正确的按键识别,否则为无键按下。
以下是用汇编语言编写的按键处理程序代码。经过实际装机测试,该方法效果很好,按键控制灵敏而且可靠、准确无误。
|
4 结束语
以上设计方案应用在带有30个按键的美式按摩椅上,取得了很好的效果,惟一不足之处在于,带有按键接口的PCB板必须在灰尘较小的环境中使用或者采用外壳装配,因为频繁的操作按键,会使大量的灰尘沉积在按键的表面使其接触电阻增大,终导致按键A/D值偏离。
参考文献:
[1]. RISC datasheet //tgdrjb.cn/datasheet/RISC_1189725.html.
[2]. ATmega168 datasheet //tgdrjb.cn/datasheet/ATmega168_144587.html.
[3]. PCB datasheet //tgdrjb.cn/datasheet/PCB_1201640.html.
上一篇:数字电源控制技术
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,//tgdrjb.cn,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 同步与异步电机大对比,高、低速电机全解析2025/6/27 16:13:28
- 无刷直流电机工作原理及方法2025/6/20 17:01:12
- 揭秘 BLDC 电机旋转的高效控制策略2025/6/17 15:18:21
- 全面解析:伺服电机、舵机与步进电机的差异区分2025/6/12 16:07:45
- TMS320F2808实现矢量控制变频调速2025/6/9 17:28:09