TwoAlam(); for(i=0;i<6;i++) {InputData[i]=0;} KEY=1;
//提示音
//关闭锁 //报警关
ALAM=1; operation=0; pass=0;
//操作标志位清零
//密码正确标志清零
ReInputEn=0; ErrorCont=0; CorrectCont=0; ReInputCont=0; open_led=1; s3_keydown=0; key_disable=0; N=0;}
//重置输入充许标志清零 //密码错误输入次数清零 //密码正确输入次数清零 //重置密码输入次数清零
void Ensure(void) {
unsigned char i,j;
RdFromROM(CurrentPassword,0,6);
//从24C02里读出存储密码
if(N==6)
{if(ReInputEn==0)
{for(i=0;i<6;)
{if(CurrentPassword[i]==InputData[i])
{i++;} else
{ErrorCont++;
if(ErrorCont==3) {write_1602com(er); else
{ TR0=1;
//开启定时 //锁定键盘
for(i=0;i<16;i++)
{write_1602dat(Error[i]); } do
Alam_KeyUnable(); while(1);}
//错误输入计数达三次时,报警并锁定键盘
//重置密码功能未开启
key_disable=1; pass=0; break;}}}
if(i==6)
{CorrectCont++;
if(CorrectCont==1) {write_1602com(er);
for(j=0;j<16;j++)
{write_1602dat(Locktrue[j]); TwoAlam();
}
//正确输入计数,当只有一次正确输入时,开锁,
//操作成功提示音
KEY=0; pass=1; TR0=1;
//开锁 //置正确标志位 //开启定时
open_led=0; for(j=0;j<6;j++)
//开锁指示灯亮
//将输入清除
{InputData[i]=0;}}
//当两次正确输入时,开启重置密码功能
else
{write_1602com(er);
for(j=0;j<16;j++)
{write_1602dat(SetNew[j]); TwoAlam(); ReInputEn=1; CorrectCont=0;}}
}
//操作成功提示
//允许重置密码输入
else
{if((InputData[0]==1)&&(InputData[1]==3)&&(InputData[2]==1)&&(InputData[3]==4)&&(InputData[4]==2)&&(Input
Data[5]==0))
{WrToROM(initpassword,0,6); else
{write_1602com(er);
for(j=0;j<16;j++)
{write_1602dat(Error[j]); } ThreeAlam(); pass=0;}}}
//错误提示音
write_1602com(er); for(j=0;j<16;j++)
{write_1602dat(initword[j]);} TwoAlam(); Delay400Ms(); TwoAlam(); N=0;}
//强制将初始密码写入24C02存储
else
{write_1602com(er); else
for(j=0;j<16;j++) {write_1602dat(Er_try[j]); ThreeAlam();}}
}
{write_1602com(er);
for(j=0;j<16;j++)
{write_1602dat(Error[j]); } ThreeAlam();
//错误提示音
pass=0;}
N=0;
operation=1;}
void main(void)
{ unsigned char KEY,NUM;
KEY=keynum(); if(KEY!=0) {if(key_disable==1)
{second=0;} else
{NUM=coding(KEY);
{switch(NUM)
{ case ('A'): ;
case ('B'):
break;
break;
unsigned char i,j; P1=0xFF; TMOD=0x11; TL0=0xB0; TH0=0x3C; EA=1; ET0=1; TR0=0; Delay400Ms();
//启动等待,等LCM讲入工作状态
lcd_init(); //LCD初始化
write_1602com(yi);//日历显示固定符号从第一行第0个位置之后开始显示 for(i=0;i<16;i++) {write_1602dat(name[i]);}
write_1602com(er);//时间显示固定符号写入位置,从第2个位置后开始显示 for(i=0;i<16;i++)
{write_1602dat(start_line[i]);} write_1602com(er+9); write_1602com(0x0f);
//设置光标位置 //设置光标为闪烁
Delay5Ms(); //延时片刻(可不要) N=0; while(1)
{if(key_disable==1)
else
ALAM=1;
//关报警
Alam_KeyUnable();
//初始化数据输入位数
;
case ('C'): ; break;
case ('D'): ResetPassword(); case ('*'): Cancel(); case ('#'): Ensure(); default: {
write_1602com(er); for(i=0;i<16;i++)
break; //重新设置密码 break; //取消当前输入
break;
//确认键,
{write_1602dat(Input[i]);}
operation=0; if(N<6) { OneAlam();
for(j=0;j<=N;j++) {write_1602com(er+6+j);
write_1602dat('*');}
InputData[N]=NUM;
void time0_int(void) interrupt 1 { TL0=0xB0; TH0=0x3C; //TR0=1; countt0++; if(countt0==20) { countt0=0; second++; if(pass==1) {if(second==1) { open_led=1; TR0=0;
TL0=0xB0; TH0=0x3C;
second=0;}}
else
{if(second==3) { TR0=0; second=0; key_disable=0; s3_keydown=0; TL0=0xB0; TH0=0x3C;}
else
TR0=1;}}}
N++;}
else
{N=6;
break;}}}}}} }}
//关指示灯
//关定时器
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库51单片机课程设计 电子密码锁 - 图文(4)在线全文阅读。
相关推荐: