51单片机课程设计 电子密码锁 - 图文(4)

2019-03-27 21:16

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;}}}}}} }}

//关指示灯

//关定时器


51单片机课程设计 电子密码锁 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《概率论与数理统计(本科)》复习题(本二非管理)-附部分答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: