0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

4x4矩阵键盘工作原理及扫描程序

姚小熊27 来源:网络整理 2018-02-24 15:30 次阅读

矩阵键盘扫描

4x4矩阵键盘工作原理及扫描程序

矩阵键盘的原理图

根据矩阵键盘的原理图可知,当没有按键按下时,P1=0xf0;然后依次将P1^0~P1^3单独置低电平,其他置高,再扫描各列的状态,来判断是哪个按键按下,比如,将P1^0输出低电平,其他的引脚都输出高电平,即P1=0xfe,那么当第1行有按键按下时P1的相应值为,

1X1(01111110=0x7e)1X2(10111110=0xbe)1x3(11011110=0xde)1X4(11101110=0xee)

将P1^1输出低电平,其他的引脚都输出高电平,即P1=0xfd,那么当第2行有按键按下时P1的相应值为,

2X1(01111101=0x7d)2X2(10111101=0xbd)2x3(11011101=0xdd)2X4(11101101=0xed)

将P1^2输出低电平,其他的引脚都输出高电平,即P1=0xfd,那么当第2行有按键按下时P1的相应值为,

3X1(01111011=0x7b)3X2(10111011=0xbb)3x3(11011011=0xdb)3X4(11101011=0xeb)

将P1^3输出低电平,其他的引脚都输出高电平,即P1=0xfd,那么当第2行有按键按下时P1的相应值为,

4X1(01110111=0x77)4X2(10110111=0xb7)4x3(11010111=0xd7)4X4(11100111=0xe7)

/*

程序中用到了置位,如果检测第一行时置位为0xfe,是为了初始化一下P1口,初始化后

*/

#include《reg52.h》

unsignedintVal;

voidDelay(unsignedintt);

voidmain(void)

{

while(1)

{

if(P1!=0xf0)//当没有按键按下时,P0=0xf0;

{

Delay(1500);//去抖

if(P1!=0xf0)//表示按键还在按下,判断是哪个按键

{

P1=0xfe;//置位为fe,检测第一行11111110

//根据矩阵键盘原理图,当非第一行有按键按下时P1一直保持为0xfe

if(P1!=0xfe)//将P1置为0xfe后,经过一个指令周期后如果它还是0xfe说明按下的键不在第一行

{

Val=P1;

Delay(1500);//去抖

while(P1!=0xfe);//等待按键弹起

P0=Val;

}

P1=0xfd;//置位为fd,检测第二行11111101

if(P1!=0xfd)

{

Val=P1;

Delay(1500);

while(P1!=0xfd)

P0=Val;

}

P1=0xfb;//置位为fb,检测第三行11111011

if(P1!=0xfb)

{

Val=P1;

Delay(1500);

while(P1!=0xfb)

P0=Val;

}

P1=0xf7;//置位为f7,检测第四行11110111

if(P1!=0xf7)

{

Val=P1;

Delay(1500);

while(P1!=0xf7)

P0=Val;

}

}

}

}

}

voidDelay(unsignedintt)

{

while(--t);

}

4X4矩阵键盘扫描

1. 4根行线的GIO均设为Output,根列线的GIO均设为Input;

2. 4根行线的GIO分别置为0111、1011、1101、1110,读逐一读取列线GIO的值,可确定是哪一个按键;

威廉希尔官方网站 图如下:

4x4矩阵键盘工作原理及扫描程序

注意:

1. 图中用作输入的GIO,一定要有一个上拉电阻

2. 芯片中的每一个引脚是否用作了GPIO口来用,需配置芯片的寄存器,使引脚当作GPIO口来使用,才会有效。

4x4矩阵键盘工作原理及程序

4x4矩阵键盘工作原理及扫描程序

矩阵键盘的动态扫描确实略显复杂,不可能就是读一个端口数据,然后马上就出来结果。这需要对依次每一行的按键进行扫描、判断,然后得出结果。如上图所示,先扫描第一行,也就是S1,S2,S3,S4四个按键的状态。在PA口输入0XFE。

0XFE变成二进制是11111110,为了方便使用,记得每四个数之间加一个空格。11111110这个数据放到PA口上,假设这个时候S1被按下了,会出现什么情况?因为PA0是低电平,S1被按下之后S1导通,导致PA4的电平从1降到0,于是PA端口的数据就变成了11101110,换算成16进制就是0XEE。于是我们知道S1被按下了。

假设是S3被按下,会出现什么情况?没错,PA6的电平被拉低,PA的端口数据变成了10111110,也就是0XBE。这样,我们就知道了,每一行的每一个按键被按下的时候,都会有一个对应的独一无二的值。这就是矩阵键盘的扫描原理!送上一段源码。

voidmatrixkeyscan()

{

uchartemp,key;

P3=0xfe;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delayms(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case0xee:

key=0;

break;

case0xde:

key=1;

break;

case0xbe:

key=2;

break;

case0x7e:

key=3;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

display(key);

}

}

P3=0xfd;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delayms(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case0xed:

key=4;

break;

case0xdd:

key=5;

break;

case0xbd:

key=6;

break;

case0x7d:

key=7;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

display(key);

}

}

P3=0xfb;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delayms(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case0xeb:

key=8;

break;

case0xdb:

key=9;

break;

case0xbb:

key=10;

break;

case0x7b:

key=11;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

display(key);

}

}

P3=0xf7;

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delayms(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

temp=P3;

switch(temp)

{

case0xe7:

key=12;

break;

case0xd7:

key=13;

break;

case0xb7:

key=14;

break;

case0x77:

key=15;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

display(key);

}

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 矩阵键盘
    +关注

    关注

    7

    文章

    206

    浏览量

    31469
收藏 人收藏

    评论

    相关推荐

    基于FPGA的4x4键盘矩阵

    基于FPGA的4x4键盘矩阵
    发表于 12-14 01:26

    4*4矩阵键盘设计及源代码

    4*4矩阵键盘设计及源代码 一 实验目的1 学习使用4X4 扫描
    发表于 02-08 16:30 472次下载

    4X4键盘程序

    4X4键盘程序 //-----------4X4键盘程序--------------// uc
    发表于 10-17 15:15 1351次阅读

    4x4矩阵键盘程序及原理图PCB

    4x4矩阵键盘程序及原理图PCB,供大家下载。
    发表于 12-21 18:25 0次下载

    4X4键盘显示源程序

    4X4键盘显示源程序,感兴趣的可以看看。
    发表于 06-22 15:56 1次下载

    51键盘扫描程序

    51键盘扫描程序,包含3X4矩阵键盘4X4
    发表于 08-18 18:00 8次下载

    使用51单片机设计4X4矩阵键盘电子琴的威廉希尔官方网站 图和程序免费下载

    本文档的主要内容详细介绍的是使用51单片机设计4X4矩阵键盘电子琴的威廉希尔官方网站 图和程序免费下载。
    发表于 08-23 17:30 14次下载
    使用51单片机设计<b class='flag-5'>4X4</b><b class='flag-5'>矩阵</b><b class='flag-5'>键盘</b>电子琴的威廉希尔官方网站
图和<b class='flag-5'>程序</b>免费下载

    使用单片机实现4x4矩阵键盘程序免费下载

    本文档的主要内容详细介绍的是使用单片机实现4x4矩阵键盘程序免费下载。
    发表于 08-20 17:31 12次下载
    使用单片机实现<b class='flag-5'>4x4</b><b class='flag-5'>矩阵</b><b class='flag-5'>键盘</b>的<b class='flag-5'>程序</b>免费下载

    使用51单片机实现4x4矩阵键盘程序免费下载

    本文档的主要内容详细介绍的是使用51单片机实现4x4矩阵键盘程序免费下载。
    发表于 07-04 17:41 11次下载
    使用51单片机实现<b class='flag-5'>4x4</b><b class='flag-5'>矩阵</b><b class='flag-5'>键盘</b>的<b class='flag-5'>程序</b>免费下载

    使用51单片机设计4X4矩阵键盘程序免费下载

    本文档的主要内容详细介绍的是使用51单片机设计4X4矩阵键盘程序免费下载。
    发表于 06-27 17:42 16次下载
    使用51单片机设计<b class='flag-5'>4X4</b><b class='flag-5'>矩阵</b><b class='flag-5'>键盘</b>的<b class='flag-5'>程序</b>免费下载

    4X4矩阵键盘的应用仿真威廉希尔官方网站 图和keil程序免费下载

    本文档的主要内容详细介绍的是4X4矩阵键盘的应用仿真威廉希尔官方网站 图和keil程序免费下载。
    发表于 05-14 17:31 38次下载
    <b class='flag-5'>4X4</b><b class='flag-5'>矩阵</b><b class='flag-5'>键盘</b>的应用仿真威廉希尔官方网站
图和keil<b class='flag-5'>程序</b>免费下载

    使用单片机实现数码管显示4X4键盘矩阵按键的程序和仿真资料免费下载

    本文档的主要内容详细介绍的是使用单片机实现数码管显示4X4键盘矩阵按键的程序和仿真资料免费下载。
    发表于 06-01 14:18 38次下载
    使用单片机实现数码管显示<b class='flag-5'>4X4</b><b class='flag-5'>键盘</b><b class='flag-5'>矩阵</b>按键的<b class='flag-5'>程序</b>和仿真资料免费下载

    使用单片机实现4X4键盘矩阵控制条形LED显示的程序和仿真资料免费下载

      本文档的主要内容详细介绍的是使用单片机实现4X4键盘矩阵控制条形LED显示的程序和仿真资料免费下载。
    发表于 06-01 14:18 22次下载
    使用单片机实现<b class='flag-5'>4X4</b><b class='flag-5'>键盘</b><b class='flag-5'>矩阵</b>控制条形LED显示的<b class='flag-5'>程序</b>和仿真资料免费下载

    4x4矩阵键盘工作原理扫描程序

    ,所以必须外接上拉电阻,当I/O口为P1、P2和P3口时,由于内部已有上拉电阻,因此可省略外接的上拉电阻。 二、按键消抖 单片机系统中所使用的键盘都是机械式的弹性按键,因为存在机械触点的弹性作用,在按键闭合和弹起的瞬间都会出现抖动,如图
    的头像 发表于 04-07 14:36 7729次阅读
    <b class='flag-5'>4x4</b><b class='flag-5'>矩阵</b><b class='flag-5'>键盘</b><b class='flag-5'>工作原理</b>及<b class='flag-5'>扫描</b><b class='flag-5'>程序</b>

    带有stm32的宏键盘4x4矩阵

    电子发烧友网站提供《带有stm32的宏键盘4x4矩阵.zip》资料免费下载
    发表于 07-28 14:19 5次下载
    带有stm32的宏<b class='flag-5'>键盘</b><b class='flag-5'>4x4</b><b class='flag-5'>矩阵</b>