基于单片机的电子密码锁设计报告_第1页
基于单片机的电子密码锁设计报告_第2页
基于单片机的电子密码锁设计报告_第3页
基于单片机的电子密码锁设计报告_第4页
基于单片机的电子密码锁设计报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于单片机的电子密码锁设计报告 目录1 绪论(3)1.1选题背景(3)1.2电子密码锁简介(3)1.2.1电子密码锁的特点(3)1.2.2电子密码锁的发展趋势(4)1.3本设计所要实现的目标(4)2 电子密码锁的方案设计(5)2.1系统的工作原理(5)2.2键盘输入方案的选择(5)3电子密码锁的硬件设计(6)3.1系统硬件及各部分电路(6)3.1.1数据处理及控制模块(6)3.1.2键盘输入模块(7)3.1.3密码存储模块(7)3.1.4显示模块(8)3.1.5其他模块(9)4系统软件流程(10)5 电子密码锁源程序(11) 1 绪论1.1 选题背景随着社会物质财富的日益增长和人们生活水平的提

2、高,安全防盗已成为现代居民最关心的社会问题之一。而锁自古以来就是把守门户的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制造者长期以来的研制主题。目前最常用的锁还是传统的机械锁,其结构简单,使用方便,价格便宜,但在使用中暴露了许多缺点:一是机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。然而,眼下假冒伪劣的机械锁泛滥成灾,互开率非常之高。随着科学技术的不断发展,人们对日常生活中的安全保险器件要求越来越高,许多智能锁(如指纹识别,ic卡识别)相继问世,但这类产品的特点是针对个别人使用的箱、柜、房间的等。另外,卡片式的ic卡易丢失,加上其成本一般较高,在一定程度上限制

3、于这类产品的普及和推广。为满足人们对锁的使用要求增加其安全性,用密码代替钥匙的密码锁应运而生,密码锁具有安全性高、成本低、功耗低、易操作等特点。电子密码防盗锁用密码代替钥匙,不但省去了携带钥匙的麻烦,也从根本上解决了普通门锁保密性差的缺点。如果来用4位密码,则密码组合可达到10000个,每增加一位,密码组合就增加十倍;同时电子密码锁利用eeprom存储器,将设置的密码存入eeprom中,从而克服了旧式电子密码锁电路断电后所设置密码丢失的缺点。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械锁,克服了机械锁安全性能差的缺点,使密码锁无论在技术上还是性能上都大大提高。随着大规模集

4、成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理与专家分析系统的功能,具有很高的安全性、可靠性,应用日益广泛,鉴于目前的技术水平与市场的接受程度,电子密码锁是电子防盗产品的主流。1.2 电子密码锁简介1.2.1电子密码锁的特点随着社会物质财富的日益增长,安全防盗已成为社会问题。而锁自古以来就是把守门户的铁将军,人们对它要求甚高,即要安全可靠地防盗,又要使用方便,这也是制锁者长期以来研制的主题。弹子锁由于结构上的局限已难以满足当前社会管理和防盗要求,如:宾馆、办公大楼、仓库、保险柜等由于人员的变动,开锁的钥匙也不再是只有一人拥有。

5、购得新居的家庭,由于装修施工等入住时也要把原有的锁胆更换,况且钥匙随身携 带也诸多不便。机电一体化的电脑密码锁其功能大大超过弹子锁,且能更安全可靠。其特点如下:1.保密性好,编码总量达10亿种,远远大于弹子锁。使随机开锁成功率几乎为零。2.编码可变,这就避免因人员的更替而使锁的密级下降,且有利用户编制易于记忆的密码。3.误码输入保护。三次输入错码发出警声并关闭主控电路。4.停电不丢码。5.多种密码开锁方式,使用方便。设有单人开锁,二、三人多种开锁方式。1.2.2 电子密码锁市场前景目前,电子密码锁在国外已大量使用,技术已趋于成熟。在国内这种锁主要出现在保险柜、密码箱、高级宾馆等场所,家居用的较

6、少,究其原因,我认为有以下几点: 1价格原因。现在普通的家庭买一把一般的机械锁,价格在几十到一两百左右,而电子密码锁的价格一般在300元以上,进口的甚至要几千元。买一把这样的锁对于一些家庭来说,是很难接受的。2厂商推广的力度不够。电子密码锁属于高科新产品,许多的用户根本不知道有这种锁,更不用说拿它与传统的机械锁作比较。而一般的商场也不会经营这种产品,用户即使想买也难以买到。3密码锁自身的不便以及人们的习惯和意识问题。机械锁普及已久,人们已经习惯了用一把钥匙开一把锁,如果换成密码锁,不符合习惯。而且,每次开门时都要输入密码,除了需要记忆密码外,还要担心密码被人看见带来的麻烦。此外,用户还会担心电

