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

下载本文档

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

文档简介

摘要:随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子密码锁由于其保密性高,灵活性好,安全系数高,受到了广大用户的亲呢。本设计拟由单片机51系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、修改用户密码基本的密码锁的功能。同时,也兼顾到产品的使用率,因而本系统成本低廉,功能实用。目 录一、设计要求.4二、方案论证与比较.41、整体方案论证42、模块论证与比较521显示模块522报警模块523键盘输入模块6三、设计思路.71、分模块设计思路711 主硬件电路712 显示电路713 键盘输入电路72、整体设计思路821 总体设计电路图822 电路元件82.3 芯片介绍9231 AT89S52芯片.9232 LM386芯片92321 LM386内部电路92322 LM386的引脚图10四、程序设计111、软件实现功能111.1 44 行列式键盘识别技术 111.2 8 位数码显示112、程序流程图1121、主程序流程图1122、中断子程序流程图123、程序12五、调试12六、总结13七、致谢13八、参考文献13一、设计要求1、具有密码输入功能,密码最多为位;2、设置退格键,以便删除输入错误的密码;3、在输入的密码时数码管上只显示P,并根据输入位数依次横移;4、设置确认键,当确认键按下后,判断输入密码是否正确;5、当输入密码正确时,点亮发光二极管;当输入密码不正确时,发光二极管不亮并且蜂鸣器报警,系统应锁定键盘3s二、方案论证与比较1、整体方案论证2方案一:采用以74LS112双JK触发器构成的数字逻辑电路控制。原理图如21所示:图21 数字密码锁电路方案采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的次数超过3次(一般情况下,用户不会超过3次,若用户觉得不便,还可以修改)电路将报警,若电路连续报警三次,电路将锁定键盘3秒,防止他人的非法操作。电路主要为密码锁电路,密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。方案二:采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图22所示。89S51单片机矩阵键盘控制输入错误锁定键盘延时报警控制电路开锁控制电路指示电路LED显示电路图22单片机控制方案通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。2、模块论证与比较21显示模块9方案一:显示模块由10个发光二极管组成。选择10个发光二极管分别代表0-9的数字,并按一定顺序排列,当程序运行时,键盘模块输入相应值时,对应的发光二极管接通,发光,即显示所代表的数字。具体电路图省略。方案二:显示模块由LED液晶显示屏及其驱动电路组成。选择1602液晶显示屏,其16个管脚对应89S51的管脚,连接方便,且只需程序控制液晶显示。方案三:显示模块由LED动态数码管及其驱动电路组成。选择2个四位数码管,2个四位数码管的片选端分别接89S51的8个端口,另外16个管脚统一接在89S51的8个端口,具体如图所示:图2-3 动态数码管显示通过比较以上三种方案,第一种方案相对比较简单,但显示效果不算最好,第二种方案显示简单明了,但成本较高,第三种方案显示相对简单,价格便宜,因而选择第三种显示方式,即由四位动态数码管组成显示模块。22报警模块方案一:报警模块由蜂鸣器驱动电路和8255组成。选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100mA驱动电流。蜂鸣器电路如图4所示。当8255的PB0口输出为高电平时,蜂鸣器产生蜂鸣音,8255输出为低电平时,蜂鸣器不发声。图2-4 蜂鸣器电路方案二:报警模块由LM386音频放大器及驱动电路组成。选择芯片LM386及其他电阻、电容器件组成LM386音频放大模块,具体电路如图所示。发生信号从3脚输入,5脚输出,当信号为高电平时,蜂鸣器发出声音,相反,则不发出声音。图2-5 音频放大电路通过比较以上两种方案,方案一虽然电路简单,操作方便,但稳定性不高,而方案二虽然电路元件偏多,但性能稳定,且电压输入没有限制,可电池输入也可电源输入。总体比较,选择方案二,即采用LM386音频放大器及驱动电路构成设计的报警模块。23键盘输入模块方案一:键盘输入模块由独立式按键输入构成。选择16个按键及89S51的2个输入端(共16位)构成输入模块,具体电路如图所示。16个按键分别对应89S51的2个输入端,按键按下,低电平触发。图2-6 独立式键盘输入方案二:键盘输入模块由行列式按键输入构成。选择16个按键及89S51的一个输入端(共8位)构成键盘输入模块,具体电路如图所示。由软件编程实现行列扫描,进而显示数字。图2-7 行列式键盘输入通过比较以上两种方案,方案一简单明了,容易控制,但所需端正口偏多,适用于少按键的电路,方案二所需端口不多,硬件上可以实现,但需要软件支持。总体比较,选择方案二,即使用行列式键盘输入来实现该设计的输入模块。三、设计思路1、分模块设计思路11 主硬件电路本系统采用AT89S52作为主控芯片, AT89S52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非 易失性存储器技术制造,与工业80C51 产品指令和引脚完 全兼容。片上Flash允许程序存储器在系统可编程,亦适于 常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统 可编程Flash,使得AT89S52为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。具体电路图如图3-1所示:图3-1 主硬件电路12 显示电路本密码锁控制系统采用2个四位的共阴数码管分别接入AT89S52的I/O端口,共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。具体电路图如图3-2所示:图3-2 显示电路13 键盘输入电路该系统采用行列式键盘输入方式,在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键),因此与系统实际情况相结合,我们选择最优方案。具体电路图如力3-3所示:图3-3 键盘电路14音频放大电路该系统采用以LM386为核心的音频放大电路,LM386是为低电压应用设计的音频功率放大器。增益在内部设定到20可使外部元件数少,在引脚 1 和 8 之间连接电阻和电容可使增益超过200 。该集成电路适用于 调幅 - 调频 无线电放大器、便携式磁带重放设备、内部通信电路、电视音频系统、线性驱动器、超声波驱动器和功率变换电路。具体电路图如图2-5所示:2、整体设计思路21 总体设计电路图图3-4 总体电路22 电路元件芯片:AT89S51(一片) LM386N1(一片)LED(四位显示)(二片) 晶振管电容(12MHz)电容: 30pF(二个) 0.1uF(一个) 0.047uF(一个)电解电容: 10uF(二个) 47uF(一个)电阻: 220(一个) 10K(3个) 470(一个) 10(一个)按键: 17个(二脚)喇叭:一个发光二极管:二个插糟: 40脚插糟(三个)8脚插线:4个 2脚插线:2个2.3 芯片介绍231 AT89S52芯片1(1)AT89S52芯片介绍AT89s512一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示: (2)AT89S52硬件资源分配 P0.0-0.7、P2.0-2.7连接数码管 P3.0-3.7 连接按键 P1.7连接音频放大电路的输入端 P1.0连接指示电路的输入端232 LM386芯片(1)LM386芯片介绍LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。LM386内部电路原理图如图所示。与通用型集成运放相类似,它是一个三级放大电路。第一级为差分放大电路,T1和T3、T2和T4分别构成复合管,作为差分放大电路的放大管;T5和T6组成镜像电流源作为T1和T2的有源负载;T3和T4信号从管的基极输入,从T2管的集电极输出,为双端输入单端输出差分电路。使用镜像电流源作为差分放大电路有源负载,可使单端输出电路的增益近似等于双端输出电容的增益。第二级为共射放大电路,T7为放大管,恒流源作有源负载,以增大放大倍数。第三级中的T8和T9管复合成PNP型管,与NPN型管T10构成准互补输出级。二极管D1和D2为输出级提供合适的偏置电压,可以消除交越失真。引脚2为反相输入端,引脚3为同相输入端。电路由单电源供电,故为OTL电路。输出端(引脚5)应外接输出电容后再接负载。电阻R7从输出端连接到T2的发射极,形成反馈通路,并与R5和R6构成反馈网络,从而引入了深度电压串联负反馈,使整个电路具有稳定的电压增益。LM386的外形和引脚的排列如图所示。引脚2为反相输入端,3为同相输入端;引脚5为输出端;引脚6和4分别为电源和地;引脚1和8为电压增益设定端;使用时在引脚7和地之间接旁路电容,通常取10F。 (2) LM386芯片I/O口资源分配:LM386的2、4端接地 LM386的1、7、8端悬空 LM386的5、6端接音频放大电路的输出电路LM386的3端音频放大电路输入端与AT89S52的P1.7端 四、程序设计1、软件实现功能1.1 44 行列式键盘识别技术 44 行列式键盘的按键功能分布图如图 4.1所示:41852963DELEN071.2 8 位数码显示初始化时,显示“P ”,接着输入最大 6位数的密码,当密码输入完后,按下确认键,进行密码比较,然后给出相应的信息。在输入密码过程中,显示器只显示“8.”。当数字输入超过 6 个时,给出报警信息。在密码输入过程中,若输入错误,可以利用“DEL”键删除刚才输入的错误的数字。2、程序流程图7该程序编程主要有几大块编程,一为主程序的编写,二为键盘扫描的程序编写,三为一中断子程序以实现所设计所要求的功能。具体流程图如下:21、键盘扫描程序流程图22、中断子程序流程图T0中断入口键盘扫描是否有键按下NY判断键盘输入值与设定密码是否相同YNFLAG取反数码管显示字母“P”LED亮P1.0取反中断返回FLAG=1记录并在数码管上显示字符“*”,并判断“确认”键是否按下FLAG=0I6,YNY23、主程序流程图开 始显示缓冲区初始化必要参数初始化T0初始化,TH0,TL0装入初值T0工作并开中断等待中断3、程序见附录五、调试1、 硬件调试11排除逻辑故障 这类故障往往由于设计和加工制板过程中工艺性错误所造成的。主要包括错线、开路、短路。排除的方法是首先将加工的印制板认真对照原理图,看两者是否一致。具体方法是利用数字万用表的短路测试功能,进行排错。12排除元器件失效 造成这类错误的原因有两个:一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏。因此我提前检查元器件与设计要求的型号、规格和安装是否一致。在保证安装无误后,用替换方法排除错误。13排除电源故障 在通电前,检查电源电压的幅值和极性,否则很容易造成集成块损坏。加电后检查各插件上引脚的电位,一般先检查VCC与GND之间电位,若在5V48V之间属正常。若有高压,联机仿真器调试时,将会损坏仿真器等,有时会使应用系统中的集成块发热损坏。综上,在进行一系列的硬件检查后,我改正了一些自己电路虚焊、电路焊错等错误,初步认定已没有其他错误。2、 软件仿真3利用PROTEUS软件对系统程序进行仿真调试,判别在硬件无错的情况下,软件的运行情况。在熟悉运用PROTEUS软件的前提下,我对本系统的程序进行了仿真,发现在硬件理想状况下,该系统是可以运行的。3、 整机调试功能第一次第二次第三次显示模块成功成功成功键盘功能失败失败成功音频模块失败失败失败总体功能六、结 论通过本次设计我对芯片更加加深了了解,知道原理后再了解芯片的引脚就很好使用,在制作电路的过程中,对原理图的设计、原理图常用功能、元件库的编辑等,进行了更加深入的认识。尤其对印制电路板(PCB板)的设计,单、双面板的制作认识更为深刻,能更好、更熟练的使用Protel99制作原理图和PCB板。通过焊接和调试,使我的动手能力也有很大的提高。本电子密码锁的原理是:以AT89S52芯片为核心,结合键盘电路、显示电路、音频放大电路构成了一个电子密码锁。其原理为以AT89S52控制各个模块的运行,把他们结合在一起。在本次设计中,通过对设计任务的分析理解、元器件的选用及其性能分析、电子密码锁的原理及设计图进行定稿、各单元电路的分析与测试。并在原理图的基础上用万能板生成整个成品,在电路板上安装元件并焊接元件,最后对所完成的电子密码锁的实物进行调试,直到达到预设的效果。对通过此次设计提高了我分析与解决问题的能力。 本次设计的电子密综合了所学知识的理论与基础,通过本次对电子密码锁的设计,将所学的知识运用到实际生活去了。从而知道自己对知识的掌握情况。经这次设计,让专业知识与实践结合,让专业知识得到了更好的消化和更牢固的掌握。在设计的过程中,遇到了很多的各种问题,这不失是一种好的现象,因为在设计时出现的问题越多,最后电子密码锁的成功率就越大。常说在问题中进步,在失败中成长,亦是如此。经过这次的毕业设计,让书本上的理论知识能够真正地融合到实践中去。实践的过程让我更好的理解了书本上的知识,也弥补了在书本上没有而存在的知识。对我以后的工作以及人生道路作了一个很好的铺垫。附录:#include unsigned char ps=1,2,3,4,5; unsigned char code dispbit=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71, 0x00,0x40,0x73,0xff; unsigned char dispbuf8=18,16,16,16,16,16,16,16; unsigned char dispcount; unsigned char flashcount; unsigned char temp; unsigned char key; unsigned char keycount; unsigned char pslen=5; unsigned char getps6; bit keyoverflag; bit errorflag; bit rightflag; unsigned int second3; unsigned int aa,bb;unsigned int cc; bit okflag; bit alarmflag; bit hibitflag;unsigned char oka,okb; void main(void) unsigned char i,j; TMOD=0x01; TH0=(65536-500)/256; TL0=(65536-500)%256; TR0=1; ET0=1; EA=1; while(1) P3=0xff; P3_4=0; temp=P3;temp=temp & 0x0f; if (temp!=0x0f) for(i=10;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: key=7; break; case 0x0d: key=8; break; case 0x0b: key=9; break; case 0x07: key=10; break; temp=P3; P1_1=P1_1; if(key=0) & (key10) if(keycount6) keycount=6; keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/enter key if(keycount!=pslen) errorflag=1; rightflag=0; second3=0; else for(i=0;i0;i-) for(j=248;j0;j-); temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: key=4; break; case 0x0d: key=5; break; case 0x0b: key=6; break; case 0x07: key=11; break; temp=P3; P1_1=P1_1; if(key=0) & (key10) if(keycount6) keycount=6; keyoverflag=1;/key overflow else if(key=12)/delete key if(keycount0) keycount-; getpskeycount=0; dispbufkeycount+2=16; else keyoverflag=1; else if(key=15)/e

温馨提示

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

最新文档

评论

0/150

提交评论