基于单片机的独立键盘与矩阵键盘检测

描述

独立键盘与矩阵键盘检测

NEWS

独立键盘与矩阵键盘介绍

独立键盘

独立键盘,是指每一个键位单独由一个IO口控制的按键。

矩阵键盘,主要是指像矩阵一样分布,由两个IO口(行IO与列IO)才能够识别的按键。

与按键所连接的IO口既可以输出也可以输入,检测按键主要通过检测IO口接受的电平信号来实现。

独立键盘

如图所示,所有键盘的IO口由P3控制,P3IO口由高到低的排列是P3.7~P3.0。

PART

01 独立键盘的检测

在对独立键盘进行检测之前,应当先确保其对应的IO口都处于高电平的状态,当按键被按下时,IO口与接地会接通,会接收到低电平信号。检测时只需依次对按键对应的IO口检测其是否有接收到低电平信号即可。

由于点平的变化并非完美的波形,其在按下与松开时会有短暂的不稳定的高低电平,因此要通过延时二次检测来进行防抖。

独立键盘

在本示例程序中对S2按键进行了检测,其中先对P3IO口进行设置都为高电平,key _S2已经提前配定义为了P3.4IO口,然后用判断语句来判断电平是否有变化,delay延时后在此进行检测,如果确实收到了低电平则开始执行对应程序。程序执行完毕后,用while函数来决定是否继续往下执行,只有彻底松开后才能够继续向下执行程序。

独立键盘

PART

02 矩阵键盘的检测

矩阵键盘不同于独立键盘,它需要对行和列都进行检测,检测原理与独立键盘一样,只是独立键盘的接地变成了为低电平的IO口。

独立键盘

在进行检测时,行和列必须有一个为高电平,有一个为低电平。我们在此要将逐一将列IO赋为低电平,行IO都为高电平然后去检测行IO是否接收到低电平。示例程序如下

//ju zhen an jian cheng xu

void matrix_key()

{

P3=0Xef;/ 将P3.4赋为低电平对S6所在列进行检测 /

matrix_demo=P3;//读取P3

matrix_demo=matrix_demo&0x0f;

//对P3低四位进行比较

if(matrix_demo!=0x0f)

{

delay(10);

matrix_demo=P3;

matrix_demo=matrix_demo&0x0f;

if(matrix_demo!=0x0f)

{

matrix_demo=P3;

switch(matrix_demo)

{

case 0xee://KEY_S6(1110 1110)

dis_num=7;

shiwan=dis_num/10;

wan=dis_num%10;

_shiwan=num_table[shiwan];

_wan=num_table[wan];

break;

case 0xed://KEY_S10(1110 1101)

dis_num=4;

shiwan=dis_num/10;

wan=dis_num%10;

_shiwan=num_table[shiwan];

_wan=num_table[wan];

break;

case 0xeb://KEY_S14(1110 1011)

dis_num=1;

shiwan=dis_num/10;

wan=dis_num%10;

_shiwan=num_table[shiwan]

;_wan=num_table[wan];

break;

case 0xe7://KEY_S18(1110 0111)

shiwan=15;wan=15;

_shiwan=num_table[shiwan];

_wan=num_table[wan];

break;

}

//检测按键是否断开,后四位是否恢复为高电平

while(matrix_demo!=0x0f)

{

matrix_demo=P3;

matrix_demo=matrix_demo&0x0f;

}

delay(10);

while(matrix_demo!=0x0f)

{

matrix_demo=P3;

matrix_demo=matrix_demo&0x0f;

}

}

}

上附程序为对S6所在列进行检测的程序。

PART

03 自我测验

自己编写程序使键盘达到以下效果。

1、开启单片机时,数码管前两位显示00;

2、按下S2按键数码管加1,到六十自动归 零

3、按下S3数码管减1,如果数码管为00,则 0-1变为60

4、按下S4归零

5、按下S5开/暂停计时,满六十归零

6、矩阵键盘十六个按键按下分别使数码管显 示0-F

本次讲解及示例使用的为郭天祥TX-1C的开发板。

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

全部0条评论

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

×
20
完善资料,
赚取积分