基于51单片机的电子密码锁设计
发布网友
发布时间:2022-05-01 05:47
我来回答
共3个回答
热心网友
时间:2022-06-25 04:57
#include<reg51.h>
#define uint unsigned int
char leab[]={0x7f,0x7f,0x7f,0x7f,0x7f,0x7f};
delay(uint z)
{
uint x;
for(;z<0;z--)
for(x=0;x<10;x++);//1ms
}
disp()
{
char x,y;
for(x=5;x>=0;x--)
{for(y=0;y<10;y++)
{P0=0;
P2=x;
P0=leab[x];
delay(10);
P0=0;}
}
}
char sao(char g)
{ char d;
switch(g)
{
case 1:d=1; break;
case 2:d=2; break;
case 4:d=3; break;
case 8:d=4; break;
default:d=0; break;
}
return d;
}
char key()
{
char H=0,L=0,d,d1,d2;
while(1)
{ d=0;
P1=0xf0;
if(P1!=0xf0)
{
delay(10);
if(P1!=0xf0)
{
H=(~(P1^0x0f))>>4;
P1=0xff;
P1=0x0f;
L=~(P1^0xf0);
d2=sao(L);
d1=sao(H);
d=(d1-1)*4+d2;
P2=d;
}}
if(d!=0) break;
disp();
}
return d;
}
main()
{
char leab1[]={0x00,0x00,0x00,0x00,0x00,0x00};
char leab2[]={0x09,0x08,0x00,0x06,0x01,0x01};
char a,b,d,e=0;
int f;
while(1)
{
P3=0xff;
for(a=0;a<6;a++)
{
leab[a]=0x7f;
leab1[a]=0x00;
}
for(b=0;b<100;b++)
{
disp();
}
//for(c=0;c<6;c++)
//{
// leab[c]=0x00;
//}
while(1)
{
for(d=0;d<6;d++)
{
e=key();
if((e>=1)&(e<=10))
{
leab[d] =0x71;
disp();
leab1[d]=e-1;
}
else
{d=d-1; disp();}
if(e==15) break;
}
if(e==15) break;
while(e!=16)
{ disp();
e=key();
if(e==16)break;
if(e==15) break;
}
if(e==15) break;
if((leab1[0]==leab2[0])&(leab1[0]==leab2[0])&
(leab1[0]==leab2[0])&(leab1[0]==leab2[0])&
(leab1[0]==leab2[0])&(leab1[0]==leab2[0]))
{
for(f=0;f<800;f++)
{P3=0x02;
delay(100);
disp();
}
}
else
{for(f=0;f<800;f++)
{P3=0x01;
delay(100);
disp();
}}
break;
}
}}
热心网友
时间:2022-06-25 04:58
希望对你有用
热心网友
时间:2022-06-25 04:58
恩,这个我会的,,有的追问帮我设计一下~·