首页 > 学院 > 开发设计 > 正文

矩阵按键原理和BUG

2019-11-06 09:18:03
字体:
来源:转载
供稿:网友

当我们的电路有很多按键时,一般会采用矩阵方式与单片机相连来减少对单片机IO的浪费,如下图方式。这里写图片描述 这个电路的原理: 1、比如检测S13是否按下,单片机把Line4设为输出,并输出低电平,而Line3、Line2、Line1设为开路输入,或输出高电平,反正只要这三个脚不为低电平就行了。 2、设Row1、Row2、Row3、Row4为输入脚,单片机去读Row1、Row2、Row3、Row4,如果对应管脚为低,那么对应按键就被按下了,比如Row1为低电平,那么说明S13被按下;Row2为高电平,那么S14没有被按下,以此类推,就可以检测该列的按键状态。 3、检测完Line4列的按键,然后检测Line3列的按键,步骤同1。

由于按键存在抖动,一般我们要进行去抖动作,去抖方法有很多,可以自己网上查。下面说一下这个电路存在的BUG,如果你不需要多个按键同时按下的话这个电路是没有问题的,但是如果单独一个按键按下需要一个功能,几个按键同时按下又要一个功能;比如我们键盘上面的Ctrl + S 为保存功能,Ctrl + Alt + Delet 为任务管理功能一样。而这个电路如果有3个按键一起按下那么就有可能导致误操作,如下图:![这里写图片描述](http://img.blog.csdn.net/20170227151536388?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVhcl9XYWxseQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)扫描Line4列的按键时,如果S13、S9、S10同时按下时,Line4输出低电平通过S13传输到Row1读到低电平正常。图上可见,由于S9和S10同时按下,会使Row1和Row2短路,所以Row2也是低电平,由于扫描的是Line4列的按键,所以Row1对应S13、Row2对应S14、Row3对应S15、Row4对应S16、此时Row2是低电平所以会认为是S14按下了。其他列的也一样,所以大家要注意这个问题。
上一篇:Batch Normalization

下一篇:HALCON机器视觉

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表