一文读懂矩阵键盘工作原理(详细教程)

admin 2025-03-13 111人围观 ,发现143个评论
矩阵键盘本质:

矩阵键盘本质是使用8个io口来进行16个按键的控制读取,可以减小io口的使用,用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上,设置一个按键。而这样的按键中按键的个数是4X4个。

这样的行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。节约单片机的资源,其本质和独立按键类似,就是进行逐行扫描和逐列扫描,然后判断是第几行的第几列个按键,进而进行整体按键值得确定,我们使用的矩阵键盘是接到了单片机的P1口通过读取P1口电平变换即可完成矩阵键盘的数值读取,具体原理图如下:

第一行接到p17,第二行接到p16,第三行接到p15,第4行接到p14
第一列接到p13,第二列接到p12,第三列接到p11,第四列接到p10

矩阵键盘扫描的方式有两种:1.行列扫描,2.逐行/逐列扫描

其中行列扫描适用于8个IO口接到了单片机8个连续的IO口,则可以进行行列扫描

逐行/逐列扫描适用于矩阵键盘接到了任意的IO口,则使用逐行,逐列扫描

接下来我们分别介绍这两种方式:

行列扫描:

原理:

先从P1口的高四位(四个行)输出高电平,低四位(四个列)输出低电平,假设有按键按下,从P1口的高四位读取键盘状态。判断高四位的四行哪一行变成了低电平,就知道是第几行,再从P1口的低四位(四个列)输出高电平,高四位(四个行)输出低电平,从P1口的低四位读取键盘状态。判断低四位的四列哪一行变成了低电平,就知道是第几列,将两次读取结果组合起来就可以得到当前按键的特征编码。使用上述方法我们得到16个键的特征编码。

红色高电平,蓝色低电平

详解:

据矩阵键盘的原理图可知,如果矩阵键盘的8个IO口连接到了连续的一个一个人P10-P17上,当没有按键按下时,将P1口的P1^0和P13置高电平P14和P17置低电平,也就是将4个行的IO口置高,4个列的IO口置低。也就是P1=0x0f(00001111);

如果这时候有按键按下那么P1^0和P13就有一个会变成低电平。因此P1的值就不等于0x0f,按下按键所在的行就会变成低电平,这是就可以判断有按键按下。

将对应P1口的值和0x0f(00001111)相与则可以得到高四位第几行变成了0

再给P1口赋值0X0f。将P1口的P1^0和P13置低电平P14和P17置高电平,也就是将4个低的IO口置高,4个列的IO口置高然后读取低四位的电平,此时的P1口(11110000)

读取此时的P1口和0xf0(11110000)相与则可以得到低四位第几列变成了低电平

比方说我们按下的是1x1按键,也就是第一行第一列,这时在按下之后可以看到和都是低电平,将Row=P10x0f;(行的值)和Col=P10xf0;//列值进行相加,就可以得到按下的是那个按键

1x1:(一行一列)
Row=P10x0f=00001110

Col=P10xf0=11100000
Row+Col=11101110=0xee

低电平0表示对应的行列按下

可以看到下方的和变成了低电平

2x2:(二行二列)
Row=P10x0f=00001101

Col=P10xf0=11010000
Row+Col=11011101=0xdd

3x4:(三行四列)
Row=P10x0f=00001011

Col=P10xf0=01110000
Row+Col=01111011=0x7b

这样就可以得到所有的16个按键的数值,具体代码如下:

unsignedcharkeyscan(){unsignedcharkey,Row,Col;P1=0x0f;if(P1!=0x0f){delay(10);//去抖if(P1!=0x0f){Row=P10x0f;//确保端口值正确(行的值)P1=0xf0;Col=P10xf0;//列值}while((P10xf0)!=0xf0);//判断键是否抬起}switch(Row+Col){case0xee:key=0;break;case0xde:key=1;break;case0xbe:key=2;break;case0x7e:key=3;break;case0xed:key=4;break;case0xdd:key=5;break;case0xbd:key=6;break;case0x7d:key=7;break;case0xeb:key=8;break;case0xdb:key=9;break;case0xbb:key=10;break;case0x7b:key=11;break;case0xe7:key=12;break;case0xd7:key=13;break;case0xb7:key=14;break;case0x77:key=15;break;}returnkey;}

运行效果图:

完整资料可进群免费领取!!!

猜你喜欢
    不容错过