1.独立式按键
其结构如图7-22所示,特点是每个按键单独占用一根I/O口线,每个按键工作不会影响其他I/O口线的状态;多用于所需按键不多的场合;可采用JNB(或JB)来查询哪一个按键按下,并转向相应的功能处理程序。
2.矩阵式键盘
单片机系统中,若使用按键较多时,通常采用矩阵式键盘,结构如图7-23所示。由图可知,一个4×4的行、列结构,可以构成一个含有16个按键的键盘,节省了很多I/O口。
图7-22 独立键盘结构及与单片机的接口
图7-23 矩阵键盘结构及与单片机的接口
控制方式:先判断是否有键按下。如有,再判断哪一键按下,并得到键码值,然后根据键码值转向不同的功能程序。矩阵式结构键盘比独立式按键要复杂,识别也要复杂一些。最常用的识别方法是键盘扫描法。
3.键盘设计需解决的几个问题
(1)按键的确认
键盘实际上是一组按键开关的集合,其每一个按键就是一个开关量输入装置。键的闭合与否,通过电平状态(高或低)的检测,便可确定相应按键是否已被按下。例如,高电平表示断开,低电平表示闭合。
(2)重键与连击的处理
实际按键操作中,若无意中同时或先后按下两个以上的键,系统确认哪个键操作是有效的完全由设计者的意志决定。
①以按下时间的长短为准;
②以最先按下的键为当前按键;
③也可以将最后释放的键看成是输入键。
通常总是采用单键按下有效,多键同时按下无效的原则(若系统设有复合键,当然应该另当别论)。
(3)按键防止抖动
1)按键抖动产生的原因
多数键盘的按键均采用机械弹性开关。其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。(www.xing528.com)
一个电信号通过机械触点的断开、闭合过程,完成高、低电平的切换。由于机械触点的弹性作用,一个按键开关在闭合及断开的瞬间必然伴随有一连串的抖动(触点在闭合和断开瞬间的电接触情况不稳定,造成了电压信号的抖动现象)。其波形如图7-24所示。抖动过程的长短由按键的机械特性决定,一般为5~10ms(或10~20ms)。
在触点抖动期间检测按键的通与断状态,可能导致判断出错。即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。
图7-24 按键抖动信号波形
2)键盘消除抖动的措施
为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。在键数较少时,可采用硬件去抖;而当键数较多时,采用软件去抖。
①硬件防抖技术。通过硬件电路消除按键过程中抖动的影响是一种广为采用的措施。这种作法工作可靠,且节省机时。硬件防抖技术包括两种:滤波防抖电路、双稳态防抖电路。
a.滤波防抖电路。利用RC积分电路对于干扰脉冲的吸收作用,只要选择好时间常数,就能在按键抖动信号通过此滤波电路时,消除抖动的影响。滤波防抖电路如图7-25所示。
当键K未按下时,电容C两端电压均为0,非门输出为1。
当K刚按下时,由于C两端电压不可能产生突变,尽管在触点接触过程中可能出现抖动,只要适当选取R1、R2和C值,即可保证电容C两端的充电电压波动不超过非门的开启电压(TTL为0.8V),非门的输出将维持高电平。
同理,当触点K刚断开时,由于电容C经过电阻R2放电,C两端的放电电压波动不会超过门的关闭电压,因此门的输出也不会改变。
图7-25 滤波防抖电路
只要R1、R2和C的时间常数选取得当,确保电容C由稳态电压充电到开启电压,或放电到关闭电压的延迟时间等于或大于10ms,该电路就能消除抖动的影响。
b.双稳态防抖电路。在硬件上可采用在键输出端加R-S触发器(双稳态触发器)或单稳态触发器构成去抖动电路。图7-26所示是一种由R-S触发器构成的双稳态防抖动电路,当触发器翻转时,触点抖动不会对其产生任何影响。键盘输出经双稳态电路之后变为规范的矩形方波。
图7-26 双稳态防抖电路
按键未按下时,A=0、B=1,输出Q=1,按键按下时,因按键的机械弹性作用的影响,使按键产生抖动,当开关没有稳定到达B端时,因与非门2输出为0反馈到与非门1的输入端,封锁了与非门1,双稳态电路的状态不会改变,输出保持为1,输出Q不会产生抖动的波形。当开关稳定到达B端时,因A=1、B=0,使Q=0,双稳态电路状态发生翻转。
当释放按键时,在开关未稳定到达A端时,因Q=0,封锁了与非门2,双稳态电路的状态不变,输出Q保持不变,消除了后沿的抖动波形。当开关稳定到达端A时,因A=0、B=1,使Q=1,双稳态电路状态发生翻转,输出Q重新返回原状态。可见,键盘输出经双稳态电路之后,输出已变为规范的矩形方波。
②软件防抖方法。如前所述,若采用硬件防抖电路,则N个键就必须配有N个防抖电路。因此,当键的个数比较多时,硬件防抖将无法胜任。在这种情况下,可以采用软件的方法进行防抖。当第一次检测到有键按下时,先用软件延时10~20ms(具体时间应视所使用的按键进行调整),而后再确认该键电平是否仍维持闭合状态电平。若保持闭合状态电平;则确认此键确已按下,从而消除了抖动的影响。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。