多功能密码锁的设计.docx

上传人:b****6 文档编号:7812314 上传时间:2023-01-26 格式:DOCX 页数:23 大小:1.85MB
下载 相关 举报
多功能密码锁的设计.docx_第1页
第1页 / 共23页
多功能密码锁的设计.docx_第2页
第2页 / 共23页
多功能密码锁的设计.docx_第3页
第3页 / 共23页
多功能密码锁的设计.docx_第4页
第4页 / 共23页
多功能密码锁的设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

多功能密码锁的设计.docx

《多功能密码锁的设计.docx》由会员分享,可在线阅读,更多相关《多功能密码锁的设计.docx(23页珍藏版)》请在冰豆网上搜索。

多功能密码锁的设计.docx

多功能密码锁的设计

一、前言

随着人民生活水平的提高,家庭防盗问题变得尤为突出。

在科学技术不断发展的今天,电子多功能密码锁的作用显得日趋重要。

本次设计从当前所学出发,系统由AT89C51单片机与低功耗CMOSAT24C04作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、LED灯提醒、开锁等电路模块。

它能完成以下功能:

正确输入密码后,开锁;错误输入密码情况下,显示错误;开锁之后可手动上锁;密码可以根据用户需要更改。

用C语言编写了主控芯片控制程序,并用Keil软件进行编译,设计了一款可以多次更改密码,具有多功能的电子密码控制系统。

本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活性高等特点,具有一定的推广价值。

二、绪论

1.背景

本次设计课题为多功能密码锁的设计。

密码和锁,代表着秘密和隐私。

隐私是个人的自然权利。

从人类抓起树叶遮羞之时起,隐私就产生了。

隐私感是自然人进入人类社会后的第一个表现,它应当产生于人类劳动之前,即在原始人能够进行抽象思维之前,就已产生了类似的意识和感觉。

其中,羞耻感及其派生的隐私感是最先表征出来的本能。

隐私感是人类羞耻感的表现,它使人从主观意志和客观行为两方面都告别了动物界。

无论是相对个人性的隐私,还是明显社会性的隐私,均是仅凭个人的主观意志即可作为,无须公众或不特定多数人、少数人的协助或配合。

因此,隐私的存在,隐私之于社会公众而言是不可剥夺的,这正是自然权利的特点。

秘密和隐私相应的就需要各种锁来保护,在历史发展中,锁具千变万化,从新石器时代的“骨错”、“石错”,到之后的木质锁,金属质锁,现代的密码锁、感应锁、生物锁等等。

图2-1

2.

发展

最早的锁,是主人为防他人开启而设的简单的机关,应用于门上最简单的锁就是门闩了。

我国古代有石锁,并无钥匙,是以绳索或铁链束缚。

商周时期出现了用钥匙才能开启的铜锁,铁锁。

随着科学技术的迅猛发展,机械锁也有了长足的发展。

以后,又发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。

在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同图像。

如指纹、眼底视网膜等)来控制锁的开启。

图2-2图2-3

从日常生活中也可以找到例子,最常见的比如智能手机的锁屏,也是一种很好的密码锁方式,据说现在安卓上的锁屏已有数千种之多。

而苹果公司最新推出的TouchID指纹解锁则是将安全性体现到了极致,通过一个小小的HOME键扫描指纹来验证信息,将易用性和安全性完美结合。

3.结论

本次所要设计的电子密码锁,当今已发展到了非常高的境界,由于电子元件特别是单片机应用在这些年得到空前发展,无论功能性,稳定性都比较全面,在保密方面已做到人眼识别,指纹识别,人声识别基本上电影上有的现实也有。

在国外发展比较早,所以应用也比较广泛,主要在家庭装较贵重地方,银行,保险柜等应用较多,在国内这方面发展也较快,不管自己开发或是引进都有,在重要地方应用也较多,由于价钱比普通弹子锁较贵,早几年应用较少,现在越来越普及到平常化,未来的发展也会越来越被大众采用,由于它的功能、安全是弹子锁无法相比的。

发展前境也是非常大的。

从目前的技术水平和市场认可程度看,使用最为广泛的是键盘式电子密码锁,该产品主要应用于保险箱、保险柜和取款机。

在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用也日趋重要。

电子密码锁是集计算机技术、电子技术、数字密码技术为一体的机电一体化高科技产品,具有安全性高,使用方便等优点。

