摘 要:详细介绍了利用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个键按下时输出电压是:
定量仪是在线测量纸叶厚度的仪表。原来的定量仪有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转换电路时,若正好有空余通道,如上述定量仪的键盘电路,这种方法也是不错的选择。
第一种电路扩展的按键数量多,但没有多键保护;第二种电路有多键保护功能,但扩展的按键数量少,两者都可正常工作。