矩阵键盘
(或者,为什么你键盘没有一百零一根电线从里面伸出来)
这里还没有介绍“矩阵”的定义。在电子学中,“矩阵”是一种多路复用将多个输入或输出行放到网格,以减少输入/输出也许可以进行演示。
正如您可能知道或不知道的,一个简单的逻辑转换电路通常如下所示:
按钮__|__低分辨率。输入>---+--**-----/\/\/-->+Vcc|即10KOhm>>高分辨率。>即1兆欧|=== =接地
未按下开关时,输入被拉至地面(这通常是逻辑零)通过电阻器.按下开关时,下部阻抗电阻器超越高电阻,输入将为拉ed高(逻辑一). (如果你没有电子学,您可能想知道为什么需要两个电阻器和接地连接;原因是,如果没有它们,输入将被保留浮动当没有按下按钮时发出ing(没有电连接到任何东西),这是一件非常糟糕的事情数字逻辑)
现在,您可以通过重复这个电路来创建一组键,但每个键都需要一个单独的输入引脚!这可能适用于四个或五个键,但不适用于16键键盘或整个键盘。所以我们在每个输入引脚上多路复用多个键。
比方说,为了简单起见,我们有一个3x3键盘,如下所示:
闪光灯A B C|||> > >> > >> > >| | |I 1-O-O-O-O--O--/\/\/---+编号||||第|||页|U 2-O-O-O-O-O---/\/\/---+时间||||序号||||3-O-O-O-O-O---/\/\/---+|=== =接地
在该图中,每个O代表一个转换当按下时,在水平线和垂直线之间形成电气连接。例如,如果按下开关B1,线路B和1将短的我们在一起。
现在,这条现有的电路没有什么用处,因为没有任何东西与任何东西相连。但是如果你一次把所有的闪光灯都连接到逻辑高电平,你就会有一个问题:一行上的任何一个开关都会把输入拉高,你将无法区分是哪一列引起的!
答案在于闸门行:我们轮流打开每一个,读取输入引脚,然后关闭频闪并继续下一个。你可能会猜到,这就是所谓的触针。它做得足够快,不可能微控制器(或连接到输入端的任何东西)以“错过”一个闪光灯上的按键,而另一个闪灯打开算法要阅读上面所示的键盘,其外观如下:
关闭所有闪光灯。While(程序正在运行){打开闪光灯A。等待几微秒,使电路稳定。读取输入引脚(这些是键A1、A2和A3的状态)。关闭闪光灯A。打开闪光灯B。再等一会儿。读取输入引脚(B1至B3)。关闭闪光灯B。打开闪光灯C。再等一会儿。读取输入引脚(C1至C3)。关闭闪光灯C。}(循环回到顶部)
很简单,不是吗?当然,还有其他一些电气设计细节:你通常只希望闪光灯开车n强(意味着通过低阻抗电阻器连接到正电压),当电压较高时,驱动非常弱或处于浮动状态(称为高-Z表示“高阻抗”)1; 否则,闪光灯可能会相互“对抗”以驱动输入线。你可能也会二极管s,因此电流只能从选通线路流向输入线路,而不能反向流动。
同样的过程也可以用于输出,而不是输入——您可以设置输出值,并放置输出设备(例如发光二极管s) 如果每个选通线路在选通时变为“高”,则设置输出线路“低”将导致电流从高选通线路流向低输入线路,点亮该LED(或连接处的任何东西)。诀窍是频闪必须足够快,以便LED刷新率将比人眼所能感知的速度快,否则它们将出现闪烁2。这是LED的大小记分牌和显示(如Jumbotron公司)操作,也是背后的基本原则液晶显示器s和其他矩阵显示。(这也是一件好事;你能想象640x480 LCD面板需要307200个输出引脚吗?)
您甚至可以使用相同的选通线路来监测输入线路和设置输出线路,从而进一步减少引脚数量!许多前面板接口,如冰箱 制冰机s和自动售货机我们以这种方式运作。
最后,最终真实的键盘上没有101根电线的原因是矩阵编码器内置于键盘中。然后传输数据系列在PS/2型计算机接口。如果您曾经有过键盘随机输出虚假的按键,或输出某些键的错误代码故障几乎可以肯定是由于矩阵编码器损坏,或者可能是由于密钥矩阵本身短路或开路。
现在你知道了,而且知道是战斗的一半。
1在一些微控制器上,当高电平时强驱动输出,当低电平时Hi-Z被调用多驱动器针脚。
2顺便说一句,如果你有意将频闪速率降低到远低于人类感知的速度,并将所有输出线都拉低,那么你将创建一组追逐灯!