键盘式电子密码在键盘上输入,与打电话差不多,因而易于掌握,其突出优点是“密码”是记在被授权人脑子里的数字和字符,既准确又可靠,不会丢失,难以被窃。

但是密码不能太简单,太简单了就容易被他人在键盘上试探出来,或者可能被旁观者窥测出来,造成保密性不足。

当然,密码又不能太复杂,太复杂了可能自己都糊涂了,或者输入密码操作成功率低,造成使用不便。

因此,为了发扬优点、克服弱点,键盘式电子密码也在不断发展中,如“任意设定密码”技术使得被授权人可以根据自己的需要或喜好设定密码,常用常新;独出心裁的“键盘乱序显示”技术使得键盘上的固定键位每次显示出的字符不固定,并且显示的窄小角度只能由操作者正面看得到,因而即使旁观者看见操作动作也难以窥测出密码;“多重密码设定”技术使得单组密码不一定有效,适合多人分权使用,需要输入两组以上的密码才被认可,大大提高了保密性,如果限定输入这些密码的先后顺序或时间区段,则保密性还可提高。

在输入密码的过程中,为了限制试探密码的企图,通常输入错误码若干次或若干时间内输入不正确,即“封锁”键盘,不再接受输入操作。

三、整体设计方案

1.设计目标

本设计采用AT89C51单片机为主控芯片,结合外围电路矩阵键盘、液晶显示器LCD1602和密码存储AT24C04等部分组成。

其中矩阵键盘用于输入数字密码和进行各种功能的实现。

由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路控制开锁,组成的电子密码锁系统,能够实现:

1.完全正确输入密码的前提下,有开锁提示;

2.错误输入密码情况下,提示错误;

3.用户可以自行设定和修改密码;

4.只有内部上电复位时才能设置或修改密码。

系统整体设计框图如图3-1所示:

 

 

 

图3-1

2.主控部分选择

选用单片机作为系统的核心部件,实现控制与处理的功能。

单片机具有资源丰富、速度快、编程容易等优点。

利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接液晶显示(LCD),键盘输入、LED灯等实现数据的处理传输和显示功能,基本上能实现设计指标。

 

3.密码输入方式选择

矩阵键盘输入识别,由各按键组成的矩阵键盘每条行线和列线都对应一条I/O口线,键位设在行线和列线的交叉点,当一个键按下就会有某一条行线与某一条列线接触,只要确定接触的是哪两条线,即哪两个I/O口线,就可以确定哪一个键被触动。

行线设计成上拉口线,初始时被置高电位,列线悬空,初始置低。

通过不断读行线口线,或者中断方式触发键位扫描。

当发现有键按下,将列线逐一置低,其他列线置高,读行线口线。

当某条列线置低时,某条行线也被拉低,则确定这两条线的交点处的按钮被按下。

每个按键都可通过程序赋予功能,从而完成密码识别。

四、硬件系统设计

1.单片机AT89C51介绍

图4-1

AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。

AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

电子密码锁系统主模块AT89C51单片机在软件中如图所示:

图4-2

主要特性:

•与MCS-51兼容

•4K字节可编程FLASH存储器

•寿命:

1000写/擦循环

•三级程序存储器锁定

•128×8位内部RAM

•32可编程I/O线

•两个16位定时器/计数器

•5个中断源

•可编程串行通道

•片内振荡器和时钟电路

2.晶振电路介绍

AT89C51引脚XTAL1和XTAL2与晶体振荡器及电容C2、C1按图4-3所示方式连接。

晶振、电容C2/C1及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C2、C3取值范围在5~30pF之间。

图4-3

电子密码锁系统的晶振复位电路在软件中如图所示:

图4-4

3.存储芯片AT24C04介绍

AT24C04是Ateml公司的4KB得电可擦除存储芯片,存储器配置:

512x8bit,存储器容量:

4Kbit,频率:

1MHz,采用两线串行的总线和单片机通讯,表面安装器件:

通孔安装。

