您的当前位置:首页正文

电子密码锁C程序

来源:筏尚旅游网
include

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;

}

}

}

}

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容