永发信息网

跪求! ! ! ! 单片机电子密码锁电路图和源程序

答案:1  悬赏:20  手机版
解决时间 2021-04-13 09:37
用单片机控制锁芯的转动,用6位数码管显示输入的密码值
主要设计要求:输入密码正确绿灯亮,蜂鸣器短叫5声,锁习动作,打开锁;输入错误时,红灯亮,锁不动,蜂鸣器长叫。
设置电源指示灯
最佳答案

我刚好也在练习编写,这段程序是密码锁,或许对你有用,


你在 每一行的 while(key!=D[0]);后面加上 红灯亮,蜂鸣器响的程序


我的密码正确是蜂鸣器响,你把它改成for(i=0;i<5;I++)的形式







#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar temp,key;
void delay(uint z)//延时函数
{
uint x,y;
for(x=110;x>0;x--)
for(y=z;y>0;y--);
}
void display(uchar num)//数码管上显示
{
P0=table[num];
dula=1;
dula=0;
}



void main()
{
uchar code D[]={3,7,5,2,7,0,6,2,3};//设定的密码为375270623


TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;//开定时器 0


P0=0;
dula=1;
dula=0;
P0=0xc0;
wela=1;
wela=0;


while(key!=D[0]);//第一位密码输入不正确,等待


while(key!=D[1]);//第二位密码输入不正确,等待



while(key!=D[2]);//


while(key!=D[3]);//


while(key!=D[4]);//


while(key!=D[5]);//


while(key!=D[6]);//


while(key!=D[7]);//


while(key!=D[8]);//

beep=0;//密码全都正确后,蜂鸣器响(代表密码锁开了)



}


void t0() interrupt 1
{
TR0=0;//定时器0 关闭



P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=0;
break;
case 0xde:
key=1;
break;
case 0xbe:
key=2;
break;
case 0x7e:
key=3;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
display(key);//数码管上显示按键的数
}
}



P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=4;
break;
case 0xdd:
key=5;
break;
case 0xbd:
key=6;
break;
case 0x7d:
key=7;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
display(key);//数码管上显示按键的数
}
}



P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
key=8;
break;
case 0xdb:
key=9;
break;
case 0xbb:
key=10;
break;
case 0x7b:
key=11;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
display(key);//数码管上显示按键的数
}
}




P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
key=12;
break;
case 0xd7:
key=13;
break;
case 0xb7:
key=14;
break;
case 0x77:
key=15;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
display(key);//数码管上显示按键的数
}
}



TR0=1;//定时器0 开
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
周王曾制九鼎,象征九州。周王用九鼎,诸侯用
Comodo防火墙怎么设置?
丰丁在什么地方啊,我要过去处理事情
代理彩妆品牌什么牌子的好 大概需要多少代理
三国里的关羽的赤兔马究竟是兔还是马
怪物猎人轰龙的頭殼要怎么获得?
分解因式:x³y³-2x²y²+xy
单选题司法机关依法查处“银广厦”、“中科创
猴年的歇后语,猴年的成语,俗语,谚语,对联,祝
QQ三国游戏做国家任务能得到什么
聘员和雇员有什么区别?
计算机设计有哪些软件?
普济中医诊所这个地址在什么地方,我要处理点
科比的剪刀布怎么走
白天不喜欢一个人出去玩,而且又懒的出去,不
推荐资讯
在佛山哪里能买到在墙上作画的颜料
百年孤独里最经典语录,<<百年孤独>>里最经典
单选题Ilikethissong.Its________anold
历史上俄罗斯、乌克兰等地一些人群的总称是?
置地星座-停车场我想知道这个在什么地方
未来老公对我很好,但我看到他就想哭是为什么?
2017年永城市刘河镇倪阁村彩礼钱多少
时的意思的意思是什么,1至2之间是什么意思 20
超级QQ怎样登陆手机QQ玩农场?
有哪位仁兄提供点论文的资料,题目是无形资产
我想在我的老年代步车前边加一对雾灯,不想钻
Ryzen 7比i7性价比高,主板和显卡怎么搭配?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?