7、子锁的电源断电问题,即万一停电或是电池耗尽,会不会打不开锁而进不了屋。诸如此类的问题给用户带来了很多的不便,再加上大部分人对“互开锁”、“急开锁”现象不了解,对机械锁的安全问题没有足够的重视,使得人们在选择家用锁的时候更倾向于购买传统的机械锁。4国内的技术不够成熟。对一个小康家庭而言,买一把价钱在一千元以内的国产的电子密码锁,并不是什么难事。但是人们都希望买一把可靠性、安全性好的锁,如果买回一把电子锁,没用多久就坏了,那还不如买机械锁方便。至于进口的锁,价钱昂贵,一般用户难以接受。目前在国内,电子锁还未大批量生产,我认为技术不成熟是一个主要的原因。以上几个方面的原因,为电子密码锁的推广带来了许

8、多的困难。但是,由于电子密码锁在安全等许多方面的优势,必将被社会所接受而与机械锁平分秋色。对于电子锁的生产厂家而言,我认为,在提高技术的同时,应该加强宣传的力度,比如在一些条件好的社区推广这种锁,搞一些试点。还可以将电子密码锁安装在防盗门上,和防盗门一齐销售,这样会更容易被用户接受。另外,在防盗门外观的设计上,应该做到美观、方便,界面要尽量符合用户的习惯,如果进一步降低价格,提高性价比,效果会更好。1.3本设计所要实现的目标采用单片机为主芯片,结合外围电路,构成电子密码锁。用户想要打开密码锁,必须先通过键盘输入正确的密码,操作错误或密码输入错误均有提示信息,当用户输入有误时,可以清除当前错误的

9、键入值。为了提高其安全性,当密码输入错误次数达到预设次数时,密码锁将启动报警,并封锁键盘,禁止任何输入。在锁打开的状态下用户可以根据需要重新上锁或者修改密码,修改密码时要求用户输入两次新密码,并且两次输入完全一致才能修改成功。2 电子密码锁的方案设计2.1系统的工作原理本题设计的电子密码锁系统主要由:数据处理机控制模块;键盘输入模块;密码存储模块;显示模块;其他模块(包括蜂鸣器,状态指示灯,系统复位电路等等)五大模块组成。其组成原理如图2-1所示。首先,用户通过键盘输入模块输入密码,所输入的密码被传送到数据处理模块经过单片机处理后,与密码存储模块中的密码比较,判断密码是否正确,同时显示模块会为

10、用户显示简单的提示信息。经过单片机判断,如果密码正确,则开锁,否则不开锁,并警告用户密码输入错误。 数据处理模块at89s52显示模块键盘输入模块其他模块密码存储模块图2-1 系统组成原理图2.2键盘输入方案的选择 在单片机系统中,常用的键盘输入模式有两种:独立式按键结构和行列式按键结构。(1) 独立式键盘:独立式键盘是指直接用i/o口线构成的单个按键电路,每个独立式按键单独占有一根i/o口线,每根i/o口线上的按键工作状态不会影响其他i/o口线的工作状态。独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根i/o口线,在按键数量较多时,i/o口线浪费较大。(2) 行列式键盘:行列式键

11、盘又叫矩阵式键盘,用i/o口线组成行列结构,按键设置在行列的交点上。本设计按键数量较多,如果采用独立式键盘,会对单片机的i/o口线造成较大的浪费,因此,本次设计选用行列式键盘作为电子密码锁的键盘输入模块。3 电子密码锁硬件设计3.1系统硬件各部分电路3.1.1数据处理及控制模块本次设计中,采用51系列单片机at89s52芯片作为电子密码锁的处理及操作控制芯片。只有单片机芯片无法完成数据处理及控制功能,必须有附加的电路使单片机芯片组成一个可运行的系统才能实现其功能。本次设计中,由at89s52芯片连同附加电路构成的单片机最小系统作为数据处理及控制模块,其电路连线图如图3-1所示。图3-1单片机最

