键盘结构及消抖方法

一、键盘结构及消抖方法

键盘分编码键盘和非编码键盘。编码键盘是指键盘上闭合键的识别由专用的硬件译码器实现,并产生键编号或键值,如BCD码键盘、ASCII码键盘等;非编码键盘是指按键的状态靠软件来识别。在单片机组成的测控系统及智能化仪器中,用得最多的是非编码键盘,本章着重讨论非编码键盘。

键盘中每个按键都是一个常开开关电路,如图7-2所示。当按键S未被按下时,P1.0输入为高电平;当S闭合时,P1.0输入为低电平。

常用的按键都是机械弹性开关,由于按键按下时的机械动作,免不了产生抖动,因此必须消除抖动影响。对于非编码键盘可由如图7-3所示的硬件电路或软件延时的方法来解决。对于编码键盘则由专门的接口电路(例如8279)自行消除抖动。

如图7-3所示电路实际上是由RS触发器构成的单脉冲电路。当按钮开关按下时Q端输出低电平,当开关松开时Q端恢复高电平,即输出一个负脉冲,以此消除抖动。

图7-2 按键电路

图7-3 去抖动电路

软件方式消除抖动的具体流程是:首先要判断是否有按键闭合,如果没有则调用延时子程序延时6ms返回,如果有按键闭合则调用延时子程序延时12ms,再判断是否有按键闭合,没有则延时6ms返回,如果有则判断闭合键键码,最后再判断闭合键是否释放,释放后则转键码处理。

非编码键盘可分为两类:独立式和矩阵式键盘。

1.独立式键盘

这是最简单的键盘电路,各个按键相互独立,每个按键独立地与一根数据输入线相连接,如图7-4所示。

图7-4 独立式按键接口电路

图7-5中(a)为中断方式,任何一个按键按下时,通过门电路都会向CPU申请中断,在中断服务程序中,读入P1口的值,从而判断是哪一个按键被按下。图7-5中(b)为查询方式,在未有按键按下时,所有的数据输入线都通过上拉电阻被连接成高电平;当任何一个键被压下时,与之连接的数据输入线将被拉成低电平。

2.矩阵式键盘

独立式按键电路每一个按键开关占用一根I/O口线,当按键数较多时,要占用较多的I/O口线。因此在按键较多的情况下通常多采用矩阵式键盘电路。

矩阵式键盘输入电路如图7-5所示,若有四根行线,四根列线,则构成4×4键盘,最多可定义16个按键。

图7-5 4×4矩阵键盘接口图