电子密码锁程序.docx

上传人:b****4 文档编号:26846141 上传时间:2023-06-23 格式:DOCX 页数:19 大小:30.03KB
下载 相关 举报
电子密码锁程序.docx_第1页
第1页 / 共19页
电子密码锁程序.docx_第2页
第2页 / 共19页
电子密码锁程序.docx_第3页
第3页 / 共19页
电子密码锁程序.docx_第4页
第4页 / 共19页
电子密码锁程序.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

电子密码锁程序.docx

《电子密码锁程序.docx》由会员分享,可在线阅读,更多相关《电子密码锁程序.docx(19页珍藏版)》请在冰豆网上搜索。

电子密码锁程序.docx

电子密码锁程序

#include

#defineucharunsignedchar

#defineuintunsignedint

sbitled=P3^0;/*解密成功指示*/

sbitsound=P3^7;/*三次错误后报警*/

sbitRS=P2^0;

sbitRW=P2^1;

sbitEN=P2^2;

sbitx0=P1^0;

sbitx1=P1^1;

sbitx2=P1^2;

sbitx3=P1^3;

sbitx4=P1^4;

sbitx5=P1^5;

sbitx6=P1^6;

sbitx7=P1^7;

sbitBUSY=P0^7;/*判忙位*/

ucharm,n,lg,t;

ucharcodedis0[]={"pleaseinput..."};/*开机显示*/

uchardis2[]={0x00,0x00,0x00,0x00,0x00,0x00};/*存放6位密码*/

ucharcodedis3[]={"error"};/*显示错误*/

ucharcodedis4[]={"UnlockOk"};/*显示开锁*/

voiddelay(uintms)/*延时*/

{

uinti;

while(ms--)

for(i=250;i>0;i--);

}

voidwait(void)/*查忙程序*/

{

P0=0xFF;

do

{

RS=0;

RW=1;

EN=0;

EN=1;

}while(BUSY==1);

EN=0;

}

voidw_dat(uintdat)/*写数据*/

{

wait();

EN=0;

P0=dat;

RS=1;

RW=0;

EN=1;

EN=0;

}

voidw_cmd(uintcmd)/*写命令*/

{

wait();

EN=0;

P0=cmd;

RS=0;

RW=0;

EN=1;

EN=0;

}

voidInit_LCD1602(void)/*初始化1602*/

{

w_cmd(0x38);/*16*2显示,5*7点阵,8位数据接口*/

w_cmd(0x0c);/*显示器开、光标开、光标允许闪烁*/

w_cmd(0x06);/*文字不动,光标自动右移*/

w_cmd(0x01);/*清屏*/

}

 

voidkey()/*键盘查询值按下了另标志lg=1*/

{

x0=0;x1=1;x2=1,x3=1;

if(!

x4)

{

delay(4);

if(!

x4)

{

lg=1;

m=0;

while(!

x4);

}

}

if(!

x5)

{

delay(4);

if(!

x5)

{

lg=1;

m=1;

while(!

x5);

}

}

if(!

x6)

{

delay(4);

if(!

x6)

{

m=2;

lg=1;

while(!

x6);

}

}

if(!

x7)

{

delay(4);

if(!

x7)

{

m=3;

lg=1;

while(!

x7);

}

}

x0=1;x1=0;x2=1;;x3=1;

if(!

x4)

{

delay(4);

if(!

x4)

{

m=4;

lg=1;

while(!

x4);

}

}

if(!

x5)

{

delay(4);

if(!

x5)

{

m=5;

lg=1;

while(!

x5);

}

}

if(!

x6)

{

delay(4);

if(!

x6)

{

m=6;

lg=1;

while(!

x6);

}

}

if(!

x7)

{

delay(4);

if(!

x7)

{

m=7;

lg=1;

while(!

x7);

}

}

x0=1;x1=1;x2=0;x3=1;

if(!

x4)

{

delay(4);

if(!

x4)

{

m=8;

lg=1;

while(!

x4);

}

}

if(!

x5)

{

delay(4);

if(!

x5)

{

m=9;

lg=1;

while(!

x5);

}

}

if(!

x6)

{

delay(4);

if(!

x6)

{

m=10;

lg=1;

while(!

x6);

}

}

if(!

x7)

{

delay(4);

if(!

x7)

{

m=11;

lg=1;

while(!

x7);

}

}

x0=1;x1=1;x2=1;x3=0;

if(!

x4)

{

delay(4);

if(!

x4)

{

m=12;

lg=1;

while(!

x4);

}

}

}

 

voidCompare()/*密码确认函数*/

