您当前的位置:五五电子网电子知识单元电路接口电路使用ADC作单片机键盘接口 正文
使用ADC作单片机键盘接口

使用ADC作单片机键盘接口

点击数:7103 次   录入时间:03-04 11:52:37   整理:http://www.55dianzi.com   接口电路

 摘 :详细介绍了利用AD转换器扩展单片机键盘的2种方法,并对这两种方法进行了分析和比较。这种方法实现简单,节省单片机资源,在智能仪表应用中具有实际意义。
  关键词:AD转换器;单片机;键盘;智能仪表

  在单片机系统中,键盘是常用的一种人机接口。一般来说,键盘的扩展分为2种,独立式和矩阵式,前者适用于按键数量少(一般小于4个)或规模小的系统,后者适合在按键数量较多的系统,但一般需要扩展接口芯片。因为单片机的I/O口有限,我们总是希望扩展键盘时占用尽量少的I/O口线。其实,A/D转换器也可以用来扩展键盘,而且不多占用I/O口线,按键的数量可多达几十个。
  使用AD转换器的键盘电路主要由一个电阻分压队列和一系列按键组成,如图1所示,图中电阻阻值相同,不同的按键按下时,VO端有不同的电压值输出给A/D转换器转换成不同的数字量,单片机据此进行按键识别。

  

1 第一种电路
  最容易想到的是图1(a)的连接方式,n个电阻组成的分压电路,每个分压点引出一个按钮,事实证明这种接法 是可以可靠工作的。第i个键按下时:

  以常用的8位ADC为例,其分辨率是1/256,理论上可以扩展256个按键,考虑到误差的因素以及工作可靠性取8/256,尚可扩展32个按键。
  这个电路存在一个显著的缺点,如果有2个键同时按下,当其中一个键是A1时,结果是A1有效,另一个无效;当这两个键都不是A1时,就会发生错误。最极端的情况是A2和An同时按下,此时VO是2.5 V,既不是A2的值,也不是An的值,其他的情况也和这种情况相似。所以这个电路对多键操作没有保护,多键操作会产生错误结果。
  如果在输出侧加二极管,如图中虚线,理论上是可以工作的。但仔细分析,发现由于二极管存在开启电压,实际上只能扩展很少几个按键。假设普通硅二极管,开启电压取0.7 V,第n个键的输出应满足:5/n>0.7n,n最大只能取2,显然不实用。

2 第二种电路
  对第一种电路稍加改进,就可以实现多键保护操作。 把最下面的电阻移一个位置,换到输出侧,如图1(b)所示。这个电路中,多个键同时按下时,只有最上面的那个键有效,其余都无效。这个电路还有一个优点,就是当没有键盘操作时,电路完全断开,不消耗能量,更适合低功耗设计的原则。
  图1(b)电路中,第i个键按下时输出电压是:


  同样以8位ADC为例,取VO的最小输出为8Vi/256,估算按键的数量:
    结果n最大为6,数量比较少,原因是按键的输出值不像图1(a)的连接那样,是不均匀的,按键输出值按调和级数减小,下降的速度太快,所以电路需要进一步改进。
  从图中分析各个按键的输出情况,可以发现最后一个电阻Rx对所有按键的输出都有影响,如果把最后一个电阻的阻值适当增大,按键输出值下降的速度会减慢。假设
取Rx为xR,此时,第i个键按下时输出电压是:
  依照上述条件和方法,对按键个数再做一次估算,取x=5,n最大为9。
  n的极值实际是由最后2个按键的最小电压差(键值 分辨率)决定的,设此值为1/A,则:
    可以得到,当 时,n有极大值。所以x也不是越大越好,他与最后2个按键的最小电压差有关,n的极值也与此有关。取 此时n有极大值。当键值分辨率提高,即A增大时,n的极大值增大,扩展按键数量增加,相应的Rx的阻值也要增大。

3 按键去抖动
  机械按键按下和弹起的瞬间,由于触点的弹性会产生一连串的抖动,一般的抖动时间是5~10 ms,普通按键动作的稳定时间是零点几秒。为了取得正确的键值,必须设法消除抖动的影响。对按键的去抖动,可以使用软件延时,多次采样的办法,图2是软件流程。当CPU检测到A/D转换值发生变化时,认为有按键动作,首先进行10 ms延时,然后再读取键值,为了可靠,一般要读取多次,进行比较(本例中是读取2次)。多次读取的键值,不可能是完全相同的,在误差允许范围内,就认为是相同的,为此,将键值的低2位忽略。

4 应用实例
  智能化是仪器仪表的发展方向,与普通仪表相比,智能仪表的主要特点是完全数字化、数据处理能力强、自制 性强、具有通信功能等。同时要求仪表更加小巧简洁、功耗更低。笔者在定量仪的升级改造中使用了A/D通道扩展按键的方法。

  

  定量仪是在线测量纸叶厚度的仪表。原来的定量仪有10个数字键、7个功能键、还有小数点、符号各1个键、确认键和复位键共21个按键,其中复位键单独接,不在讨论之列。改造时,首先采用单键复用、双键组合减少按键的数量:数字键、小数点和符号合用一个按键,功能键只用2个,保留确认返回键。
  定量仪的处理器是8031,其ADC使用的是ICL7135。ICL7135是4位半BCD码输出的高精度AD转换器。定量仪要采集的模拟信号有3路,原来的电路中用一个8路电子开关做通道选择,循环采样。现在只要把键盘电路接入第4路,其余都不用改变,键盘电路采用上述第二种接法。
  当然,硬件上精简了,软件上就要复杂一些,按键的判断、键盘处理子程序都要改变。

5 结 语
  有些单片机内置A/D转换器,如80C552等,这种方法在这些单片机上使用最为简单,只要把VO连接A/D转换器的输入端即可,但前提是单片机的A/D转换通道要有空闲。对不带ADC的单片机,如常用的89C51,当系统有A/D转换电路时,若正好有空余通道,如上述定量仪的键盘电路,这种方法也是不错的选择。
  第一种电路扩展的按键数量多,但没有多键保护;第二种电路有多键保护功能,但扩展的按键数量少,两者都可正常工作。

参考文献
[1]李华.MCS-51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993.
[2]丁茹.利用单片机A/D端口扩展键盘的一点改进 [J].单片机与嵌入式系统应用,2003,(1):77.
[3]WDT-3β定量仪使用说明[S].江门化工仪表厂,


本文关键字:单片机  接口  键盘  接口电路单元电路 - 接口电路

《使用ADC作单片机键盘接口》相关文章>>>