/************************************** **函数名称:codein
**函数功能:完成密码输入,并判断密码是否正确 **入口参数:无 **出口参数:无
***************************************/ void codein() {
uchar t=0; write_com(0x80+0x40+0x02);//重新设置LCD数据地址指针
for(t=0;t<6;t++) {
temp1=keyscan();
while(temp1==no_key)//若相等则此时没有键按下
{ P1=0xdf;//判断是否要删除输入的密码
if(enter==0) {
delay(5);
if(enter==0) { write_com(0x80+0x41+t); //确定删除对象 write_date(' '); //显示空格即为删除 t--; } while(!enter);//判断按键是否释放
delay(5); while(!enter);
} // P1=0xff
temp1=keyscan();//继续扫描按键直至有键按下 }
table5[t]=temp1;//实时保存输入密码值 write_com(0x80+0x41+t); //重新设置数据地址指针 write_date('*');//LCD显示“******”
delay(5); jz=20; }
t=0;
for(t=0;t<6;t++) {
if(table5[t]!=table0[t])//对数组中的内容进行逐一比较,一旦有数据不对马上退出循环
{
break; } }
if(t==6)//要是条件退出的话说明六个数全对密码 {
conflag=1; // 进行标志密码正确 } }
/************************************** **函数名称:codeout
**函数功能:根据密码输入正确与否作出相应的反应 **入口参数:无 **出口参数:无
***************************************/ void codeout() {
uchar t;
if(conflag) {
t=0;
write_com(0x01);//显示清屏:数据指针、所有显示清0 write_com(0x80+0x07);//设置数据地址指针
for(t=0;t<3;t++)
{ write_date(table4[t]);//LCD显示“OK!”
delay(5); }
key=0;
while(1); }
if(!conflag) {
keyflag--;
t=0;
write_com(0x01);//显示清屏:数据指针、所有显示清0
write_com(0x80+0x05);//设置数据地址指针 for(t=0;t<5;t++)
{ write_date(table6[t]);//LCD显示“ERRO!”
delay(5);
}
write_com(0x01);//显示清屏:数据指针、所有显示清0 write_com(0x80+0x02);//设置数据地址指针 for(t=0;t<12;t++)
{
write_date(table7[t]);//LCD显示“Enter again:” delay(5); }
}
}
/************************************** **函数名称:codeen
**函数功能:当密码输入错误次数达到3次时,要按下解锁键,输入万能密码,此函数能判断万能密码正确与否并做出相应反应 **入口参数:无 **出口参数:无
***************************************/ void codeen() {
uchar t=0; write_com(0x80+0x40+0x02);//重新设置LCD数据地址指针 for(t=0;t<6;t++) { temp1=keyscan();
while(temp1==no_key)//若相等则此时没有键按下
{
//P1=0xdf; P1=0<<5|1<<0|1<<1|1<<2|1<<3|1<<4|1<<6|1<<7; if(enter==0) {
delay(5);
if(enter==0)
{ write_com(0x80+0x41+t); //确定删除对象 write_date(' '); //显示空格即为删除 t--;
} while(!enter);//判断按键是否释放
delay(5); while(!enter);
} P1=0xff; temp1=keyscan();//继续扫描按键直至有键按下
}
table5[t]=temp1;//实时保存输入密码值 write_com(0x80+0x41+t); //重新设置数据地址指针 write_date('*');//LCD显示“******”
delay(5); }
jz=20;
t=0;
for(t=0;t<6;t++)
{
if(table5[t]!=table9[t])//对数组中的内容进行逐一比较,一旦有数据不对马上退出循环 { break; }
}
if(t==6)//要是条件退出的话说明六个数全对密码
{
t=0; write_com(0x01);//显示清屏:数据指针、所有显示清0
write_com(0x80+0x03);//设置数据地址指针 for(t=0;t<9;t++) {
write_date(table10[t]);//LCD显示“UNLOCKED!”
delay(5); }
while(1) key=0; } else
{
t=0; write_com(0x01);//显示清屏:数据指针、所有显示清0 write_com(0x80+0x03);//设置数据地址指针
for(t=0;t<11;t++) { write_date(table11[t]);//LCD显示“Can't open!”
delay(5); } key=1;
while(1)
}
}
void main() {
uchar i=0; uchar j=0; init();
while(keyflag) {
codein(); }
codeout();
write_com(0x01);//显示清屏:数据指针、所有显示清0 write_com(0x80+0x04);//设置数据地址指针 for(i=0;i<7;i++) { write_date(table8[i]);//LCD显示“LOCKED!”
delay(5);
} {
while(1)
P1=0xbf; //判断解锁键是否按下 if(enter==0) {
delay(5); if(enter==0) {
write_com(0x01);//显示清屏:数据指针、所有显示清0
write_com(0x80+0x02);//设置数据地址指针 for(i=0;i<13;i++) { write_date(table3[i]);//LCD显示“Seeting code:”
delay(5);
} } while(!enter);//判断按键是否释放