12、小系统3.1.2键盘输入模块本次设计由于按键数量较多,故采用行列式键盘作为密码锁系统的输入模块。把单个按键按4*4格式组合成键盘,四条行选线连接到单片机的p1.0-p1.3四条i/o口线上,四条列选线连接到单片机的p1.4-p1.7四条i/o口线上,在系统运行时,通过检测每条行和列线上的电平变化,即可判断出用户输入的为何种信息,其电路连线如图3-2所示。图3-2键盘接口示意图在图3-2所示电路中,单片机通过控制p1口的高低电平,然后根据检测到的结果进行判断。首先,单片机向四条行线输入高电平,向四条列线输入低电平,在按键未被按下时,p1口的8条i/o口线会保持给定的高低电平,当用户按下某个按键时

13、,在相应的按键位置,行线和列线被连接在一起,此时,行线上的高电平变为低电平,单片机通过检测即可判断用户所按下的按键处于哪一行,然后以相同的方式判断出按下的按键处于哪一列,此时即可判断出用户按下的是哪一个按键。3.1.3密码存储模块在电子密码锁系统中,用户所设定的密码是需要永久保存的,因此,本设计采用在掉电情况下依然能保存数据的eeprom存储芯片24c02作为密码存储模块的记忆芯片。在电子密码锁系统中,系统需要存储的仅有6位密码,数据量较小。因此芯片的地址选择端口可以直接连上地线,只需把芯片的时钟输入端口(sck)和数据输入端口(sda)和单片机相连,其电路连接如图3-3所示。图3-3 24c

14、02芯片与单片机连接示意图3.1.4显示模块电子密码锁系统中,需要显示额信息较少,因此采用7段led数码显示管作为显示器。数据传输采用串行方式,由单片机的串行数据口p2口发送,在经过74hc244八位总线缓冲器,用以驱动7段led数码显示管。一位led显示电路如图3-4所示。图3-4 led显示电路结构图3.1.5其他模块电子密码锁系统除了上述几大功能模块外,还有部分附加电路,用以完成系统的功能,如单片机复位电路、蜂鸣器报警电路、电子密码锁状态指示电路等。如图3-5所示。图3-5密码锁附加电路4系统软件流程图开始n报警已开锁?已开锁?已开锁上锁已开锁?已输入6位?开锁比较按键次数大于6?错误次

15、数加1错误次数到达定值锁死报警,按键次数清零按下enter键?按下lock键?进入设置程序按下set键?按下enter键?按下数字键有按键?按键次数为0?消除1位,按键数减1键盘扫描初始化,读取eeprom中密码4 电子密码锁源程序#include #include #include #include #include sbit speaker = p31; sbit locked = p30; sbit redled = p34; sbit yellowled = p32; sbit greenled = p33; unsigned char const led=0x3f,0x06,0x5b

16、,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/0f unsigned char const closed=0x39,0x38,0x3f,0x6d,0x79,0x5e;/closed led段码 unsigned char const succed=0x6d,0x3e,0x39,0x39,0x79,0x5e;/succed led段码 unsigned char const open=0x00,0x3f,0x73,0x79,0x37,0x00;/open led段码 unsigned char const n

17、succ=0x00,0x37,0x6d,0x3e,0x39,0x39;/nsucc led段码 unsigned char lednum=0,0,0,0,0,0;/led数据缓存 unsigned char ledbuffer=0x3f,0x3f,0x3f,0x3f,0x3f,0x3f;/led显示缓存 unsigned char mima=0,0,0,0,0,0;/密码暂存区。对应eeprom中的地址:0x100x15; unsigned char init=0,0,0,0,0; /初始化信息开机次数,系统状态,错误次数,已输入密码位数,设置密码时的输入次数 /开机次数对应eeprom中的地

18、址:0x00; /系统状态:0:待机状态;1:正在进行解密;2:已解密状态;3:密码设置状态; unsigned char address = 0; unsigned char num = 0; unsigned char timer = 0; bit flag=0;/合法标志位 bit wrongflag=0;/合法标志位 void systeminit(void);/系统初始化函数 bit setmima(void);/初始密码设置函数,成功返回1,失败返回0 void numkey(unsigned char numkey);/按下数字键处理函数 void clr(void);/按下cl

19、r键处理函数 void enter(void);/按下enter键处理函数 void set(void);/按下set键处理函数 void lock(void);/按下lock键处理函数 void desplay(unsigned char a);/显示处理函数 void init_timer0(void) tmod |= 0x01; /使用模式1,16位定时器,使用|符号可以在使用多个定时器时不受影响 th0=0xf8; /给定初值,这里使用定时器最大值从0开始计数一直到65535溢出 tl0=0x00; ea=1; /总中断打开 et0=1; /定时器中断打开 tr0=1; /定时器开关打