电压最低可以到2.5V,额定电流为1mA,静态电流10uA(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。

简而言之,AT24C04是一个在突然掉电的情况下存储数据的芯片,即掉电存储芯片。

电子密码锁系统掉电存储及提醒电路在软件中如图所示:

图4-5

引脚说明:

A0~A2:

芯片的地址

SCK:

时钟信号线用于产生器件所有数据发送或接收的时钟

SDA:

数据信号线用于传送地址和所有数据的发送和接受

WP:

写保护接+5V时只能读;接GND时即能写也能读。

4.键盘输入电路介绍

由于本设计所用到的按键数量较多而不适合用独立按键式键盘。

采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘。

按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O接口。

本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,比如修改密码功能等。

键盘的每个按键功能在程序设计中设置。

其原理图如图4-6所示:

图4-6

电子密码锁系统的键盘模块在软件中如图所示:

图4-7

5.LCD1602显示器介绍

液晶显示模块已作为很多电子产品中都可以看到,显示的主要是数字、专用符号和图形。

1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。

1602型LCD可以显示2行16个字符,有8位数产品的通过器件,如在计算器、电子表及很多家用电子据总线D0-D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。

显示电路原理图如图4-8所示:

图4-8

电子密码锁系统的显示模块在软件中如图所示:

图4-9

五、系统仿真、调试

1.Proteus软件简介

ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。

它运行于Windows操作系统上,可以仿真、分析各种模拟器件和集成电路,该软件的特点是:

1实现了单片机仿真和数字电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

2支持主流单片机系统的仿真。

目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

3提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision2等软件。

4具有强大的原理图绘制功能。

总之,该软件是一款集单片机和电路分析于一身的仿真软件,功能极其强大。

2.软件工作界面

ProteusISIS的工作界面是一种标准的Windows界面,如图5-1所示。

包括:

标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口等。

图5-1

3.本次设计Proteus仿真如图

图5-2

六、C语言程序编写汇编

1.Keil软件简介

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。

运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。

2.KEIL软件工作环境:

图6-1

3.本次设计参考程序

#include

#defineucharunsignedchar

sbite=P2^2;

sbitrw=P2^1;

sbitrs=P2^0;

voidCheck_key()

voidkai()

voidmima(intw,intk)

voidzf(intw)

voidinit()

voidwait()

voidrelay()

voidwcode(ucharc)

voidwdata(ucharw)

ucharidatashu[15]={0x45,0x6e,0x74,0x65,0x72,0x20,0x50,0x61,0x73,0x73,0x77,0x6f,0x64,0x3a,0x00};

ucharidatature[6]={0x72,0x69,0x67,0x68,0x74,0x00};

ucharidataerror[6]={0x65,0x72,0x72,0x6f,0x72,0x00};

ucharidatab[6]={1,2,3,4,5,6};

ucharidatanew[13]={0x6e,0x65,0x77,0x20,0x50,0x61,0x73,0x73,0x77,0x6f,0x64,0x3a,0x00};

ucharidatanew1[6]={0x61,0x67,0x61,0x69,0x6e,0x00};

uchara[6];

ucharidatazs[5]={0x57,0x41,0x49,0x54,0x00};

ucharidataopen[7]={0x4f,0x50,0x45,0x4e,0x45,0x44,0x00};

ucharidataclose[6]={0x43,0x4c,0x4f,0x53,0x45,0x00};

main()

{

while

(1)

{

intz=0;

intk=0;

intc=0;

intw=0;

ints=0;

inti=0;

intf=0;

while(z==0)

{

a[5]=20;

s=0;

init();

while(k!

=15)

k=kbscan();

wcode(0x0f);

zfc(0,shu);

while(c<3&&f==0)

{

while(k!

=12)

{

k=kbscan();

if(k>=0&&k<=9|k==10)

{

if(k>=0&&k<=9)

{

if(w<6)

{

mima(w,k);

w++;

}

}

if(k==10)

{

if(w>0)

w--;

wcode(0xc0|w);

wdata(0x20);

relay();

}

}

if(k==11){w=0;f=1;k=12;}

}

for(i=0;i<6;i++)

{

if(a[i]==b[i]);

elses=1;

}

k=20;

if(s==0){kai();c=0;z=1;break;}

if(s==1&&f==0){c++;cuo();w=0;s=0;}

}

f=0;

if(c==3){zisuo();c=0;}

}

while(k!

=13)

{

k=kbscan();

if(k==14)

if(z==1)

she();

}

zfc(0,close);

relay();

z=0;

}

}

voidCheck_key(void)

{unsignedintrow,col,tmp1,tmp2;

tmp1=0x10;

for(row=0;row<4;row++)

{P1=0x0f;

P1=~tmp1;

tmp1*=2;

if((P1&0x0f)<0x0f)

{DelayMs(30);

if((P1&0x0f)<0x0f)

{tmp2=0x01;

for(col=0;col<4;col++)

{

if((P1&tmp2)==0x00)

{

key_val=row*4+col;

while((P1&tmp2)==0x00);

return;}

tmp2*=2;}

while((P1&tmp2)==0x00)}}}}

if(sk[15]==1)

{GotoXY(0,0);

count=0;

print("YourPassword…");

count1=1;count2=1;

count6=1;

sk[15]=0;sk[14]=0;

m=0;cp[0]=1;}

if((count!

=0)&&(count1==1))

{if(count==1){GotoXY(0,0);print("YourPassword…*");}

count1=0;}}