{

uchari;

uintk1,k2,k3=1;

if((dis2[0]==(1+0x30))&&(dis2[1]==(2+0x30))&&(dis2[2]==(3+0x30))&&(dis2[3]==(4+0x30))&&(dis2[4]==(5+0x30))&&(dis2[5]==(6+0x30)))

{

led=0;

w_cmd(0xc6);

for(i=0;i<9;i++)

{

w_dat(dis4[i]);

}

w_cmd(0xc0);

w_dat(0x20);

w_cmd(0xc1);

w_dat(0x20);

w_cmd(0xc2);

w_dat(0x20);

w_cmd(0xc3);

w_dat(0x20);

w_cmd(0xc4);

w_dat(0x20);

w_cmd(0xc5);

w_dat(0x20);

}

else

{

t=t+1;/*累积错误次数*/

m=0;n=0;/*可以重新输入密码*/

w_cmd(0xc0);

w_dat(0x20);

w_cmd(0xc1);

w_dat(0x20);

w_cmd(0xc2);

w_dat(0x20);

w_cmd(0xc3);

w_dat(0x20);

w_cmd(0xc4);

w_dat(0x20);

w_cmd(0xc5);

w_dat(0x20);

w_cmd(0xc6);

for(i=0;i<5;i++)

{

w_dat(dis3[i]);

}

if(t>3)/*三次以上错误报警锁*/

{

t=0;

while(k3)

{

for(k1=0;k1<2000;k1++)

{

for(k2=0;k2<90;k2++);

sound=~sound;

}

for(k1=0;k1<2500;k1++)

{

for(k2=0;k2<120;k2++);

sound=~sound;

}

}

}

}

}

voidBackspace()/*逐个删除*/

{

n=n-1;

if(n<0)

n=0;

dis2[n]=0x00;

w_cmd(n+0xc0);

w_dat(0x20);

}

voidDelete()/*全部删除并锁门*/

{

n=0;

led=1;

w_cmd(0xc0);

w_dat(0x20);

w_cmd(0xc1);

w_dat(0x20);

w_cmd(0xc2);

w_dat(0x20);

w_cmd(0xc3);

w_dat(0x20);

w_cmd(0xc4);

w_dat(0x20);

w_cmd(0xc5);

w_dat(0x20);

w_cmd(0xc6);

w_dat(0x20);

w_cmd(0xc7);

w_dat(0x20);

w_cmd(0xc8);

w_dat(0x20);

w_cmd(0xc9);

w_dat(0x20);

w_cmd(0xca);

w_dat(0x20);

w_cmd(0xcb);

w_dat(0x20);

w_cmd(0xcc);

w_dat(0x20);

w_cmd(0xcd);

w_dat(0x20);

w_cmd(0xce);

w_dat(0x20);

w_cmd(0xcf);

w_dat(0x20);

dis2[0]=0x00;

dis2[1]=0x00;

dis2[2]=0x00;

dis2[3]=0x00;

dis2[4]=0x00;

dis2[5]=0x00;

}

 

voidinput_password()/*输密码程序*/

{

if(n==0)

{

key();

if(lg==1&&m<10)

{

w_cmd(0xc6);/*使重新输入时候清除error*/

w_dat(0x20);

w_dat(0x20);

w_cmd(0xc7);

w_dat(0x20);

w_cmd(0xc8);

w_dat(0x20);

w_cmd(0xc9);

w_dat(0x20);

w_cmd(0xca);

w_dat(0x20);

w_cmd(0xcb);

w_dat(0x20);

w_cmd(0xcc);

w_dat(0x20);

w_cmd(0xcd);

w_dat(0x20);

w_cmd(0xce);

w_dat(0x20);

w_cmd(0xcf);

w_dat(0x20);

dis2[0]=(m+0x30);

w_cmd(0xc0);

w_dat(dis2[0]);

n=1;

lg=0;

}

else

{

w_cmd(0xc0);

w_dat(0x20);

}

}

if(n==1)

{

key();

if(lg==1&&m<10)

{

dis2[1]=(m+0x30);

w_cmd(0xc1);

w_dat(dis2[1]);

n=2;

lg=0;

}

}

if(n==2)

{

key();

if(lg==1&&m<10)

{

dis2[2]=(m+0x30);

w_cmd(0xc2);

w_dat(dis2[2]);

n=3;

lg=0;

}

}

if(n==3)

{

key();

if(lg==1&&m<10)

{

dis2[3]=(m+0x30);

w_cmd(0xc3);

w_dat(dis2[3]);

n=4;

lg=0;

}

}

if(n==4)

{

key();

if(lg==1&&m<10)

{

dis2[4]=(m+0x30);

w_cmd(0xc4);

w_dat(dis2[4]);

n=5;

lg=0;

}

}

if(n==5)

{

key();

if(lg==1&&m<10)

{

dis2[5]=(m+0x30);

w_cmd(0xc5);

w_dat(dis2[5]);

n=6;

lg=0;

}

}

key();

delay(4);

if(lg==1&&m==10)

{

Compare();

lg=0;/*这里没有,那么Comare()就不断的执行,使t>3*/

}/*蜂鸣器就不断的名叫*/

if(lg==1&&m==11)

{

Backspace();

lg=0;/*没有会将所有密码全清除*/

}

if(lg==1&&m==12)

{

Delete();

lg=0;

}

}

voidmain()/*主程序*/

{

uchari;

Init_LCD1602();

w_cmd(0x80+0x00);

for(i=0;i<16;i++)

{

w_dat(dis0[i]);/*写入1602第一行*/

}

while

(1)

{

input_password();/*反复查询*/

}

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1