单片机矩阵按键的工作原理和组成部分

描述

单片机矩阵按键是一种常用的输入设备,它可以让用户通过按下不同的按键来控制单片机的功能。矩阵按键的原理是利用了电路的开关特性,将多个按键排列成一个矩阵,每个按键都连接了一行和一列的电路。当用户按下某个按键时,就会使得对应的行和列的电路导通,从而产生一个唯一的信号,这个信号可以被单片机识别并执行相应的操作。

矩阵按键的组成主要有两部分:按键和扫描电路。

按键是用来输入信号的部分,它可以是机械式的或者触摸式的,不同的按键可以有不同的标识,例如数字、字母或者符号。

扫描电路是用来检测信号的部分,它可以是硬件实现的或者软件实现的,它的作用是定时地给矩阵按键的每一行和每一列施加一个电压,并检测是否有电流流过,如果有,则说明有按键被按下,并根据行列号确定是哪个按键。

具体方法说明:

方法一:逐行扫描:我们可以通过低四位轮流输出低电平来对矩阵键盘进行逐行扫描,当高四位援收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。

方法二:

行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平,当接收到数据时,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下。这样就能够确定是哪一个按键按下了

扫描电路

矩阵按键如何变成独立按键?

留心发现,矩阵按键想要独立按键的话,只需要将高四位或者低四位永远拉低,那么就能把一行或者一列看作一个按钮,这样就变成了一个独立按键了。

程序展示:

#include< reg52.h >

typedef unsigned char u8;

typedef unsigned int u16;

u8 value;

unsigned char code sunduan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};

void delay(u16 t)

{

while(t--);

}

 

void key()

{

u8 a;

P3=0xF0;

if(P3!=0xF0)

{

delay(1000);

         if(P3!=0xF0)

{

P3=0xF0;

switch(P3)

{

case 0xE0:value=0;break;

case 0xD0:value=1;break;

case 0xB0:value=2;break;

case 0x70:value=3;break;

}

P3=0x0F;

switch(P3)

{

case 0x0E:value=value;break;

case 0x0D:value=value+4;break;

case 0x0B:value=value+8;break;

case 0x07:value=value+12;break;

}

while((a< 50)&&(P3!=0x0F))                //按键超时松开判断

{

delay(1000);

a++;

}

}

}

}

 

void main()

{

while(1)

{

key();

P2=sunduan[value];

}

}

效果展示:

下载程序到proteus仿真系统中。

我们在程序中设置了十六个按键分别对应的0~F这十六个数值,当我们按下第一个按键时,在数码管上显示的是0,当我们按下第二个按键时,显示的是数值1…

使用矩阵按键需要注意以下几点:

  • 矩阵按键需要与单片机相连接,通常使用多根导线或者排针来实现。
  • 矩阵按键需要配置好扫描电路,通常使用单片机的输入输出端口来实现。
  • 矩阵按键需要编写好扫描程序,通常使用单片机的定时器中断来实现。
  • 矩阵按键需要处理好信号干扰,通常使用去抖动技术来实现。

矩阵按键的作用主要有以下几种:

  • 矩阵按键可以作为单片机的人机交互界面,让用户可以输入数据或者选择功能。
  • 矩阵按键可以作为单片机的控制器,让用户可以控制单片机的运行状态或者输出结果。
  • 矩阵按键可以作为单片机的扩展器,让用户可以增加单片机的输入端口或者功能模块。
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分