本帖最后由 珜羽 于 2012-6-2 01:58 编辑
就矩阵键盘的工作原理进行讲解。并介绍如何能做到识别复合按键。
以下以3X3键盘为举例:
A、B、C分别为3个数字引脚,做列线。
1、2、3也是3个数字引脚,做行线。
R1、R2、R3分别为1、2、3号引脚的上拉电阻。
RA、RB、RC分别为A、B、C号引脚的上拉电阻。
A、B、C旁边的按键模拟数字引脚输出为0。
红色方块表示为高电平,蓝色方块表示为低电平。
可以看到,默认的时候,1,2,3,A,B,C引脚全部为高,这个时候是没有按键按下。
当A1按键按下时:
这个时候是没有开始扫描的,是不知道有按键按下。
开始扫描,将A引脚拉低:
图中红色椭圆圈内的按键按下(模拟A引脚输出低电平)时,可以看到1号引脚的电位被拉低。
结合A列扫描,即可知道是A1按键按下。
然后继续扫描。A引脚不再拉低,将B引脚拉低:
图中红色椭圆圈内的按键按下(模拟B引脚输出低电平)时,可以看到1、2、3号引脚都是高电平。B列没有按键按下。
最后扫描。B引脚不再拉低,将C引脚拉低:
图中红色椭圆圈内的按键按下(模拟C引脚输出低电平)时,可以看到1、2、3号引脚还是高电平。C列没有按键按下。
最后结束扫描。一个扫描周期介绍,检测到了我们A1按键的按下。
如果A2,B1,B2同时按下会出现怎样的结果呢?
开始A列扫描后就会发现,A1按键没有按下但是1号线却是低电平?!!
原因如下图中的红线所示,1号线通过这样的连接被置地,让系统以为A1按键按下了。
如果在每个按键的出线加上二极管,如下图所示:
其他的按键A2,B1,B2不会对A1按键检测造成影响。这就实现了完全的任意组合按键识别。
PS:
在人工智能之五子棋机器人——人机对弈这个帖子中应用了这个原理来识别多个棋子
|