小介绍
在上一课中我学到了独立键盘的工作原理和编写代码的技巧(如何软件消抖和按下松手检测),并且在上一节中介绍了独立键盘和矩阵键盘的特点和区别,这一节就主要学习矩阵键盘。
矩阵键盘电路分析
矩阵键盘相对于独立键盘的电路较为复杂,但是依然有迹可循,电路中将P3组所有IO口分为两组,可以将其视为四乘四的网格,十六个按键就分布在网格上。
采用列扫描和行扫描可以确定矩阵键盘上哪一个按键被按下。具体来说,列扫描时先把接在列上面的所有IO口拉高,接在行上的所有IO置低。当其中有一列内任何一个按键按下那么整条列线都会被拉低。这样,就可以确认是那一条列线被触发,并得到当时P3口的十六进制值。紧接着进行行扫描,将行的IO拉高,列的置底,再次检测到P3口的数值,由于十六进制表现为0x**,进行列扫描时获得了第一个*的值,行扫描时获取了第二个*的值,两者叠加就会产生十六种独一无二的值,这样我们得以判断是那个按键被触发。
一丢丢的C语言基础
C语言三大结构分别为分支,顺序,选择。要想判断十六个值,仅用if语句十分麻烦,因此我们采用switch语句
switch (表达式)
{
case 常量表达式1: 语句1
break;
case 常量表达式2&