文档详情

课程设计--密码锁程序.doc

发布:2015-08-06约1.39万字共19页下载文档
文本预览下载声明
#includereg52.h #includeintrins.h #define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();} #define uchar unsigned char #define uint unsigned int sbit lcdrs=P1^2; sbit lcdrw=P1^1; sbit lcden=P1^0; sbit led=P3^0; //按键输入超时报警 sbit buzzer=P1^4; sbit disable=P1^7; //锁定键盘标志灯,也作标志位用,锁定1,解除锁定0 sbit relay=P1^3; //继电器 sbit scl=P1^5; //24C02串行时钟 sbit sda=P1^6; //24C02串行数据 bit open=0; //门状态,开1,关0 bit beset=0; //初始化密码标志位,已设置为1,未设置为0 bit change=0; //open时按下reset键为1,否则置0 bit saved=0; //密码保存完置1,否则置0 bit adminflag=1; //管理标志位,若按C键则置0 uchar code welcome[16]= WELCOME! ; uchar code line[16]=================; uchar code unlock[6]=UNLOCK; uchar code lock[4]=LOCK; uchar code usercode[10]=USER CODE:; uchar code withchance[14]=WITH CHANCES; uchar code chances[4]=0123; uchar code newcode[9]=NEW CODE:; uchar code setup[16]=SETUP SUCCESSFUL; uchar code admincode[10]=ADMINCODE:; uchar code correct[8]=CORRECT!; uchar code openthedoor[13]=OPEN THE DOOR; uchar code closethedoor[14]=CLOSE THE DOOR; uchar code error[6]=ERROR!; uchar code keylocked[11]=KEY LOCKED!; uchar code managemode[11]=MANAGE MODE; uchar code number[10]=0123456789; uchar code star[]=*; uchar code blank[]= ; uchar code keytable[16]={0xee,0xde,0xbe,0x7e, 0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b, 0xe7,0xd7,0xb7,0x77}; uchar ucode[6]; //用户密码表 uchar acode[6]={9,9,9,9,9,9}; //管理员密码表 uchar kcode[6]; //输入按键密码表 uchar pt; //LCD字符指针 uchar codeposi; //每位密码在按键密码表中的位置 uchar chance; //用户输入密码的剩余机会 uchar length=0; //输入的密码位数 uchar correctcnt; //正确输入计数 uchar errorcnt=0; //用户输入密码出错次数 uchar reinputcnt=0; //重新输入计数 uchar countt0,countt1,sec8,sec16,sec30; //中断计数器,秒计数器 uchar num,l,ktable;//主函数及中断函数使用 int stop; void delay_ms(uint t) //延时t毫秒 { uchar a,b; for(;t0;t--) for(b=142;b0;b--) for(a=2;a0;a--); } void relay_on() { relay=0; } void relay_off() { relay=1; } /*====键盘扫描返回1-15值,无按键返回nokey====*/ uchar key_scan() { uchar temp,knum,k; P2=0xf0; if(P2!=0xf0) { dela
显示全部
相似文档