矩阵键盘的检测
由于矩阵键盘中每一个按键的两个接线口都是接在IO口上的,所以我们就必须在软件里面控制单片机在每个独立按键的两端加上不同的电平。 从上面的原理图中可以看出 P1 口的高四位控制 行,低四位控制列;所以我们就可以写 P1 = 0X0F 或者写 P1 = 0XF0,这样就实现了在每一个独立按键两端加上不同的电平。 代码编写流程和独立按键一样,第一步要先检测到按键按下,根据上面的原理图,矩阵键盘检测按键是否按下只要给 P1 口赋值 0X0F,然后检测 P1 口的值是否还是 0X0F即可。 之后就要消除抖动,消除抖动的方法还是一样,延时一段时间即可: MatrixKeyValue=0xf0; if(MatrixKeyValue != 0xf0) //检测是否有按键按下 { delay(10); if(MatrixKeyValue != 0xf0) { } } 判断到底是哪个按键按下的思路有两种: 1、逐行扫描 逐行扫描就是说先扫描第一行中的哪个按键按下了,如果没有再扫描第二行,看一下是不是第二行里的某个按键按下了,如果还没有找到按下的那个按键,那么就继续扫描第三行、第四行,知道找出哪个按键被按下了。这个代码实现比较简单,而且这种扫描方法不怎么常用,效率不高,所以这里我就不写了。 2、行列扫描 行列扫描就是说先扫描所有的行,确定是哪一行的按键被按下了,之后再扫描所有的列