原理图:
和上讲一样
主要功能:
实现简易的四位密码输入及判断;
S1~S9 表示1-9,S10表示0,S11表示确定,S12表示取消(清零)
代码:
在上讲的基础上增加:(隐藏许多BUG)
#include <REGX52.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"
unsigned char KeyNum;
unsigned int Password;
int Count;
void main()
{
LCD_Init();
LCD_ShowString(1,1,"Password");
while(1)
{
KeyNum=MatrixKey();
if(KeyNum)//KeyNum!=0
{
if(KeyNum<=10) //如果S1~S10按键按下,输入密码
{
if(Count<4) //如果输入小于四
{
Password*=10; //上一位左移
Password+=KeyNum%10;
Count++;//计次加一
}
LCD_ShowNum(2,1,Password,4);//更新显示
}
if(KeyNum==11)//如果S11按键按下,确认
{
if(Password==2345)
{
LCD_ShowString(1,12,"TRUE");
Password=0;//密码清零
Count=0;//计次清零
LCD_ShowNum(2,1,Password,4);
}
else
{
LCD_ShowString(1,12,"EROR");
Password=0;//密码清零
Count=0;//计次清零
LCD_ShowNum(2,1,Password,4);
}
}
if(KeyNum==12)//取消键
{
Password=0;//密码清零
Count=0;//计次清零
LCD_ShowNum(2,1,Password,4);
LCD_ShowString(1,12," ");//消除右上角信息
}
}
}
}
演示:
代码中正确密码设置为2345,输入时发现错误可以按S12取消,重新输入。
按S11确定后LCD右上角显示信息“EROR或TRUE”
6_2矩阵键盘简易密码锁