1 矩阵键盘和独立按键有什么区别?
严格意义上来说,如图所示,红色部分为独立按键,蓝色部分为矩阵键盘。
两者之间的区别主要是结构上的不同:
(1) 独立按键:由图可以看到四个独立按键的左端口都接CON3(即接地),右端口则各自连接一个I/O端口,如下图上半部分。(I/O端口可简单理解为一个接口即可)
(2)矩阵键盘:其左右端都是I/O端口,如下图下半部分。
2 矩阵键盘和独立按键的工作原理
同独立按键的原理类似(见上上篇),右端默认I/O口是高电平(存在VCC),按键未按下时,左右两端的I/O口是没有连接起来的,且左端的I/O口可0可1(未按下时)
矩阵扫描
我们这里以按行扫描为例,第一行 -> ...->第四行,则右端端口就是代表行,左端端口代表列,每一行连接同一个行端口,每一列连接同一个列端口。(如第一行键盘的行端口都为R1,第一列键盘的行端口都为C1)
当矩阵键盘扫描到该行时,该行所有的按键右端端口都置为0,如图,扫描矩阵键盘的第一行,第一行所有的按键右端端口都置为0,234行按键右端端口都仍为1。
若扫描对应的行内有按键被按下时,左右两端的I/O口就被连接了起来,打通后右端端口的低电平传到了左端端口,则左端端口也就自然变成了低电平。因此,判断按键被按下的突破口就是左端的端口,当左端的端口为低电平时,表示按键被按下。
那么,如何判断左端的端口呢?可以在进行行扫描后再进行列扫描。 比如,当扫描到第二行时,右端端口只有第二行为0,其他行为1,然后进行列扫描,判断此时的列端口是否有低电平第一列 ->...-> 第四列,发现第三列为低电平,那么就说明矩阵键盘的第二行第三列的位置的按键被按下。
参考视频:
【基础技能07】矩阵键盘的扫描原理与基本应用_哔哩哔哩_bilibili
3. 矩阵键盘和独立按键的关系
比较两个的原理,判断按下与否都是看对应端口是否为低电平,因此,有时候,独立按键也可做为矩阵键盘使用,但矩阵键盘不能当独立按键按键使用。
当J5 的跳帽接到独立按键两个引脚时,此时只有独立按键S4~S7能用;
当J5的跳帽接到矩阵键盘的引脚时,此时S4~S19都能使用,即独立按键做为矩阵键盘的一部分使用。
那么为何要设置不同的矩阵键盘和独立按键呢?
查了一下资料说是当按键所需小时,用独立按键就能减少I/O口的设置,降低成本之类的吧。
欢迎指正。