51单片机关于密码锁的毕业设计,论文
恩,说实话密码锁已经有很多人做过了,已经不是个很新奇的东西了。
当然如果你可以有想法的话可以大胆的扩展一下的,让他多有些功能,什么电子猫眼/语音对话/留言/防盗/防火灾……都加上去吧。
用单片机做密码锁,什么单片机51?PIC?DSP?ARM?
你来取,我发给你
我有更完整的
确
程序设计内容
(1). 密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。
(2). 密码的输入问题: 由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。
(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。
C语言源程序
#include unsigned char code ps[]={1,2,3,4,5};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsigned char pslen=9; unsigned char templen;
unsigned char digit; unsigned char funcount;
unsigned char digitcount;
unsigned char psbuf[9];
bit cmpflag;
bit hibitflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa;
unsigned int bb;
bit alarmflag;
bit exchangeflag;
unsigned int cc;
unsigned int dd;
bit okflag;
unsigned char oka;
unsigned char okb;
void main(void)
{
unsigned char i,j;
P2=dispcode[digitcount];
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%6;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(cmpflag==0)
{
if(P3_6==0) //function key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_6==0)
{
if(hibitflag==0)
{
funcount++;
if(funcount==pslen+2)
{
funcount=0;
cmpflag=1;
}
P1=dispcode[funcount];
}
else
{
second3=0;
}
while(P3_6==0);
}
}
if(P3_7==0) //digit key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_7==0)
{
if(hibitflag==0)
{
digitcount++;
if(digitcount==10)
{
digitcount=0;
}
P2=dispcode[digitcount];
if(funcount==1)
{
pslen=digitcount;
templen=pslen;
}
else if(funcount>1)
{
psbuf[funcount-2]=digitcount;
}
}
else
{
second3=0;
}
while(P3_7==0);
}
}
}
else
{
cmpflag=0;
for(i=0;i
{
if(ps[i]!=psbuf[i])
{
hibitflag=1;
i=pslen;
errorflag=1;
rightflag=0;
cmpflag=0;
second3=0;
goto a;
}
}
cc=0;
errorflag=0;
rightflag=1;
hibitflag=0;
a: cmpflag=0;
}
}
}
void t0(void)
interrupt 1 using 0 { TH0=(65536-500)/256;
TL0=(65536-500)%6;
if((errorflag==1) && (rightflag==0))
{
bb++;
if(bb==800)
{
bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
P0_0=~P0_0;
}
aa++;
if(aa==800)
{
aa=0;
P0_1=~P0_1;
}
second3++;
if(second3==6400)
{
second3=0;
hibitflag=0;
errorflag=0;
rightflag=0;
cmpflag=0;
P0_1=1;
alarmflag=0;
bb=0;
aa=0;
}
}
if((errorflag==0) && (rightflag==1))
{
P0_1=0;
cc++;
if(cc<1000)
{
okflag=1;
}
else if(cc<2000)
{
okflag=0;
}
else
{
errorflag=0;
rightflag=0;
hibitflag=0;
cmpflag=0;
P0_1=1;
cc=0;
oka=0;
okb=0;
okflag=0;
P0_0=1;
}
if(okflag==1)
{
oka++;
if(oka==2)
{
oka=0;
P0_0=~P0_0;
}
}
else
{
okb++;
if(okb==3)
{
okb=0;
P0_0=~P0_0;
}
}
}
}
电子密码锁
摘要 本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路保证电路能够安
工作,有极高的安全系数。
关键词 电子密码锁 电压比较器 555单稳态电路 计数器 JK触发器 UPS电源。
1 引言
随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。
设计本课题时构思了两种方案:一种是用以AT89C2051为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到单片机方案原理复杂,而且调试较为繁琐,所以本文采用后一种方案。
用STC的单片机,里面有EEPROM,把设定的密码写到里面。
正常运行时 输入密码和EEPROM里面的密码比较 正确了就可以进入
新款的单片机都可以设置密码
答:基于51单片机的密码锁程序,三个子程序:4*4的矩阵键盘、I2C芯片、液晶屏最好是用KeiluVision2编写的。。要求是4*4的矩阵键盘,其中10个是数字键,还包括一个确认、一个更改密码、一个... 基于51单片机的密码锁程序,三个子程序:4*4的矩阵键盘、I2C芯片、液晶屏最好是用Keil uVision2编写的。。要求是4*4的...
答: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...
答:基于AT89C2051单片机的防盗自动报警电子密码锁系统的设计摘要: 随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器。介绍了一种应用AT89C2051单片机设计的防盗自动报警电子密码锁系统。经实验验证该系统具有软硬件设计简单,易于开发,成本较低,安全可靠,操作方便等特点,可作为产品进行开发...
答:做个密码锁可算是比较考验综合应用单片机基础知识的了。1、键盘处理: 按键设计、键值获取、键值处理 2、显示处理:如果有显示,那要看是数码管显示,还是液晶屏显示,还是其他方法显示,显示的内容是什么,什么时候显示什么内容?3、声光处理:密码输入正确时的提示,输入错误后的提示。4、机械驱动:密码...
答:我有两个,均ProteUS仿真调试通过 有偿提供,第一个是帮别的毕业设计做的 第二个没有使用过。; 密码长度自由可设;; 密码设定必须加密存储;; 三次错码输入报警提示,且10分钟内不接受再次输入;; 具有超级密码功能,长度或格式特殊。其二:51单片机,4x4小键盘和1622LCD做一个简易密码锁 悬赏分:0...
答:保密性差、矩阵按键输入方式。根据查询51单片机密码锁使用说明得知,51单片机密码锁的不足为保密性差,51单片机保密性与网络信息技术有关,因此如果存在密码泄露或被人为侵入密码锁系统,则密码锁容易被破坏,针对这个不足之处,改进方案可以采用矩阵安全输入或外接电锁增加保密性。电子密码锁是一种通过密码...
答:采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,...
答:mov r0,#50h ;初始密码首地址 mov r1,#08h szmm: mov @r0,#00h ;设置密码 inc r0 djnz r1,szmm mov r2,#03h ;设置输入密码的次数 K:mov ie,#81h ;中断方式设置 mov tcon,#01h k1:mov a,p1 clr p1.2 ;判断开关位置 mov r1,a anl a,#03h jz dmm dec a jz xiansh...
答:sbit key1=P0^0;sbit key2=P0^1;sbit key3=P0^2;sbit key4=P0^3;sbit wela=P2^0;//位锁存端 define SMG P1 sbit LED=P3^0;//低电平亮 uchar code table[]={0x8d,0x86};//共阳数码管 P,E uchar chushi_mima[]={2,1,3};uchar shuru_mima[3];uchar index;//控制输入密码的...
答:我有 还带Proteus仿真 ORG 0000H AJMP MAIN ORG 0003H JMP KEY_INT ORG 000BH AJMP INTT0 ORG 001BH AJMP INTT1 ORG 0030H ;=== 主程序开始 === MAIN: MOV 30H,#07H ;输入密码为7位 最高只可设15位 MOV 42H,#200 ;设定报警的时间,42H单元里的数*50MS MOV 43H,...