if((sk[14]==1)&&(count6==1))

{

if((password[0]==cq[0])&(password[1]==cq[1])&(password[2]==cq[2])&(password[3]==cq[3])&(password[4]==cq[4])&(password[5]==cq[5])&(count==6))

{GotoXY(0,0);print("UnlockOK!

");

sk[14]=0;

count=0;count2=0;m=0;

count4=1;count6=1;

DelayMs(1000);P2_0=0;

DelayMs(500);P2_0=1;

LCD_Initial();cp[0]=0;}

else

{GotoXY(0,0);print("ERROR!

");

DelayMs(1000);sk[14]=0;

count=0;count2=0;count6=0;m=0;p3_6=0;

count4=1;count6=1;

DelayMs(1000);DelayMs(100);

DelayMs(3000);p3_6=1;LCD_Initial();cp[0]=0;

}

}

if((sk[11]==1)&(cp[0]==0))

{GotoXY(0,0);print("NewPassword:

");

pass=1;count1=0;count=0;

count7=1;count2=1;count6=0;sk[11]==0;}

if((count!

=0)&(pass==1)&(cp[0]==0))

{pass0=0;

if(count==1){GotoXY(0,0);print("NewPassword:

*");}

if((count!

=0)&(pass0==1)&(cp[0]==0))

{pass=0;

if(count==1){GotoXY(0,0);print("NewPassword:

*");}

if((sk[14]==1)&(count7==1))

if(pa!

=10)&(pass0==1)

{co[n]=pa;n++;pa=10;}}

if(sk[14]==1)

{if((n>7)&(count==6))

{GotoXY(0,0);print("PasswordSaved!

");

}}

voidkai()

{

inti=0;

init();

wcode(0x0f);

zfc(0,ture);

for(i=0;i<5;i++)

relay();

zfc(0,open);

}

voidmima(intw,intk)

{

a[w]=k;

zf(w);

}

voidzf(intw)

{

wcode(w|0xc0);

wdata(0x2a);

relay();

}

voidinit()

{

wcode(0x38);

wcode(0x06);

wcode(0x01);

}

voidwait()

{

inti=200;

while(i)i--;

}

voidrelay()

{

inti=50000;

while(i)i--;

}

voidwcode(ucharc)

{

e=0;rw=0;rs=0;

P3=c;e=1;

wait();

e=0;

}

voidwdata(ucharw)

{

e=0;rw=0;rs=1;

P3=w;e=1;

wait();

e=0;

}

七、参考文献

1.胡汉才.单片机原理及其接口技术(第2版).北京:

清华大学出版社,2004

2.江志红.51单片机技术与应用系统开发.清华大学出版社,2008

3.何立民.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:

北京航空航天大学出版社,1999

4.王宽仁.可靠安全的智能密码锁.电子技术应用.2001.2

5.任艳艳.基于AT89C51单片机多功能密码锁的研究.重庆职业技术学院学报.2008.5

6.阎石.数字电子技术基础[第四版].高等教育出版社.1998.11

7.董继成.一种新型安全的单片机密码锁.电子技术.2004.3

8.李明喜.新型电子密码锁的设计.机电产品开发与创新.2004.8

9.王金国.采用单片机的电子密码锁控制电路.山东煤炭科技,2000

10.周鑫,何建新,刘琥.基于单片机的电子密码锁控制电路设计成都信息工程学院学报.2009.8

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1