main函数
#include <REGX52.H>
#include <DELAY.H>
#include <LCD1602.H>
#include <MATRIX_KEYBOARD.H>
#define ui unsigned int //define A B A为定义的新变量
void main()
{
ui KeyValue;//键值
ui Password = 0;//密码
ui Count = 0; //密码输入位数
ui PASSWORD = 1234;//初始密码
ui PASSWORDC = 0;
ui ChangeMode = 0; //更改密码模式
ui CountChange = 0; //更改密码输入位数
LCD_Init();
LCD_ShowString(1,1,"Password.");
while(1)
{
KeyValue = MatrixValueShow();
if(KeyValue)
{
if(ChangeMode == 0) //普通模式
{
if(KeyValue <= 10)//定义为密码输入区 S1-S10 1-...-9-0
{
LCD_ShowString(1,13," ");
if(Count < 4)
{
Password *= 10; //密码乘以10左移处理
Password += KeyValue % 10;//取余 将10取0处理 加等于 当前密码
Count++;
}
LCD_ShowNum(2,1,Password,4);//显示范围1~5
}
if(KeyValue == 11)//S11定义为确认键
{
if(Password == PASSWORD)
{
LCD_ShowString(1,13,"OK ."); Password = 0; Count = 0;//OK后边添加空格为消影操作
LCD_ShowNum(2,1,Password,4);//更新显示
}
else
{
LCD_ShowString(1,13,"Err.");
Password = 0; Count = 0;
LCD_ShowNum(2,1,Password,4);//更新显示
}
}
if(KeyValue == 12)//S12定义为取消键
{
LCD_ShowString(1,13," ");
Password /= 10; //密码除以10右移处理
LCD_ShowNum(2,1,Password,4);//更新显示
if (Count > 0) Count--;
}
if(KeyValue == 13)//S13定义为重新输入键
{
LCD_ShowString(1,13," ");
Password = 0; Count = 0;
LCD_ShowNum(2,1,Password,4);//更新显示
}
if(KeyValue == 14)//S14定义为更改密码
{
LCD_ShowString(1,13,"Cha.");
Delay1ms(100);
PASSWORDC = 0;
CountChange = 0;
ChangeMode = 1; // 进入更改密码模式
}
}
else if(ChangeMode == 1) //更改密码模式
{
if(KeyValue <= 10)//定义为密码输入区 S1-S10 1-...-9-0
{
LCD_ShowString(1,13," ");
if(CountChange < 4)
{
PASSWORDC *= 10; //密码乘以10左移处理
PASSWORDC += KeyValue % 10;//取余 将10取0处理 加等于 当前密码
LCD_ShowNum(2,1,PASSWORDC,4);//更新显示
CountChange++;
}
}
if(KeyValue == 15 && CountChange == 4) //S15定义为确认更改密码,并且密码输入满4位
{
PASSWORD = PASSWORDC;
LCD_ShowString(1,13,"Suc.");
Password = 0; Count = 0;
ChangeMode = 0; // 退出更改密码模式
LCD_ShowNum(2,1,Password,4);//更新显示
}
}
}
}
}