矩阵键盘检测
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
很多
盘检4*46个
也就
较好时,低电键按标,
独立键盘多按键时就检测。这里4键盘实现IO 口控无论是独就是检测与好检测,而,先送一列电平,若有按下,送下
,然后对其盘与单片机就会浪费里以4*4现了用8控制9个按独立按键还与该键对而矩阵键盘列低电平有低电平则下一列低
其编码后矩阵键盘机相连时,很多的IO 矩阵键盘个IO 口控按键,5*5还是矩阵键对应的IO 盘就需要,其余为则证明该电平,通
编程扫描盘检测及,每个按键O 口,鉴于盘为例,下控制16个实现10键盘,单口是否为要人为控制高电平,该列有键按过这种方描了。
及其运用键都要占用于对IO 口下面是其与个按键,当个IO 口控片机检测为低电平。制端口电平立即轮流按下,若无
方法,我们
用一个IO 口的节省,与单片机连当然也可以控制25个测的依据都独立按键平变化来检流检测一下无低电平证
们便可以确O 口,当用引入矩阵连接电路以以3*3实个按键。。。都是一样的键一端固定检测了。检下各行是否证明该列没
确定按键的用到
阵键图:
实现。。。 的,
定比检测否有没有
的坐
以下是软件流程图:
N
Y
N
N
Y N
扫描四行按键程序会很长,下面我编程实现扫描出第一行按键,其他各行可用相同方法进行扫描:
开始
寄存器初始化IO口
初始化
检测是否有键按
下延时10ms 检测是否真有键
按下
检测按键是否释放
执行相应代码
/*******************************************************
// //
//‐‐‐函数功能:扫描矩阵键盘,返回相应按键代表的值 //
//‐‐‐主函数中可以利用这一返回值选择执行相关代码 //
//‐‐‐这样就实现了矩阵按键对器件的操作 //
// //
*******************************************************/ unsigned char Matrixkeyscan()
{
unsigned char temp,key;
P3=0xfe; //送一列低电平其余为高确定该列
temp=P3; //将P3口的值读回来
temp=temp&0xf0; //
if(temp!=0xf0) //看是否有IO口为低电平
{
Delayms(10); //延时去抖
temp=P3; //重新读回P3口的值
temp=temp&0xf0;
if(temp!=0xf0) //看是否真有键按下
{
temp=P3; //temp的值发生变化需重新读回
switch(temp) //判断是哪一行按键被按下,确定按键位置
{
case 0xee:
key=1;
break;
case 0xde:
key=2;
break;
case 0xbe:
key=3;
break;
case 0x7e:
key=4;
break;
}
while(temp!=0xf0)//松手检测 {
temp=P3;
temp=temp&0xf0;
}
}
}
//P3=0xfd; //扫描下一行
//。。。。用相同方法检测 return key;
}