蓝桥杯 矩阵键盘的使用
使用决策工具:如决策矩阵或决策轮盘 #生活知识# #生活心理学# #生活技能训练# #决策制定技巧#
文章目录
前言一、矩阵键盘的原理二、矩阵键盘应用 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 年版杀回来了!
三菱欧蓝德自动挡挡位图解,欧蓝德换挡操作技巧