蓝桥杯 矩阵键盘的使用

发布时间:2024-11-16 19:08

使用决策工具:如决策矩阵或决策轮盘 #生活知识# #生活心理学# #生活技能训练# #决策制定技巧#

文章目录

前言一、矩阵键盘的原理二、矩阵键盘应用 1.使用准备2.代码总结

前言

矩阵键盘是通过行列扫描检测,相当于坐标确定按键按下的位置。

矩阵键盘相对独立按键来说,占用I/O口较少,4X4键盘共16个位置,占用了8(4+4)个I/O口。独立按键8个I/O口对应8个按键。

使用情况:

当按键使用量少时,使用独立按键,操作更加方便。

当按键使用量较多时,建议使用矩阵键盘,节省I/O。

一、矩阵键盘的原理

图片来源:百度

如图所示,共占用了8条线路(8个I/O口),垂直方向连接按键的4条线路分别为L1、L2、L3、L4;水平方向连接按键的4条线路分别为H1、H2、H3、H4。

将其想象为坐标,L为x方向,H为y方向。当S1按下时,坐标为(1,1);当S8按下时,坐标为(4,2)。

按照上面的理解,矩阵键盘在没有按下的状态为高电平,即为'1',当有按键按下时,状态为'0'。

矩阵键盘按照行列式方法进行扫描,如按列扫描就是先检测x=1的一列上是否有为0的按键,再扫描x=2的一列上是否有为0的按键,x=3的一列上是否有为0的按键,x=4的一列上是否有为0的按键。但是,检测到只是检测到,矩阵键盘的使用需要在检测到之后执行相应的代码。如:若(2,3)按键按下,输出(2,3)。

二、使用步骤

1.准备

矩阵键盘的使用中会存在逻辑运算,何为逻辑运算?就是与或非等运算。

接下来通过实例进行讲解逻辑运算:

设P0=XXXX XXXX(X为未知状态,不知道为0还是为1)

(1)或运算(符号: '|')

P0|0x0f

XXXX XXXX

0000 1111

---------

XXXX 1111

通过或运算,可将P0的后4为置1;

(2)与运算(符号: '&')

P0&0x0f

XXXX XXXX

0000 1111

---------

0000 XXXX

通过或运算,可将P0的前4为置0;

(3)非运算(符号: '~')设P0=0101 0101

P0=~P0

0101 0101

---------

1010 1010

通过非运算,可将P0的0变为1,1变为0;

2.代码

代码如下(示例):

unsigned char temp;

P44=0;P42=1;P3=0X7F;

temp=P3;

temp=temp&0X0F;

if(temp!=0X0F) /检测到有按键按下

{

Delayms(5);

temp=P3;

temp=temp&0X0F;

if(temp!=0X0F)

{

temp=P3;

switch(temp)

{

case 0X7E: num=1;break;

case 0X7D: num=2;break;

case 0X7B: num=3;break;

case 0X77: num=4;break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp&0X0F;

}

}

}

P44=1;P42=0;P3=0XBF;

temp=P3;

temp=temp&0X0F;

if(temp!=0X0F)

{

Delayms(5);

temp=P3;

temp=temp&0X0F;

if(temp!=0X0F)

{

temp=P3;

switch(temp)

{

case 0XBE: num=5;break;

case 0XBD: num=6;break;

case 0XBB: num=7;break;

case 0XB7: num=8;break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp&0X0F;

}

}

}

P44=1;P42=1;P3=0XDF;

temp=P3;

temp=temp&0X0F;

if(temp!=0X0F)

{

Delayms(5);

temp=P3;

temp=temp&0X0F;

if(temp!=0X0F)

{

temp=P3;

switch(temp)

{

case 0XDE: num=9;break;

case 0XDD: num=10;break;

case 0XDB: num=11;break;

case 0XD7: num=12;break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp&0X0F;

}

}

}

P44=1;P42=1;P3=0XEF;

temp=P3;

temp=temp&0X0F;

if(temp!=0X0F)

{

Delayms(5);

temp=P3;

temp=temp&0X0F;

if(temp!=0X0F)

{

temp=P3;

switch(temp)

{

case 0XEE: num=13;break;

case 0XED: num=14;break;

case 0XEB: num=15;break;

case 0XE7: num=16;break;

}

while(temp!=0x0f)

{

temp=P3;

temp=temp&0X0F;

}

}

}

总结

这就是矩阵键盘的使用及原理,在使用矩阵键盘时,要注意矩阵键盘和独立按键的短接线接在哪个位置。

还有就是,并非所有情况都适用矩阵键盘,矩阵键盘节省I/O口,但是相应的增加了代码量,占用了大量内存。在不需要节省I/O口或内存有限时,应使用独立按键。

——————————————————————————————————————
本文纯原创,如有侵权请联系删除,如有错误,敬请批评指正,谢谢大家。

网址:蓝桥杯 矩阵键盘的使用 https://www.yuejiaxmz.com/news/view/93563

相关内容

短视频矩阵一键批量发布,引爆流量新高度!
线性代数中,从矩阵AB=E可以推出AB=BA吗
25款雷克萨斯ES曝光,标配矩阵大灯+64色氛围灯,换大屏+贯穿尾灯
若A为n阶方阵,r(A)=r,则矩阵A中存在r个列向量线性无关. 若r...
为厨卫生活赋能,万家乐打造小体积热水器产品矩阵
Mac mini 连接 65寸4K电视客厅使用,是否可行?另求推荐键盘
盘点2024年用AI赚钱的8个赚钱方式,揭秘AI套路
matlab中for循环的简单使用
重装上阵:全新的 ROLAND FANTOM 合成器工作站 2019 年版杀回来了!
三菱欧蓝德自动挡挡位图解,欧蓝德换挡操作技巧

随便看看