基于51单片机的电子密码锁设计


求大神帮忙设计~拜托啦~~
#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;
}
  
  }}

希望液悉对你闹知乎有猛局用


第帆扒盯一态和此庆节课


恩,这个我会的,,有的