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

下载本文档

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

文档简介

基于单片机的电子密码锁设计摘要本设计是以STC89C51单片机为核心控制部件,结合按键扫描电路、LED数码管显示电路、单片机复位和时钟电路、报警电路和开锁指示电路,利用单片机灵活的编程设计和丰富的IO端口,以及控制的准确性通过软件程序来控制整个系统实现电子密码锁的基本功能。这个电子密码锁设计了密码输入、密码修改、删除、取消、系统的开启和关闭、密码显示H、密码与错误正确指示、开锁驱动指示、报警,密码三次输入错误键盘锁定等功能。与以往的硬件实现的密码相比较具有操作简单、功能实用、成本较低、功耗低、安全性能高等优点。可以作为产品推广,具有一定的实用价值。关键词:STC89C51单片机 电子密码锁 扫描1 总体设计方案1.1 系统方案论证选择现今常见的密码锁设计主要有两种方案,一种是中规模集成电路控制的方案,另一种是单片机控制的方案。方案一:采用数字电路控制。其原理方框图如图1.1所示:图1.1 数字电路控制原理图显然此种方案的物理实现结构较为复杂且重新设置密码、输入密码的操作过程也会给用户带来一定的不方便。方案二:采用一种是用以STC89C51为核心的单片机控制方案。其原理见图1.2所示STS89C51单片机输入输出图1.2 STC89C51单片机控制原理图通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。本方案采用一种是用以STC89C51单片机为核心的控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。1.2 设计要求在运用方案二的设计过程中要求电子密码锁的密码位数为六位,并且在显示屏上显示大写字母“H”和当前输入密码的位数;在键盘输入时要有按键音;密码错误时有提示音及配合不同颜色的发光二极管显示信息。主要实现的功能有密码正确开锁功能、密码错误报警、密码的重设、密码修改、密码删除、密码取消等功能。1.3设计任务本方案只要是以STC89C51单片机为控制元件,用单片机语言编程实现电子密码锁的基本功能,设计工程中主要实现主要实现的功能有密码正确开锁功能、密码错误报警、密码的重设、密码修改、密码删除、密码取消等功能。1.4总体设计总体设计过程中以STC89C51单片机为核心控制整个设备各项功能,用44的矩阵键盘作为整个系统的输入设备;另一方面,为了实现电子密码锁的功能,在单片机的输出端分别加载了数码管显示模块、报警模块、密码错误指示模块、密码正确指示模块等电路,从而整体实现了电子密码锁的各项功能。总体设计图(见图1.3)图1.3 单片机控制原理图2 硬件设计2.1单片机主控模块(含时钟电路和复位电路)如图2.1所示是电子密码锁的时钟电路和复位电路。在复位电路中应用了12MHZ的晶体振荡器作为时钟源,经过分频之后为单片机内部系统所用。图2.1 主控模块2.2键盘输入电路采用44的矩阵键盘,8根输出线分别连接在STC89C51单片机的P1口,通过键盘扫描来确认按键的有无及按键的位置。(见图2.2)图2.2 键盘输入电路2.3数码管显示电路(含74LS138译码器)应用74LS138译码器作为选择数码管的片选段输出信号,选择当前数码管现实的位置,其中,单片机的P1.0P1.2口作为74LS138译码器的地址信号输入端,而74LS138译码器的输出端分别与数码管的COM端连接。数码管的a,b,c,d,e,f,g,dp经过限流电阻接+5v电源(主要用于驱动数码管的显示)。(见图2.3所示)图2.3 数码管显示电路2.4电子密码锁指示电路用不同颜色的LED灯表示电子密码锁的不同状态,例如,用红色代表密码错显示,蜂鸣器用于报警。(见图2.4)图2.4 电子密码锁的指示电路3 软件设计3.1电子密码锁主程序流程图让状态灯、数码管全暗,并不停的扫描按键,如果按下的是开启键,则调用control函数。(如图3.1)图3.1 主函数流程图3.2 键盘扫描流程图按键扫描同时也可实现数码管的动态显示,返回值为按键代号。(如图3.2)图3.2 键盘扫描流程图3.3 键盘输入输入密码时用形参控制输入的为确认密码还是要修改的密码,该函数会根据输入按键得不同将i置成不同的值以方便系统操作。(如图3.3)图3.3 键盘输入流程图3.4 Control流程图按下开启键后,开启密码锁,之后根据用户的操作修改密码或锁定密码锁。(如图3.4)图3.4 Control流程图4 调试说明4.1 矩阵键盘各按键功能说明09数字键:代表从键盘上输入的数字*密码设置键:设置新的密码#确认键:确认输入密码A关闭键:锁定键盘B开启键:键盘解锁,开始输入密码C取消键:重新键入密码D删除键:删除一位已输入密码4.2电子密码锁的操作说明操作说明:1.按下开启键,打开系统,若系统打开,所有状态灯会同时亮,状态灯亮一段时间后熄灭,只剩下锁合等亮,此时用户可在键盘上进行相应操作。2.输入的为关闭键,转6,输入的为有效数字,开始验证密码,数码管显示已输入了几位有效密码,输入的为删除键,删除一位已输入的密码,输入的为取消键,重新输入密码,输入的为确认键,转3,其他键无效。3.密码错误(密码不足六位或多于六位认为密码错误),判断密码错误次数,超过三次则报警并锁定系统,否则转2。若密码正确则扫描按键。4.输入的为关闭键,关闭系统,输入的为密码设置键,转5,其他键无效。5.重复2、3过程,只是若3中密码正确,则键入2次修改的密码,若一致,转6,否则转2。6.所有状态灯全亮,一段时间后全部熄灭,退出系统。5仿真Proteus仿真图显示整个电子密码锁的全部电路,图示5.1是在锁未开的情况下输入六位密码。图5.1 Proteus仿真图6 实物图7设计体会经过几天的努力,我们组选的电子密码锁终于做成功了,虽然在做的过程中遇到了许多问题,但是我们通过向老师不断的请教,查阅大量的资料,队员之间相互讨论,解决了遇到的困难。确立了方案后我们进入了真正的设计制作过程,并结合每个人的特长和特点进行分工,在这个阶段我们认真的画图,论证,确定元件的类型和参数,软件编写,实物电路焊接,电路测试,软件调试,实物电路调试,方案也与此同时一遍遍的优化。我们经历了从失败到成功,再从失败到成功的一遍遍的洗礼,这期间最最重要的是不要被困难击倒,要团结,要坚持,谁也不能退缩不能放弃。就这样我们克服了重重困难,按时保质的完成了设计。锻炼了队员之间的心态和默契,同时也积累了很多书本上学不到的经验,扩充了知识结构体系,丰富了课外知识,开拓了创新思维。8 参考文献 1 韩军团.基于单片机的电子密码锁设计J.陕西理工学院.2010年7月第29卷第7期2 李积英.数字电子技术M.北京:中国电力出版社3 封志宏.模拟电子技术M.甘肃:兰州大学出版社4 王思明,张金敏,张鑫,苟军年,杨乔礼.单片机原理及应用系统设计M.北京:科学出版社5 周鑫,何建新,刘琥.基于单片机的电子密码锁控制电路设计J.成都信息工程学院学报,2009年8月第24卷第4期6 黄志伟. 全国大学生电子设计竞赛训练教程M.北京: 电子工业出版社,2006年7 谭浩强. C语言程序设计M. 北京:清华大学出版社,2009年8 郭天祥. 51单片机C语言教程M. 北京:电子工业出版社,2009年 9 李华. MCS-51系列单片机实用接口技术M. 北京:北京航空航天大学,1993年10 彭伟.单片机C语言程序设计实训100例基于8051+Proteus仿真M.北京:电子工业出版社9 附录附录1 电子密码锁的单片机语言 #include #include#define uchar unsigned char#define uint unsigned intuchar passward37=0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb,0xeb;/存放密码用,共三组,包括初始密码、确认密码及修改的密码uchar code figue=0x07,0x00,0x01,0x02,0x03,0x04,0x05;/控制哪个数码管显示,第一个为都不亮,之后的依次亮第1、2、3、4、5、6个数码管uint i,k=0;/定义全局变量,k存放输入密码错误次数,i用来判断按键,密码是否正确uchar key; /存放按键sbit led=P32;/密码错误灯sbit fmq=P33;/蜂鸣器void delay(uint x)/延时x毫秒uint j;while(x-)for(j=0;j120;j+);uchar keyscan()/键盘扫描,返回值为按键代号uint sp,lu;uchar scode,kcode,l,u;while(1)for(u=1;ui;u+)P2=figueu;P1=0xf0;if(P1&0xf0)!=0xf0)/判断是否有键输入delay(10);if(P1&0xf0)!=0xf0)/再次判断是否有键输入scode=0xfe;for(l=1;l5;l+)/判断输入键位置P1=scode;if(P1&0xf0)!=0xe0)kcode=P1;fmq=0;for(sp=0,lu=0;sp24200;sp+)for(u=1;u12100)break;if(sp2420|lu2420)fmq=1;if(lu12100)break;fmq=1;return(kcode); break;else P1=0x0e;scode=_crol_(scode,2);void input(uint x)/输入函数,用x控制输入量为新密码还是要验证的密码uchar t;i=0;P2=figuej; /第一个数码管亮i=1;while(1)/用i控制输入的为密码的第几位,最后用i区分输入的为密码还是功能键t=keyscan();if(t=0xee)/输入为delete键if(i1)i-;P2=figuei+1;else if(t=0xed)/输入为enter键P2=0x07;break;else if(t=0xde)/输入为取消键i=1;P2=figuei+1;else if(t=0x7e)/输入为lock键i=8;break;else if(t!=0xbe)/输入的为有效数字if(i7)/输入密码位数少于或等于六位passwardxi+=t;else/输入密码超过六位i=1;break;void judge(uint p,uint q)/密码判断函数,用于比较输入密码是否正确或前后两次是否一致,比较结果用i显示,若i为7则正确for(i=1;i=3)/错误次数超过三次则报警,报警时灯闪且蜂鸣器响十秒左右P3=0xf2;delay(500);P3=0xee; else/密码正确k=0;/初始化密码输错次数P3=0xed;/锁开显示灯亮,密码正确灯亮delay(500);P3=0xfd;i=0;key=keyscan(); /扫描按键delay(300);if(key=0xe7)/是否为修改密码input(1);/确认原始密码if(i=8)/输入的为lock键break;if(i=7)judge(0,1);if(i=7)/密码正确则修改密码,否则返回初始状态,重新键入密码P3=0xed;/锁开显示灯亮,密码正确灯亮1.5秒delay(500);P3=0xfd;input(1);/输入修改密码if(i=8)/输入的为lock键break;input(2);/第二次输入修改密码if(i=8)/输入的为lock键break;if(i=7)judge(1,2);/判断两次是否一致,一致则变更密码,否则回到程序最顶端重新键入密码if(i=7)P3=0xed;/锁开显示灯亮,密码正确灯亮for(i=1;i7;i+)passward0i=passward1i;/i自加1,i=8表示重设密码成功i=8;delay(1500);if(i!=7)/输入的密码不足六位或密码错误P3=0xfa;delay(1500);else if

温馨提示

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

评论

0/150

提交评论