#include <REGX52.H>
#include "LCD1602.h"
#include "MatrixKey.h"
#include "Delay.h";
unsigned char KeyNum;
unsigned int Pw,count;
void main(void){
LCD_Init();
LCD_ShowString(1,1,"Password!");
while(1){
// 把获取到的键盘结果赋值给KeyNum
KeyNum = MatrixKey();
// 判断按钮是否按下
if(KeyNum){
// 判断1-10的按键,做输入密码的操作
if(KeyNum <= 10){
// 限制密码只能输入四位
if(count < 4){
Pw*=10; //实现密码左移
/**
初始数字为0000,Pw初始为0,第一次执行输入Pw不起效果。
当用户输入1后,则执行Pw*=10也就是0*=10;再执行Pw += KeyNum%10;也就是 0 += 1%10 也就等于1
第二次用户输入2,则重新走Pw*10,这个时候Pw为1,也就是1*10=10,用户输入值为2,继续往下走,Pw += KeyNum%10;也就是1 += 2%10 -> 1+=2 = 12
*/
Pw += KeyNum%10; // 这里对密码数字进行取余为10,是为了把10这个数字变成0
LCD_ShowNum(2,1,Pw,4); //把处理好的数字结果通过LCD_ShowNum()这个函数进行显示到LCD屏上
count++;
}
}
// 确认按钮操作定义
if(KeyNum == 11){
// 如果点击确认按钮后,Pw变量里面的值正好等于1234,那么就显示OK!
if(Pw == 1234){
LCD_ShowString(1,11,"OK ");
}else{ // 如果不是的话就显示ERR!
LCD_ShowString(1,11,"ERR");
}
}
// 清除按钮 定义
if(KeyNum == 12){
Pw = count = 0;
LCD_ShowNum(2,1,Pw,4);
}
}
}
}