矩阵键盘检测

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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实个按键。。。都是一样的键一端固定检测了。检下各行是否证明该列没

确定按键的用到

阵键图:

实现。。。 的,

定比检测否有没有

的坐

以下是软件流程图:

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;

}

相关文档
最新文档