谁能给我讲明白单片机的4x4矩阵键盘工作原理

这是c程序
#include<AT89X51.H>
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsignedchartemp;unsignedcharkey;unsignedchari,j;voidmain(void){while(1){P3=0xff;P3_4=0;temp=P3;temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp&0x0f;if(temp!=0x0f){temp=P3;temp=temp&0x0f;switch(temp){case0x0e:key=3;break;case0x0d:key=2;break;case0x0b:key=1;break;case0x07:key=0;break;}temp=P3;temp=temp&0x0f;while(temp!=0x0f){temp=P3;temp=temp&0x0f;}P0=table[key];}}P3=0xff;P3_5=0;temp=P3;temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp&0x0f;if(temp!=0x0f){temp=P3;temp=temp&0x0f;switch(temp){case0x0e:key=7;break;case0x0d:key=6;break;case0x0b:key=5;break;case0x07:key=4;break;}temp=P3;temp=temp&0x0f;while(temp!=0x0f){temp=P3;temp=temp&0x0f;}P0=table[key];}}P3=0xff;P3_6=0;temp=P3;temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp&0x0f;if(temp!=0x0f){temp=P3;temp=temp&0x0f;switch(temp){case0x0e:key=11;break;case0x0d:key=10;break;case0x0b:key=9;break;case0x07:key=8;break;}temp=P3;temp=temp&0x0f;while(temp!=0x0f){temp=P3;temp=temp&0x0f;}P0=table[key];}}P3=0xff;P3_7=0;temp=P3;temp=temp&0x0f;if(temp!=0x0f){for(i=50;i>0;i--)for(j=200;j>0;j--);temp=P3;temp=temp&0x0f;if(temp!=0x0f){temp=P3;temp=temp&0x0f;switch(temp){case0x0e:key=15;break;case0x0d:key=14;break;case0x0b:key=13;break;case0x07:key=12;break;}temp=P3;temp=temp&0x0f;while(temp!=0x0f){temp=P3;temp=temp&0x0f;P0=table[key];}}}}}
延时一段时间去抖动是什么意思?

给P1赋值0xf0,这时P1^4,P1^5,P1^6,P1^7为高电平,P1^0,P1^1,P1^2,P1^3为低电平。如果这时候有按键按下那么P1^4,P1^5,P1^6,P1^7就有一个会变成低电平。因此P1的值就不等于0xf0,这是就可以判断有按键按下。

4x4矩阵键盘的工作原理是在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,通过读入输入线的状态就可得知是否有键被按下。

扩展资料:

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

参考资料来源:百度百科-矩阵键盘

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-08
首先,给P1赋值0xf0,这时P1^4,P1^5,P1^6,P1^7为高电平,P1^0,P1^1,P1^2,P1^3为低电平。如果这时候有按键按下那么P1^4,P1^5,P1^6,P1^7就有一个会变成低电平。因此P1的值就不等于0xf0,这是就可以判断有按键按下。
然后延时一段时间去抖动,然后给P1赋值0xfe,也就是P1^0为低电平,其他为高电平,这时如果有在P1^0线上的P1^4,P1^5,P1^6,P1^7有按键按下,那么就会出现低电平,从而判断哪个按键按下;如果没有那么就给P1赋值0xfd,也就是P1^1为低电平,其他为高电平.,相同方法判断是否有按键按下;如果没有那么就给P1赋值0xfb·····如此类推,一共四次检测。本回答被提问者采纳

4x4矩阵键盘的工作原理是什么?
4x4矩阵键盘的工作原理是在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,通过读入输入线的状态就可得知是否有键被按下。

4x4矩阵键盘的工作原理是什么?
工作的原理是:用4条I\/O线作为行线,4条I\/O线作为列线组成的键盘。在行线和列线的每个交叉点上,设置一个按键。而这样的按键中按键的个数是4 X 4个。这样的行列式键盘结构能够有效地提高单片机系统中I\/O口的利用率。 本回答由网友推荐 举报| 答案纠错 | 评论 9 3 金醋 采纳率:62% 擅长: 暂未定制 其...

谁能给我讲明白单片机的4x4矩阵键盘工作原理
4x4矩阵键盘的工作原理是在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,通过读入输入线的状态就可得知是否有键被按下。

4x4按键矩阵原理是什么?为什么要移位?他是怎么样确认按键位置的,求教大 ...
这个是高低电平反转法确定4x4按键,P1口4位接行矩阵四位接列矩阵。首先让P1口高四位为0,低四位为1。若有按键按下,则低四位中会有一个1翻转为0,高四位不会变,此时即可确定被按下的键的列位置。然后让P1口高四位为1,低四位为0。若有按键按下,则高四位中会有一个1翻转为0,低四位不会...

矩阵键盘矩阵式键盘的结构与工作原理
矩阵式键盘相较于传统设计,结构更为复杂,识别过程也稍显复杂。具体操作是,列线通常连接到正电源并通过电阻,而行线连接到单片机的输出I\/O口。当没有按键按下时,所有输入端保持高电平,表示无键触发。单片机的行线输出低电平,一旦有按键被按下,输入线就会被拉低。通过读取输入线的状态,我们可以...

矩阵键盘原理
矩阵键盘原理是:矩阵键盘是单片机外部设备中所使用的排布类似于矩阵的键盘组,按键设置在行、列线交点上,行、列线分别连接到按键开关的两端,行线通过上拉电阻接到加5V电源上,无按键按下时,行线处于高电平的状态,而当有按键按下时,行线电平与此行线相连的列线电平决定。

单片机中的4×4矩阵键盘的键值怎么求?
原理如同矩阵数列的行列式 可以用下述代码进行:\/\/*** \/\/函数功能: \/\/单片机驱动4*4键盘,读入键盘值并使用数码管静态 \/\/显示按键键值,若没有数码管用8421码显示LED灯也可以的 \/\/读入原理:先令单片机端口输出11110000读一次,然后 \/\/再令单片机输出00001111读一次把两次的值相加,最后 ...

4×4矩阵键盘的工作原理 )
矩阵键盘电子琴项目的单片机最小系统设计的详细讲解,设计原理

矩阵式键盘的工作原理是什么?
单片机就是利用这种方法对整个键盘进行扫描。所谓扫描,就是CPU不断对行线逐行置低电平,然后检查列线输入状态确定按键情况。若无键按下,行线与列线没有相连,列线上全是高电平或说全为“1”。当有键按下时,总有键把某行某列线短接,使列线端口不全为高电平,即不全为“1”。

数码管显示4×4键盘矩阵按键
4. 显示原理与实现:实现这一功能的具体方式依赖于使用的硬件和软件。微控制器需要通过编程来读取键盘的输入,处理输入数据,然后控制数码管显示相应的状态。这通常涉及到编程语言和微控制器的特定功能。总的来说,通过微控制器和编程,我们可以实现数码管显示4×4键盘矩阵按键的功能,将用户的输入...

相似回答