矩阵按键
2019年七月二十日
- 作用:控制电路的通断。
- 区别:矩阵按键为4*4即16个按键,如果都采用独立按键的解法,那么需要占用16个I/O接口,对于单片机而言是极大的浪费。
- 工作原理:
先见下图:
他有两种识别方式:逐行扫描、行列扫描。
(1)逐行扫描:
通俗来讲就是1、2、3、4分别输出高电平(注意这里时间很短),然后观察5、6、7、8 pin脚上电平的情况。
5、6、7、8上电平的对应情况为24=16种;因为是分步完成符合乘法原理,1、2、3、4分别输出高电平可看成四步完成“任务”,每步都是24 。
总的情况为24*24*24*24=216种。
符合16个按键分别对应开关两种状态的总种数 216种。
(2)行列扫描
通俗来讲就是先判断哪一列被按下了,再判断哪一行被按下了,通过交叉可以得出哪一个按键被按下了。
具体过程:
高四位(1、2、3、4)同时输出低电平,低四位(5、6、7、8)输出为高电平,根据低四位上电平的情况判断哪一列的按键被按下。根据原理图,当按键被按下时,该按键所在一列全为低电平。此处无法分辨是哪一行
然后高四位同时输出高电平,低四位同时输出低电平,再根据低四位上电平情况判断那一行被按下。
注意:高电平遇上低电平都变成低电平,相当于接地(GND)。
分析同理,故不多做分析。
实验代码如下:
注:P1=0xf0 是从高到低1111 0000 即P1.7-P1.0
#include <REGX52.H>
typedef unsigned int u16;
typedef unsigned char u8;
void delay10ms(void) //延时函数10ms
{
unsigned char a, b, c