20、开 void main() unsigned char keys = 0;systeminit();init_timer0();desplay(closed);/*if(init0 = 0)/第一次开机flag=1;if(setmima()/进入设置密码部分,设置成功,则开机次数加1init0+;address = 0x10;ea = 0;wrtorom(init,address,1);ea = 1;*/flag = 1; while(flag)keys = keyscan();if(keys!=0xff)speaker=1;delay_nms(100);speaker=0;switch(ke

21、ys) case 0xee:numkey(0);break;/0 按下相应的键显调用相应的处理函数 case 0xde:numkey(1);break;/1 case 0xbe:numkey(2);break;/2 case 0x7e:numkey(3);break;/3 case 0xed:numkey(4);break;/4 case 0xdd:numkey(5);break;/5 case 0xbd:numkey(6);break;/6 case 0x7d:numkey(7);break;/7 case 0xeb:numkey(8);break;/8case 0xdb:numkey(9)

22、;break;/9 case 0xbb:clr();break;/acase 0x7b:enter();break;/bcase 0xe7:set();break;/ccase 0xd7:lock();break;/d/case 0xb7:p0=dofly14;break;/e/case 0x77:p0=dofly15;break;/fdefault:break; delay_nms(400);redled = 0;/输错3次,报警speaker = 1;while(1); void timer0_isr(void) interrupt 1 using 1 th0=0xf8; /重新赋值 tl

23、0=0x00; timer+; if(timer = 6) timer = 0; p0 = timer; p2 = ledbuffertimer; void systeminit(void)/系统初始化 ea = 0 ;address = 0x10;num = 6;rdfromrom(mima,address,num);/从eeprom中读取密码address = 0x00;num = 1; rdfromrom(init,address,num);/从eeprom中读取初始化信息locked = 1;redled = 1;yellowled = 1;greenled = 1;speaker =

24、 0; void numkey(unsigned char numkey)/按下数字键处理函数unsigned char i = 0;if(init3 = 0)for(i=0;i6;i+)lednumi =0;for(i=0;i6;i+)ledbufferi =ledlednumi;desplay(ledbuffer);if(init1 = 1)/解密状态if(init36)/输入密码不足6位,可以继续输入,若已经输入6位,则忽略此次按键init3+;for(i=0;i5;i+)lednumi=lednumi+1;lednum5 = numkey;for(i=0;i6;i+)ledbuffer

25、i =ledlednumi;desplay(ledbuffer);/显示输入的密码else if(init1 = 0)/待机状态init3=1;lednum5 = numkey;init1 = 1;/系统进入解密状态for(i=0;i6;i+)ledbufferi =ledlednumi;desplay(ledbuffer);/显示输入的密码else if(init1 = 3)/密码设置状态if(init3=0)init3=1;lednum5 = numkey;for(i=0;i6;i+)ledbufferi =ledlednumi;desplay(ledbuffer);/显示输入的密码els

26、e if(init36)/输入密码不足6位,可以继续输入,若已经输入6位,则忽略此次按键init3+;for(i=0;i5;i+)lednumi=lednumi+1;lednum5 = numkey;for(i=0;i0)for(i=0;i5;i+)lednum5-i=lednum4-i;lednum0 = 0;init3-;for(i=0;i6;i+)ledbufferi =ledlednumi;desplay(ledbuffer);/显示输入的密码 void enter(void)/按下enter键处理函数 unsigned char i = 0;bit setflag = 0;init3

27、 = 0;/按键次数清零 if(init1 = 1)/解密状态进行密码比对/rdfromrom(mima,0x10,6);/读出密码wrongflag = 0;for(i=0;i6;i+)if(lednumi != mimai) wrongflag = 1;else continue;if(wrongflag)yellowled = 0;greenled = 1;desplay(closed);/显示锁定init1 = 0;/系统进入待机状态init2+;/错误次数加1if(init2 = 3) flag = 0;/输入错误3次,报警else/验证通过开锁greenled = 0;yellowled = 1;locked = 0;init1 = 2;init2 = 0;desplay(open);/显示开锁else if(init1 = 3)/密码设置状态init4+;if(init4 = 1)for(i=0;i6;i+)mimai = lednumi;for(i=0;i6;i+)lednumi=0;/清零for(i=0;i6;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论