基于STC51的EEPROM的密码锁源码
时间: 2023-09-27 17:08:40 浏览: 94
以下是基于STC51单片机的EEPROM密码锁的源代码:
```
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit beep=P1^5;
sbit led=P1^6;
sbit lock=P1^7;
uchar code table[]="123456";
uchar keynum=0,flag=0,flag1=0,flag2=0;
uchar temp[6];
uchar t=0;
uchar i=0;
uchar receive[6];
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(uchar num)
{
switch(num)
{
case 0:LSA=0;LSB=0;LSC=0;break;
case 1:LSA=1;LSB=0;LSC=0;break;
case 2:LSA=0;LSB=1;LSC=0;break;
case 3:LSA=1;LSB=1;LSC=0;break;
case 4:LSA=0;LSB=0;LSC=1;break;
case 5:LSA=1;LSB=0;LSC=1;break;
case 6:LSA=0;LSB=1;LSC=1;break;
case 7:LSA=1;LSB=1;LSC=1;break;
default:break;
}
}
void beep1()
{
beep=0;
delay(50);
beep=1;
}
uchar keyscan()
{
uchar key=0;
if(P3!=0xff)
{
delay(5);
if(P3!=0xff)
{
switch(P3)
{
case 0xfe:key=1;break;
case 0xfd:key=2;break;
case 0xfb:key=3;break;
case 0xf7:key=4;break;
default:break;
}
while(P3!=0xff);
}
}
return key;
}
void unlock()
{
lock=0;
delay(1000);
lock=1;
}
void main()
{
while(1)
{
display(8);
keynum=keyscan();
if(keynum!=0)
{
switch(keynum)
{
case 1:temp[t]='1';t++;beep1();break;
case 2:temp[t]='2';t++;beep1();break;
case 3:temp[t]='3';t++;beep1();break;
case 4:flag=1;break;
default:break;
}
if(t==6)
{
flag1=1;
t=0;
for(i=0;i<6;i++)
{
if(temp[i]!=table[i])
{
flag2=1;
break;
}
}
if(flag2==1)
{
flag2=0;
for(i=0;i<6;i++)
{
receive[i]=temp[i];
temp[i]=0;
}
display(0);
beep1();
}
else
{
flag2=0;
unlock();
display(7);
beep1();
for(i=0;i<6;i++)
{
temp[i]=0;
receive[i]=0;
}
t=0;
flag1=0;
}
}
if(flag==1)
{
flag=0;
if(flag1==1)
{
flag1=0;
for(i=0;i<6;i++)
{
if(temp[i]!=receive[i])
{
flag2=1;
break;
}
}
if(flag2==1)
{
flag2=0;
for(i=0;i<6;i++)
{
temp[i]=0;
}
t=0;
display(0);
beep1();
}
else
{
flag2=0;
unlock();
display(7);
beep1();
for(i=0;i<6;i++)
{
temp[i]=0;
receive[i]=0;
}
t=0;
flag1=0;
}
}
else
{
for(i=0;i<6;i++)
{
temp[i]=0;
}
t=0;
display(0);
beep1();
}
}
}
}
}
```
这个代码使用了STC51的EEPROM存储密码,并且可以通过按键输入密码进行解锁。如果输入密码错误,则会有提示音和LED闪烁。如果输入密码正确,则会有提示音和LED亮起,并且锁会自动打开。
阅读全文