defineucharunsignedchar defineuintunsignedint
ucharcodetable1=\"THEPASSWORD\"; ucharcodetable2=\"INPUTAGAIN\"; ucharcodetable3=\"OPEN\"; ucharcodetable4=\"ERROR\"; ucharcodetable5=\"SORRY\"; ucharcodetable6=\"TOMORROWAGAIN\"; ucharpassword={2;0;1;1;1;1}; ucharx=0;shuru6; sbitlcdrs=P0^0; sbitlcden=P0^2; sbitlcdrw=P0^1; voiddelayuintx { }
voidwrite_comcharcom {
lcdrs=0;
//写指令
uinti;j; fori=x;i>0;i-- forj=120;j>0;j--;
//延时子程序
}
P2=com; delay5; lcden=1; delay5; lcden=0;
voidwrite_datauchardat //写数据 { } voidinit { }
ucharkeyscanvoid//键盘扫描函数;使用行列反转扫描法 lcden=0; write_com0x38; write_com0x0c; write_com0x06; write_com0x01;
//初始化函数
lcdrs=1; P2=dat; delay5; lcden=1; delay5; lcden=0;
{
ucharcord_h;cord_l;//行列值中间变量 P3=0xf0;//行线输出全为0 cord_h=P3&0xf0;//读入列线值 ifcord_h=0xf0//先检测有无按键按下 {
delay10;//去抖 ifP3&0xf0=0xf0 {
cord_h=P3&0xf0;//读入列线值 P3=cord_h|0x0f;//输出当前列线值 cord_l=P3&0x0f;//读入行线值 whileP3&0x0f=0x0f;//等待松开并输出 returncord_h+cord_l;//键盘最后组合码值 }
}return0xff;//返回该值 }
ucharKeyProvoid {
switchkeyscan {
case0xee:return7;break;//7按下相应的键显示相对应的码值 case0xde:return8;break;//8 case0xbe:return9;break;//9
//键盘检测函数
}
// case0x7e:
case0xed:return4;break;//4 case0xdd:return5;break;//5 case0xbd:return6;break;//6
// case0x7d:
case0xeb:return1;break;//1 case0xdb:return2;break;//2 case0xbb:return3;break;//3
// case0x7b:
case0xe7:return0;break;//0
// case0xd7: // case0xb7: // case0x77: }
default:return0xff;break;
//////////主函数///////////// voidmain {
ucharnum;mima;wrong; lcdrw=0; init;
write_com0x82; fornum=0;num<12;num++
{ } while1 {
mima=KeyPro; write_com0xc4+x; write_com0x0f; ifmima=0xff&&x<6 {
write_data''; shurux=mima; x++; ifx==6 {
x=0;
ifshuru0==password0&&shuru1==password1&&shuru2==password2&&
write_datatable1num; delay1;
//判断密码是否正确
//
{
write_com0x01; delay1;
shuru3==password3&&shuru4==password4&&shuru5==password5
错误三次
write_com0x86; fornum=0;num<4;num++ { write_datatable3num; delay1;
}
write_com0x0c; while1;
}
else {
wrong++;
ifwrong==3 {
write_com0x01; delay1;
write_com0x85;
fornum=0;num<5;num++ {
write_datatable5num;
delay1;
}
write_com0xc1;
// 如果密码输入
// 则不能再次输入
//
// // // //
// // // //
//
}
fornum=0;num<14;num++ {
//
//
//
write_datatable6num; delay1;
//
//
}
write_com0x0c; while1;
write_com0x01; delay1; write_com0x85; fornum=0;num<5;num++ { }
write_com0x0c; delay1000; write_com0x01; write_com0x83; fornum=0;num<11;num++ {
write_datatable2num; delay1;
write_datatable4num; delay1;
}
}
}
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容