矩阵式键盘及去抖动

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

                                   

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

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

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值