现在的位置: 首页 > 综合 > 正文

矩阵式键盘及去抖动

2019年03月26日 ⁄ 综合 ⁄ 共 643字 ⁄ 字号 评论关闭

http://blog.csdn.net/zhandoushi1982/article/details/5420294

    在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍。而且线数越多,支持区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。如下:


      上图中,列线通过电阻接电源拉高,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入,通过不断的检测输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。一旦有键按下,行线输出是低电平,则输入线就会被拉低,这样通过读入输入线的状态就可得知是否有键按下了。

      对于按键和触摸屏等机械设备来说,都存在一个固有问题,那就是“抖动”,按键从最初接通到稳定接通要经过数毫秒,其间可能发生多次“接通-断开”。如果不消除“抖动”的影响,一次案件可能被理解成多次按键。

      消除按键抖动影响的方法是:在判断有按键按下后,进行软件延时(如20ms,在延时过程中要屏蔽对应中断),再判断键盘状态。如果仍处于按键按键按下状态,则可以断定该按键被按下,否则清除。如果按键本身不具备中断输入功能,则可以完全改为查询方式,也即20MS后查询是否处于按下状态,是的话就确认,否则清除。

抱歉!评论已关闭.