# 前几个星期因为期末暂停了进度,便重新回顾一下矩阵键盘
矩阵键盘介绍:
# 在键盘中按键较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式
# 采用逐行或逐列的“扫描”,就可以读出任意位置按键的状态
扫描
接下来的就是矩阵键盘密码锁
下面展示部分运行代码
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"
unsigned char KeyNum;
unsigned int Password,Count;
void main(){
LCD_Init();
LCD_ShowString(1, 1, "Password:");
while(1){
KeyNum = MatrixKey();
if(KeyNum)
{
if(KeyNum<=10) //如果S1~S10按下,输入密码
{
if(Count<4)//如果次数小于4才判断
{
Password*=10;//密码左移
Password += KeyNum%10; //获取一位密码
}
Count++;//计数输入的个数
}
LCD_ShowNum(2,1,Password,4);//更新显示
}
if(KeyNum == 11)//如果11按下,确定
{
if(Password == 2345)
{
LCD_ShowString(1, 14,"OK ");
Password = 0;//密码清零
Count = 0;//计次清零
LCD_ShowNum(2,1,Password,4);//更新显示
}else
{
LCD_ShowString(1, 14,"ERR");
Password = 0;//密码清零
Count = 0;//计次清零
LCD_ShowNum(2,1,Password,4);//更新显示
}
}
if(KeyNum == 12)//如果12按下,取消
{
Password = 0;//密码清零
Count = 0;//计次清零
LCD_ShowNum(2,1,Password,4);//更新显示
}
}
}
其中,LCD_ShowNum()函数的功能是更新显示
LCD_ShowString( , ," ")则是显示引号中的内容
当然也可以进行更多位的显示,即在LCD_ShowNum()括号最后一个参数编入想要的位数。
然后的话,实操后续会补上,应该不会太久,矩阵键盘这节不会太难,重要的是要分清核心代码与其框架,对于核心代码的理解和掌握尤为重要。