毕业设计(论文)-基于单片机的电子密码锁设计.doc_第1页
毕业设计(论文)-基于单片机的电子密码锁设计.doc_第2页
毕业设计(论文)-基于单片机的电子密码锁设计.doc_第3页
毕业设计(论文)-基于单片机的电子密码锁设计.doc_第4页
毕业设计(论文)-基于单片机的电子密码锁设计.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

课程设计说明书第I页基于单片机的电子密码锁设计摘要电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。本文以STC89C52单片机为核心器件,结合按键电路、LED数码管显示电路、报警指示电路和开锁机构,利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性通过软件程序来控制整个系统实现电子密码锁的基本功能。关键词:STC89C52电子密码锁LED数码管课程设计说明书第II页目录1绪论.12系统的总体设计和主要元器件介绍.12.1设计要求.12.2系统的总体思路设计.22.3主要元器件介绍.22.3.1STC89C52介绍.22.3.2继电器介绍.42.3.3LED数码管介绍.53、硬件设计.63.1单片机主控制模块.63.2键盘输入模块.63.3显示模块.73.4报警和开锁模块.84、软件设计.94.1系统框图.94.2系统程序设计.95、系统仿真设计.155.1PROTEUS软件介绍.155.2PROTEUS仿真图.16总结.17致谢.18参考文献.19附录.20课程设计说明书第1页1绪论随着人们生活水平的提高,日常生活和工作中的住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等一系列安全防盗问题变的尤其突出。传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,且人们常需携带多把钥匙使用极不方便一旦钥匙丢失安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁因具有安全性高、成本低、功耗低、易操作等优点,受到了广大用户的青睐。现今常见的密码锁设计主要有两种方案,一种是中规模集成电路控制的方案,另一种是单片机控制的方案。本文以STC89C52单片机为核心器件,结合按键电路、LED数码管显示电路、报警指示电路和开锁机构,利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性通过软件程序来控制整个系统实现电子密码锁的基本功能。系统能实现如下的功能。(1)密码通过键盘输入,若密码正确,则将锁打开(2)密码输入错误,蜂鸣器将报警提示(3)用户可以自由设定密码系统功能实用,成本低廉,具有一定的实用价值。2系统的总体设计和主要元器件介绍2.1设计要求以STC89C52单片机为核心器件,结合按键电路、LED数码管显示电路、报警指示电路和开锁机构,利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性通过软件程序来控制整个系统实现电子密码锁的以下基本功能:(1)输入密码时不显示所输入的数字,有一定的防偷窥特点(2)密码通过键盘输入,若密码正确,则显示灯发光,将锁打开(3)密码输入错误,蜂鸣器将报警提示(4)用户可以自由设定密码本密码锁具有设计方法合理,简单易行成本低,安全实用等特点,具有一定的推广价值。课程设计说明书第2页2.2系统的总体思路设计以STC89C52单片机为主控制单元,键盘为主要输入单元,结合开锁装置、报警器和显示器完成整个系统设计。系统的运行过程大致如下。假设初始状态为闭锁,此时整个系统只等待按键输入,数码管也不显示。每按下一个数据键(即每输入一个密码),数码管相应的显示一个“-”标志,当密码全部输入完成后,需按下确认键“#”,此时系统判断密码是否正确,正确则开锁(仿真中以继电器动作导致发光二级管点亮为标志),错误则报警,此后数码管熄灭继续等待按键;若按下密码重置键“”,则需先输入原密码,正确后请输入新密码,输入密码过程中,数码管显示如上“-”。2.3主要元器件介绍2.3.1STC89C52介绍本次毕业设计选用的是STC89C52,STC89C52是一种带4K字节FLASH存储器的低电压、高性能CMOS8位微处理器,俗称单片机,引脚图如图2.1所示。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的STC89C52是一种高效微控制器。STC89C52单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。课程设计说明书第3页图2.1STC89C52引脚图STC89C52单片机引脚。VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向IO口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据地址的低八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。P1口:P1口是一个内部提供上拉电阻的8位双向IO口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向IO口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。课程设计说明书第4页P3口:P3口管脚是8个带内部上拉电阻的双向IO口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为STC89C52的一些特殊功能口,如下所示。口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALEPROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的16。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。EAVPP:当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。课程设计说明书第5页XTAL2:来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2.3.2继电器介绍继电器是一种电控制器件,其电路图如图2.2所示。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。当输入量(如电压、电流、温度等)达到规定值时,继电器被所控制的输出电路导通或断开。输入量可分为电气量(如电流、电压、频率、功率等)及非电气量(如温度、压力、速度等)两大类。继电器具有动作快、工作稳定、使用寿命长、体积小等优点。广泛应用于电力保护、自动化、运动、遥控、测量和通信等装置中。电磁继电器工作原理和特性。图2.2继电器原理图电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器课程设计说明书第6页线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。继电器一般有两股电路,为低压控制电路和高压工作电路。2.3.3LED数码管介绍LED数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母abcdefgdp来表示。当数码管特定的段加上电压后,这些特定段就会发亮,以形成我们眼睛看到的样子。以“2”为例,应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。图2.3为LED数码管组成图。图2.3LED数码管在本次实验中我们用的是四位一体的数码管如下图2.4所示:图2.4数码管3、硬件设计3.1单片机主控制模块课程设计说明书第7页如图3.1是主控制模块的电路图,主要包括含晶振、复位基本工作电路。图3.1主控制模块3.2键盘输入模块在键盘中按键数量较多时,为了减少IO口的占用,通常将按键排列成矩阵形式,如图3.2所示,在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成34=12个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,上图中,列线通过电阻接正电源,并将行线所接的单片机的IO口作为输出端,而列线所接的IO口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。图3.2矩阵键盘按键功能如表3.3介绍。第一行自左至右依次是123键第二行自左至右依次是456键第三行自左至右依课程设计说明书第8页次是789键第四行自左至右依次是0#键。表3.3按键功能按键键名功能说明09键数字键输入密码键重设密码键设定新密码#键确认键确认密码输入完毕3.3显示模块此设计中,使用了四个共阴极数码管,使用动态显示技术控制数码管。电路图如图3.4所示,其4个位选信号与P2.0-P2.3相连,当其中某位为低电平时表示选中该位;8段段选信号与P0口相连,当其中某段为高电平时导通该段,特殊的,由于STC89C52的P0口的驱动能力较弱,不足以驱动数码管点亮,故在此又引入上拉电阻以驱动数码管。图3.4显示模块关于上拉电阻有如下介绍:1、当TTL电路驱动CMOS电路时,如果电路输出的高电平低于CMOS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。2、OC门电路必须加上拉电阻,以提高输出的高电平值。3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。4、在CMOS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。5、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。6、提高总线的抗电磁干扰能力。管脚悬空就比较容易接受外界的电磁干扰。7、长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的课程设计说明书第9页抑制反射波干扰。3.4报警和开锁模块报警模块由蜂鸣器、PNP三极管和单片机组成,电路图如图3.5所示。选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100mA驱动电流。特殊的,此处为加强驱动能力,选用三极管来放大电流驱动蜂鸣器。当STC89C52的P3.0口输出为低电平时,三极管导通,蜂鸣器产生蜂鸣音,STC89C52输出为高电平时,蜂鸣器不发声。此处以继电器的动作来模拟锁的开闭。同样,为了增强驱动能力添加了PNP三极管以放大电流,当P3.1口为低电平时,三极管导通,此时继电器动作(锁开),灯亮;二极管具有续流作用以保护器件安全。课程设计说明书第10页图3.5报警和开锁模块4、软件设计4.1系统框图单片机时钟电路复位电路矩阵键盘掉电存储开锁机构报警机构图4.1系统框图4.2系统程序设计重要端口定义说明:sbitbuzzer=P30sbitrelay=P31ucharcodetable2=0 x400 x00共阴极数码管编码显示-和熄灭ucharkeyword4=1111课程设计说明书第11页ucharkeycmp4ucharkey=0num=0flg=0报警子程序:(通过控制buzzer端口的高低电平来控制三极管的通断,从而控制蜂鸣器)voidalarm()num=0buzzer=0delay(100)buzzer=1数码管显示子程序:LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高;动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些。本设计使用动态显示方法。voiddisplay()ucharijcs=0 x7ffor(i=numi0i-)P0=table0cs=_crol_(cs1)P2=csdelay(10)课程设计说明书第12页for(j=4-numj0j-)P0=table1cs=_crol_(cs1)P2=csdelay(10)按下确认键后执行功能子程序:(使用标志变量flg,根据其值来选择执行相应的功能)。voidok()uchari=0display()P0=(flg+1)delay(1000)if(flg=0)for(i=0i0i-)for(j=110j0j-)=报警程序voidalarm()intinum=0for(i=0i0i-)P0=table0cs=_crol_(cs1)P2=csdelay(10)for(j=4-numj0j-)P0=table1cs=_crol_(cs1)P2=csdelay(10)=密码重置程序voidset()num=0display()flg=1=确认键程序voidok()uchari=0课程设计说明书第23页display()P0=(flg+1)delay(1000)if(flg=0)for(i=0i4i+)if(keywordi!=keycmpi)alarm()if(num=4)relay=0num=0if(flg=2)num=0for(i=0i4i+)keywordi=keycmpiflg=0if(flg=1)for(i=0i4i+)if(keywordi!=keycmpi)alarm()breakif(num=4)num=0display()P0=0 x07delay(1000)flg=2=键盘扫描程序voidkeyscan()课程设计说明书第24页uchartemp1temp2P1=0 xfe令第一列为低电平,检测第1列temp1=P1if(temp1!=0 xfe)delay(5)去抖temp2=P1if(temp1=temp2)switch(temp2)case0 xf6:if(num4)key=1keycmpnum=keynum+display()elsealarm()breakcase0 xee:if(num4)key=4keycmpnum=keynum+display()elsealarm()breakcase0 xde:if(num4)key=7keycmpnum=keynum+display()elsealarm()breakcase0 xbe:set()breakwhile(temp1!=0 xfe)temp1=P1等待按键释放课程设计说明书第25页P

温馨提示

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

评论

0/150

提交评论