对称式双电位扩展键盘设计
2013-12-29姜磊
摘要:本设计是基于MCU的一款高效率键盘输入系统。通过对分立按键和普通二极管的合理布局,实现了一种利用N个双向I/O端口确定N2+N个键值的键盘电路设计。实验证明,该键盘电路结构简单、抗干扰能力强、稳定性好,具有很高的使用价值。
关键词:MCU;键盘;扩展
中图分类号:TP302 文献标识码:A 文章编号:1009-3044(2013)28-6423-03
1 概述
一个好的MCU系统,通常需要有完备的人机交互接口。作为输入端的键盘是人机交互最基本的途径之一。常用的键盘布局有独立式键盘和矩阵式键盘两种。独立式键盘布局方式简单,适合端口数目冗余较大的场合;矩阵式键盘布局方式相对复杂,端口利用率较高。如(图1)八端口4*4矩阵式键盘是使用最广泛的键盘布局方式之一。
2 阶梯式键盘
由于人机交互的越加频繁、所需输入数据量的增加,矩阵式键盘由于占用了过多的端口显得臃肿而陈旧。为了解决按键占用端口数过多的问题,阶梯式键盘应运而生(图2)。阶梯式键盘的特点是舍弃了矩阵式键盘对端口行、列的设计,而是采用了将端口两两相交构成一个阶梯型的阵列,在这个阵列的每个交点处可以安置一个按键,使按键总数达到了N-1+1*N-12=N*N-12。阶梯式按键的原理是当任意一个按键被触发后连接器的两个端口的电位就会相同,由于按键是两两相交,所以可以据此确定唯一的按键值。
3 对称式键盘
通过对阶梯式键盘原理的分析可以发现,当MCU拉低P1时,通过P2、P3、P4的电位变化我们可以确定X1、X2、X3共3个按键是否被触发,当MCU拉低P2时,我们能够确定X4、X5这两个键是否被触发,而当P3被拉低后只能判断按键X6是否被触发。这说明每次扫描能够检测的按键数目有较大差异,为了充分利用软件开销,提出了对称键盘布局结构(图3)。但是这种完全对称的布局形式会引起按键冲突。阶梯式键盘通过端口的两两连接构成,键值通过在触发按键处连接的两个端口保持相同的电位确定。在观察图3的对称式键盘,任意两个端口的两条连线,都连接了两个按键,当任意两个端口被置为同电位后,MCU并不能确定是两条连线中哪一个按键被触发。
在阶梯式按键的键值扫描过程中,为了确定阶梯式按键的键值,会将MCU的端口依次拉低,而其余端口保持高电位。当有按键被触发后,被拉低的端口会与通过被触发按键与另一个端口直接连接,使其也被置为低位。当这两个端口同时置为低位时程序即可确定被触发的按键。这就是阶梯式按键的确定方式,通过上面的分析我们可以发现阶梯式按键那两个被指为低位的端口是由一个将另一个拉低的,其实质是高位端口的电位接到了之前被程序拉低的低位电位端口上。通过这个结论我们可以利用电位的变化顺序来确定按键键值,从而引入改进后的对称键盘布局,即对称式键盘布局(图4)。
对称式键盘布局与之前提到的对称键盘布局不同之处是对称式键盘在其对角线处放置二极管。由于MCU端口电压较小,普通二极管即可。该设计的原理就是利用二极管的单向导通性限制电流的流向,通过MCU对两个端口置为低电位的先后顺序确定是哪个按键的触发,因此对称式键盘的按键总数可以达到:N-1+1*N-1=N2-N。以4端口对称式键盘为例:首先将单片机的键盘端口P1、P2、P3、P4中的P1置为低位,其余三个置为高位。当按键X1触发时,P2通过二级管D2和按键X1与P1接通,P2被置为低位,由于P1先被置低,P2再被置低即可确定是按键X1被触发。按键X2、X3类似。在第二行的扫描过程中,MCU将P2置为低位,P1、P3、P4置为高位。当按键X4被触发时P1通过二极管D1和按键X4被P2置低,由此确定按键X4被触发。与阶梯式键盘不同的是,在对对称式键盘扫描的过程中,低位行会参与高位行键值的判断。
4 对称式双电位扩展键盘
与传统的矩阵式键盘相比对称式键盘在端口的利用率上有了很大的提高,设计表明对称式键盘仍然有较大的扩展空间。对称式键盘键值获取的原理是通过两两相交端口的电位变化以及变化顺序进行判断,如果通过增加只能造成单个端口电位变化的按键连接,即增加独立按键,从而获得对称式扩展键盘设计。对称式扩展键盘设计有两种方式,一是对称式低电位扩展键盘,二是对称式高电位扩展键盘。但是独立按键的引入容易造成与对称式键盘的冲突,如何规避这种冲突就是对称式扩展键盘的重点与难点。
对称式低电位扩展键盘(图5)。需解决的问题是按键冲突的识别。分析阶梯式键盘的键值扫描过程,可以发现在键值扫描过程中端口只有一个保持低位,而其余端口保持高位。当端口同时连接阶梯式键盘和接地的独立按键时,会出现两种情况。第一种情况是当某个接地的独立按键被触发,若按键连接的端口为MCU置为低位的端口,则按键触发不能被MCU捕捉。这种情况在按键扫描的过程中必然会出现,但不会对按键扫描的准确度有影响。以12MHz晶振的51系列单片机为例,单步指令执行周期为1us,以遍历式的扫描方式约需4*6N=24N步单周期指令(注:该文不对具体代码展开分析)。而单次按键的触发时间在10ms以上,两者在时间上至少相差两个量级,所以这种情况可以忽略。采用RISC指令集的AVR或ARM指令周期肯定会更快,造成影响也更小;第二种情况是当连接的端口为MCU置为高位的端口,那么连接按键的端口中将同时有两个端口被置为低电位,这时独立按键与阶梯式键盘按键发生冲突,MCU不能确定是两个按键中的哪一个被触发。为了克服这个问题,就要通过软件的方式进行二次判断。在系统按键扫描过程中,当某一端口被MCU置为低位,扫描发现出现第二个端口亦被为低位。MCU重新将被MCU置为低位的第一个端口重新置为高位,然后MCU再判断捕捉第二个端口的状态。若第二个端口此时亦拉回高电位,说明这是两个端口之间连接的按键被触发,第二个端口通过被触发按键将第一个端口拉高;若第二个端口电位不发生变化仍然保持低电位,这说明是与地相连的独立按键被触发,拉低了第二个端口的电位。这样,通过软件的设计,克服了接地独立按键与阶梯式键盘之间的按键冲突,达到了按键扩展的目的,完成对称式低电位扩展键盘的设计实现。
对称式高电位扩展键盘(图6),原理相对简单而且硬件效率更高,但是却一直不被人所熟知。在按键扫描过程中仅有一个为低电位,其余保持高电位。按键扫描过程中,当接高电位独立按键与处在高电位状态的端口连接时MCU不能捕捉到按键触发。不过当独立按键是与低电位状态的端口连接时,端口通过被触发的独立按键与高电位连接,而是端口被钳位在高电位,通过这个端口电位的变化MCU确定独立按键的键值。由MCU双向端口的电路设计,可以知道MCU可实时监控其双向端口的电位变化,由此迅速的捕捉按键触发,由于双向端口的电路设计不是本文的重点,所以不再展开分析。
对称式低电位扩展键盘和对称式高电位扩展键盘这两种键盘扩展方式,由于两者避免按键冲突的方式不同,所以按键布局的方式也有所不同。接高电位的独立按键应与MCU的双向端口直接连接,从而使端口的电位变化可以被迅速捕捉。若与对称式键盘连接,由于二极管的单向导通特性,独立按键的按键触发不能被捕捉无法获得键值。接地的独立按键则需与对称式按键连接,通过软件的判断来获取键值。因为接地的独立按键出发后为地电位,电流流向是MCU端口流向独立键盘,二极管不会造成影响。所以对称式键盘的两种扩展方式可以完美结合,构成对称式双电位扩展键盘(图7)的按键布局设计,这种按键布局设计可将I/O端口的利用率达到最大化。在实际的工程设计中,对MCU的双向端口要联接上拉电阻。其原理以51系列单片机为例,由于单片机的拉电流较小,约1到2mA,而单个端口的灌电流可以达到10mA以上,为了增加灌电流为端口准备4kΩ左右的上拉电阻是非常有必要的。
5 总结
通过上面的分析可以得出N个端口对称式双电位扩展键盘的最大按键数的公式为:
N-1+1*N-1+N+N=N2+N
不使用二极管,仅通过按键布局构成阶梯式双电位扩展键盘获得的最大按键数为:
N-1+1*N-12+N+N=N*N-12+2N
对称式双电位扩展键盘远高于矩阵式键盘的端口利用率,在端口资源紧张的情况下,意义显得尤为重要。相信在不久的将来对称式双电位扩展键盘占用端口少,扫描效率高这些优点将会被人们接受,并在键盘设计中被广泛采纳。
参考文献:
[1] 赵建领,崔昭霞.精通51单片机开发技术与应用实例[M].北京:电子工业出版社,2012.
[2] 陈忠平.基于Proteus的51系列单片机设计与仿真[M].北京:电子工业出版社,2012.
[3] 刘然.一种新颖的键盘扫描方法与仿真实现[J].电子制作,2008,(7):33-37.
[4] 宋戈,黄鹤松,员玉良.蒋海峰.51单片机应用开发范例大全[M].北京:人民邮电出版社,2012.
[5] 李朝清.单片机接口及原理技术[M].北京:北京航空航天大学出版社,2005.