标题:
基于51单片机的电子密码锁程序源码
[打印本页]
作者:
zlbfq
时间:
2018-12-21 22:19
标题:
基于51单片机的电子密码锁程序源码
如果需要其它东西可以问我
单片机源程序如下:
//P0_0用作蜂鸣器
//用4×4组成0-9数字键、确认键F及修改键C。
//用8位数码管组成显示电路提示信息,当输入密码时,只显示“8.”,当密码位数输入完毕按下确认键时,
//对输入的密码与设定的密码进行比较,若密码正确,用8位数码管显示“1HELLO”作为提示信息,
//同时发出“叮咚”声;若密码不正确,用8位数码管显示“2ERROR”作为提示信息,同时发出“嘀、嘀”报警声
//在输入密码的过程中可以随时对输入的密码进行修改。
#include <at89x52.H>
unsigned char wl[]={1,2,3,4,5,6};
unsigned char code wl1[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f};
unsigned char code wl2[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71,
0x00,0x40,0x73,0xff};
unsigned char code wl8[]={0x00,0x00,0x77,0x3f,0x77,
0x77,0x79,0x5b};
unsigned char code wl9[]={0x00,0x00,0x3f,0x38,0x38,
0x79,0x76,0x06};
unsigned char wl3[8]={18,16,16,16,16,16,16,16};
unsigned char wl4;
unsigned char wl5;
unsigned char wl6;
unsigned char wl7;
unsigned char zw;
unsigned char zq;
unsigned char wl7count;
unsigned char wllen=6;
unsigned char getwl[6];
bit wl7overflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa,bb;
unsigned int cc;
bit wl8flag;
bit alarmflag;
bit hibitflag;
unsigned char wl8a,wl8b;
void main(void)
{
unsigned char i,j;
TMOD=0x01;
TH0=(65536-300)/256;
TL0=(65536-300)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
P3=0xff;
P3_4=0;
wl6=P3;
wl6=wl6 & 0x0f;
if (wl6!=0x0f)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
wl6=P3;
wl6=wl6 & 0x0f;
if (wl6!=0x0f)
{
wl6=P3;
wl6=wl6 & 0x0f;
switch(wl6)
{
case 0x0e:
wl7=12;
break;
case 0x0d:
wl7=13;
break;
case 0x0b:
wl7=14;
break;
case 0x07:
wl7=15;
break;
}
wl6=P3;
//P1_1=~P1_1;
if((wl7>=0) && (wl7<10))
{
if(wl7count<6)
{
getwl[wl7count]=wl7;
wl3[wl7count+2]=19;
}
wl7count++;
if(wl7count==6)
{
wl7count=6;
}
else if(wl7count>6)
{
wl7count=6;
wl7overflag=1;//wl7 overflow
}
}
else if(wl7==12)//delete wl7
{
if(wl7count>0)
{
wl7count--;
getwl[wl7count]=0;
wl3[wl7count+2]=16;
}
else
{
wl7overflag=1;
}
}
else if(wl7==15)//enter wl7
{
if(wl7count!=wllen)
{
errorflag=1;
rightflag=0;
second3=0;
}
else
{
for(i=0;i<wl7count;i++)
{
if(getwl[i]!=wl[i])
{
i=wl7count;
errorflag=1;
rightflag=0;
second3=0;
goto a;
}
}
errorflag=0;
rightflag=1;
a: i=wl7count;
}
}
wl6=wl6 & 0x0f;
while(wl6!=0x0f)
{
wl6=P3;
wl6=wl6 & 0x0f;
}
wl7overflag=0;//?????????
}
}
P3=0xff;
P3_5=0;
wl6=P3;
wl6=wl6 & 0x0f;
if (wl6!=0x0f)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
wl6=P3;
wl6=wl6 & 0x0f;
if (wl6!=0x0f)
{
wl6=P3;
wl6=wl6 & 0x0f;
switch(wl6)
{
case 0x0e:
wl7=11;
break;
case 0x0d:
wl7=3;
break;
case 0x0b:
wl7=6;
break;
case 0x07:
wl7=9;
break;
}
wl6=P3;
//P1_1=~P1_1;
if((wl7>=0) && (wl7<10))
{
if(wl7count<6)
{
getwl[wl7count]=wl7;
wl3[wl7count+2]=19;
}
wl7count++;
if(wl7count==6)
{
wl7count=6;
}
else if(wl7count>6)
{
wl7count=6;
wl7overflag=1;//wl7 overflow
}
}
else if(wl7==12)//delete wl7
{
if(wl7count>0)
{
wl7count--;
getwl[wl7count]=0;
wl3[wl7count+2]=16;
}
else
{
wl7overflag=1;
}
}
else if(wl7==15)//enter wl7
{
if(wl7count!=wllen)
{
errorflag=1;
rightflag=0;
second3=0;
}
else
{
for(i=0;i<wl7count;i++)
{
if(getwl[i]!=wl[i])
{
i=wl7count;
errorflag=1;
rightflag=0;
second3=0;
goto a4;
}
}
errorflag=0;
rightflag=1;
a4: i=wl7count;
}
}
wl6=wl6 & 0x0f;
while(wl6!=0x0f)
{
wl6=P3;
wl6=wl6 & 0x0f;
}
wl7overflag=0;//?????????
}
}
P3=0xff;
P3_6=0;
wl6=P3;
wl6=wl6 & 0x0f;
if (wl6!=0x0f)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
wl6=P3;
wl6=wl6 & 0x0f;
if (wl6!=0x0f)
{
wl6=P3;
wl6=wl6 & 0x0f;
switch(wl6)
{
case 0x0e:
wl7=10;
break;
case 0x0d:
wl7=2;
break;
case 0x0b:
wl7=5;
break;
case 0x07:
wl7=8;
break;
}
wl6=P3;
//P1_1=~P1_1;
if((wl7>=0) && (wl7<10))
{
if(wl7count<6)
{
getwl[wl7count]=wl7;
wl3[wl7count+2]=19;
}
wl7count++;
if(wl7count==6)
{
wl7count=6;
}
else if(wl7count>6)
{
wl7count=6;
wl7overflag=1;//wl7 overflow
}
}
else if(wl7==12)//delete wl7
{
if(wl7count>0)
{
wl7count--;
getwl[wl7count]=0;
wl3[wl7count+2]=16;
}
else
{
wl7overflag=1;
}
}
else if(wl7==15)//enter wl7
{
if(wl7count!=wllen)
{
errorflag=1;
rightflag=0;
second3=0;
}
else
{
for(i=0;i<wl7count;i++)
{
if(getwl[i]!=wl[i])
{
i=wl7count;
errorflag=1;
rightflag=0;
second3=0;
goto a3;
}
}
errorflag=0;
rightflag=1;
a3: i=wl7count;
}
}
wl6=wl6 & 0x0f;
while(wl6!=0x0f)
{
wl6=P3;
wl6=wl6 & 0x0f;
}
wl7overflag=0;//?????????
}
}
P3=0xff;
P3_7=0;
wl6=P3;
wl6=wl6 & 0x0f;
if (wl6!=0x0f)
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
wl6=P3;
wl6=wl6 & 0x0f;
if (wl6!=0x0f)
{
wl6=P3;
wl6=wl6 & 0x0f;
switch(wl6)
{
case 0x0e:
wl7=0;
break;
case 0x0d:
wl7=1;
break;
case 0x0b:
wl7=4;
break;
case 0x07:
wl7=7;
break;
}
wl6=P3;
//P1_1=~P1_1;
if((wl7>=0) && (wl7<10))
{
if(wl7count<6)
{
getwl[wl7count]=wl7;
wl3[wl7count+2]=19;
}
wl7count++;
if(wl7count==6)
{
wl7count=6;
}
else if(wl7count>6)
{
wl7count=6;
wl7overflag=1;//wl7 overflow
}
}
else if(wl7==12)//delete wl7
{
if(wl7count>0)
{
wl7count--;
getwl[wl7count]=0;
wl3[wl7count+2]=16;
}
else
{
wl7overflag=1;
}
}
else if(wl7==15)//enter wl7
{
if(wl7count!=wllen)
{
errorflag=1;
rightflag=0;
second3=0;
}
else
{
for(i=0;i<wl7count;i++)
{
if(getwl[i]!=wl[i])
{
i=wl7count;
errorflag=1;
rightflag=0;
second3=0;
goto a2;
}
}
errorflag=0;
rightflag=1;
a2: i=wl7count;
}
}
wl6=wl6 & 0x0f;
while(wl6!=0x0f)
{
wl6=P3;
wl6=wl6 & 0x0f;
}
wl7overflag=0;//?????????
}
}
}
}
void t0(void) interrupt 1 using 0
{
TH0=(65536-300)/256;
TL0=(65536-300)%256;
wl5++;
if(wl5==8)
{
wl5=0;
P1=wl2[wl3[wl4]];
P2=wl1[wl4];
wl4++;
if(wl4==8)
{
wl4=0;
}
}
if((errorflag==1) && (rightflag==0))
{
zw++;
P1=wl8[zw];
P2=wl1[zw];
if(zw==8)
{
zw=0;
}
bb++;
if(bb==800)
{
bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)//sound alarm signal
{
P0_0=~P0_0;
}
aa++;
if(aa==800)//light alarm signal
{
aa=0;
//P1_0=~P1_0;
}
second3++;
if(second3==6400)
{
second3=0;
errorflag=0;
rightflag=0;
alarmflag=0;
bb=0;
aa=0;
}
}
else if((errorflag==0) && (rightflag==1))
{
zq++;
P1=wl9[zq];
P2=wl1[zq];
if(zq==8)
{
zq=0;
}
cc++;
if(cc<1000)
{
wl8flag=1;
}
else if(cc<2000)
{
wl8flag=0;
}
else
{
errorflag=0;
rightflag=0;
P0_0=1;
cc=0;
wl8a=0;
wl8b=0;
wl8flag=0;
//P1_0=1;
}
if(wl8flag==1)
{
wl8a++;
if(wl8a==2)
{
wl8a=0;
P0_0=~P0_0;
}
}
else
{
wl8b++;
if(wl8b==3)
{
wl8b=0;
P0_0=~P0_0;
}
}
}
if(wl7overflag==1)
{
P0_0=~P0_0;
}
}
复制代码
电子密码锁程序.rar
(18.5 KB, 下载次数: 14)
2018-12-21 22:17 上传
点击文件名下载附件
源程序
下载积分: 黑币 -5
作者:
1044689557
时间:
2019-8-9 20:08
没有仿真图吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1