版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机设计的数字密码锁设计摘要在现代社会,电子密码锁已不是一个陌生的名词。本文中将要介绍的电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子锁装置。电子密码由于其保密性高,使用灵活性好,平安系数高,受到了广阔用户的青睐。本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,它是一种通过密码输入来控制电路或是芯片工作,运用键盘输入、密码修改、密码检测、液晶显示电路、执行电路、报警电路来完成开锁、密码修改等任务。利用识别密码是否正确来开锁或报警。采用键盘输入的电子密码锁具有较高的优势。采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反响速度快、传输效率高、工作稳定可靠等。软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向开展,增强系统的可扩展性和运行的稳定性。本文设计的密码锁具有平安性高、本钱低、功耗低、易操作等优点,并且利用Keil编程工具进行编程,并在Proteus电路仿真软件中进行了设计仿真。关键词:AT89C51;单片机设计;密码锁;控制电路;ThedigitalcombinationlockdesignbasedonsinglechipmicrocomputerAbstractInthemodernsociety,theelectroniclockisnotastrangenoun.Thispaperwillintroduceanelectroniclock,whichisthroughthepasswordinputtocontrolcircuitorchipswork,soastocontroltheclosingoropenofthemechanicalswitch,completethelockthatthetaskofelectroniclocklockingdevice.Electroniclock,duetoitshighsecrecy,goodflexibilityofuse,highsafetycoefficient,islikedbythemajorityofcustomers.ThedesignonthesinglechipcomputerAT89C51asacombinationlockmonitoringdeviceofthedetectionandcontrolthecore,itisakindofthroughthepasswordinputtocontrolcircuitorchipswork,usingthekeyboard,andpasswordchanging,passworddetection,thelockcircuit,executivecircuit,alarmcircuit,keyboardinputfrequencycircuittocompletethelock,lockingclosuresuchtasks.Usingpasswordiscorrectrecognitiontoreplaceorcallthepolice.Throughthekeyboardinputnumbertorealizethekeyboardtolocktherecord.Thekeyboardinputelectroniclockhashigheradvantage.Adoptingdigitalsignalencodingandsecondarymodulationmode,notonlycanachievemoreroadinformationcontrolandimprovethesignaltransmissionofanti-jamming,reducethewrongaction,butalsopowerconsumptionislow;Reactionspeedishigh,;anditishightransmissionefficiency;itisstableonworking,andsoon.Thesoftwaredesignusestop-downideaofmodulardesign,whichisinordertomakethesystembedistributed,miniaturization,direction,andenhancethesystemconfigurationandthestabilityoftheoperation.Inthispaper,thedesignishighsecuritylocks,lowcost,lowpowerconsumption,easyoperation,etc.Keywords:AT89C51;TheSCMdesign;Combinationlock;Controlcircuit;第一章绪论1.1引言在日常的生活和工作中,住宅与部门的平安防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的方法来解决。假设使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丧失后平安性即大打折扣。随着科学技术的不断开展,人们对日常生活中的平安保险器件的要求越来越高。为满足人们对锁的使用要求,增加其平安性,用密码代替钥匙的密码锁应运而生。密码锁具有平安性高、本钱低、功耗低、易操作等优点。根据本设计要求,通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁等任务。它的种类很多,有简易的电路产品,也有基于芯片的性价比拟高的产品。现在应用较广的数字密码锁是以芯片为核心,通过编程来实现的。其性能和平安性已大大超过了机械锁。其主要优点有:(1)保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。(2)密码可变。用户可以经常更改密码,防止密码被盗,同时也可以防止因人员的更替而使锁的密级下降。(3)误码输入保护。当输入密码错误时,系统会报警。(4)操作简单易行,一学即会。1.2课题的背景及意义随着电子技术和计算机技术的飞速开展,单片机性能不断完善,性能价格比显著提高,技术日趋完善。由于单片机具有体积小、重量轻、价格廉价、功耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用电器等各个领域均得到了广泛的应用。本设计利用单片机及附加器件实现数据采集和控制算法,来完成某一实际功能,检验并提高同学对整体电路设计和把握能力,了解单片机系统设计流程,以及电路板的实际制作和调试能力。同时也加强对数字电路、单片机和微机原理等课程知识的实际应用能力,也为同类产品的进一步开展奠定理论和实践根底。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,本钱较高,是适合使用在平安性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。目前,在西方兴旺国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加平安,更加可靠的技术实现大门的管理。在我国电子锁整体水平尚处于国际上70年代左右,电子密码锁的本钱还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供给市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,开展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用1.3电子密码锁开展趋势电子密码锁应用于金融业,其根本的作用是“授权〞,即被“授权〞的人才可以存取钱、物。广义上讲,金融业的“授权〞主要包括以下三种层次的内容:1、授予保管权,如使用保管箱、保险箱和保险柜;2、授予出入权,如出入金库、运钞车和保管室;3、授予流通权,如自动存取款。目前,金融行业电子密码锁的应用主要集中在前两个层面上。下面将介绍几种在金融行业中使用较多的电子密码锁以及它们的技术开展方向。当然,以上所说的授权技术再高超,都必须由精良的“锁具〞担当承载结构部件,实现开启、闭锁的功能,而且承当实体防护作用,抵抗住或尽量延迟破坏行为,让电子密码锁“软、硬不吃〞。一般情况下,锁具防盗的关键是锁身外壳、闭锁的部件的强度、锁止型式、配合间隙和布局。提高电子密码锁之防护能力的必然途径是报警,在金融业的许多场所有人值守、有电视监控,具有报警功能,可以综合物理防范和人力防范两种作用。报警的前提是具备探测功能,根据电子密码锁的使用场所和防护要求,可选择多种多样的探测手段。在中国的城市金融业中,实现联网报警已经成为对各金融网点的根本要求。根据国内外的实践经验,金融业实行平安防范风险等级很有必要,即依据使用的防盗报警器材的性能、安装布局和人员值守状况等,可以评估被防护物或区域的防护能力,得出风险等级,其中,电子密码锁的性能至关重要。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子密码锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子密码锁,这样对盗贼而言是“道高一尺、魔高一丈〞。组合使用信息也能够使电子密码锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所〞。第二章总体设计方案2.1基于单片机的电子密码锁功能实现要求基于课题的任务要要求:1.具有密码输入功能;2.设置初始化按键,以便重新输入密码;3.在液晶显示屏上显示结果;4.拒绝接收超规定次数的密码输入信号,并发出声音报警。本文的设计方法功能要求如下:〔1〕当系统启动时,LCD屏幕上显示Password_LockD_Z_L,然后进入初始化界面,LCD上显示Intial.(2)当初始化按键INTIAL按下时,系统进入密码输入局部,LCD上显示Input_Password:〔3〕为了防止密码被窃取要求在输入密码时在LCD屏幕上显示*号,并在。〔4〕为了提高密码锁的平安性,设置密码位数为8位数字,并且当每个按键按下时LED黄灯会闪下并且伴随按键输入音。〔5〕当密码输入正确时,能够在LCD上显示:right!Select1:open2:modefy,且LED红灯和黄灯均亮;当密码输入错误时,液晶屏显示:Password_Error!Try_again!_;LED黄灯熄灭,红灯闪烁,并报警。〔6〕密码输入正确时,进入系统,有两个选择,选择1时,LCD显示Unlock,代表开锁,同时黄灯闪烁报警;选择2时,可以进行密码更改,LCD上显示Input_modify:代表输入新密码。〔7〕4×3的矩阵键盘其中包括0-9的数字键、Enter输入功能键、CLR数字去除功能键。〔8〕密码可以由用户自己修改设定〔只支持8位密码〕,在输入新密码时候需要二次确认,输入两次新密码,以防止误操作。2.2设计方案方案一:采用数字电路控制。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,假设按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过10秒〔一般情况下,用户不会超过10秒,假设用户觉得不便,还可以修改〕电路将报警20秒,假设电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作。采用数字电路设计的方案好处就是设计简单但控制的准确性和灵活性差。故不采用。方案二:采用一种是用以AT89C选用单片机AT89C51作为本设计的核心元件,利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,实现根本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LCD显示器用于显示作用。其原理如下列图2.1图2.1单片机控制密码锁原理图可以看出方案二控制灵活准确性好且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案第三章硬件设计单片机〔SCM〕是单片微型计算机〔SingleChipMicrocomputer〕的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。随着单片机在技术上、体系上不断扩展其控制功能,国际上已经采用MCU〔MicrocontrollerUnit〕代替单片机的名词。它的最大优点是体积小,可放在仪表内部。但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。近年来,51系列单片机在我国非常流行,它最大的特点是内部有可以屡次重复编程的闪烁ROM,并且闪烁ROM可以直接用编程器来擦写,指令系统可兼容,方便程序的移植及系统的升级,使用起来比拟方便。一个单片机应用系统的硬件电路设计包含有两局部内容:一是系统扩展,即单片机内部的功能单元,如ROM﹑RAM﹑I/O口﹑定时/记数器﹑中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既要按照系统功能要求配置外围设备,如键盘显示器﹑打印机﹑A/D和D/A转换器等,又要设计适宜的接口电路。3.1AT89C51单片机的简介AT89C51是一种低功耗/低电压、高性能的八位CMOS单片机,片内有一个4KB的FLASH可编程可擦除只读存储器〔FPEROM—FlashProgrammableandErasableReadOnlyMemory〕,它采用了CMOS工艺和ATMEL公司的高密度非易失性存储器技术,而且其输出引脚和指令系统都与MSC—51兼容。片内置通用8位中央处理器〔CPU〕和FLASH存储单元,片内的存储器允许在系统内改编程序或用常规的非易失性存储器编程。因此,AT89C51是一种功能强、灵活性高且价格合理的单片机,可方便的应用于各种控制领域。主要特性(1)与MCS-51产品指令系统兼容(2)4K字节可编程闪烁存储器(3)寿命:1000写/擦循环(4)数据保存时间:10年(5)全静态工作:0Hz-24Hz(6)三级程序存储器锁定(7)128*8位内部RAM(8)32可编程I/O线(9)两个16位定时器/计数器(10)6个中断源(11)可编程串行通道(12)低功耗的闲置和掉电模式(13)片内振荡器和时钟电路另外,AT89C51是用静态逻辑来设计的,其工作频率可下降到零并提供两种软件的省电方式-空闲方式和掉电方式。在空闲方式中,CPU停止工作。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结〞,使一切功能都暂停,只保存片内RAM中的内容,直到下次硬件复位为止。管脚说明VCC〔40〕:供电电压,其工作电压为5V。GND〔20〕:接地。P0端口〕:P0口为一个8位漏极开路双向I/O口,每个引脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1端口〕:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2端口〕:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口,用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能存放器的内容。P2口在P3端口〕:P3口管脚是一个带有内部上拉电阻的8位的双向I/O端口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入端时,由于外部下拉为低电平,P3口将输出电流〔ILLP3口也可作为AT89C51的一些特殊功能口,如表3.1所示。表3.1P3端口引脚兼用功能表P3口同时为闪烁编程和编程校验接收一些控制信号。复位RST(9):复位输入。在振荡器运行时,有两个机器周期〔24个振荡周期〕以上的高电平出现在此引脚时,将使单片机复位,只要这个引脚保持高电平,51芯片便循环复位。复位后口均置1,引脚表现为高电平,程序计数器和特殊功能存放器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位操作不会对内部RAM有所影响。ALE/(30):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如果想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,那么置位无效。(29):外部程序存储器的选通信号。在由外部程序存储器取指令期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。EA/VPP(31):当保持低电平时,那么在此期间外部程序存储器〔0000H-FFFFH〕,不管是否有内部程序存储器。注意加密方式1时,将内部锁定为RESET;当端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V的编程电源〔VPP〕。XTAL1(19):来自反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2(18):来自反向振荡器的输出。其引脚图如图3.1所示。图3.1AT89C51引脚图3.2振荡器和时钟电路振荡器和时钟电路用于产生单片机正常工作时所需要的时钟信号,AT89C51单片机采用CMOS工艺,内部包含一个振荡器,可以用于CPU的时钟源;也允许采用外部振荡器,由外部振荡器产生的时钟信号来供内部CPU运行使用。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的上下电平要求的宽度。图3.2振荡器电路3.3单片机复位电路单片机的复位是一个很重要的局部,复位是使单片机的CPU以及系统的各个部件处于特定的初始状态,并使系统从初始状态开始工作。一般在系统上电,或者程序死机的时候需要进行单片机的复位。单片机复位原理是,在时钟电路开始工作后,在单片机的RST引脚施加24个时钟振荡脉冲〔即两个机器周期〕以上的高电平,单片机便可以实现复位。在复位期间,单片机的ALE引脚和引脚均输出高电平。当RST引脚从高电平跳变为低电平后,单片机便从0000H单元开始执行程序。本系统采用手动上电复位电路,这样可以人工复位单片机系统,如图3.4所示,当按下按键开关的时候,VCC通过一个电阻连接到RST引脚,给RST一个高电平;按键松开的时候,RST引脚恢复为低电平,复位完成。图3.3手动上电复位电路3.4电源电路设计为了使系统能够持续供电,特使用市用220V电进行降压转换,转换成系统能够运用的5V直流电源。电源电路如图3.8所示:图3.4电源电路原理图3.5键盘电路设计在单片机应用系统中,一般都会设置键盘,主要为了控制运行状态,输入一些命令或数据,以完成特定的人机交互。键盘是与单片机进行人机交互的最根本的途径,其以按键的形式来设置控制功能或输入数据,按键的输入状态本质上是一个开关量。对于简单的开关量的输入可以采用独立式按键,这种方法接口简单,但占用单片机I/O端口资源较多。对于输入参数较多、功能复杂的系统,需要采用矩阵式键盘进行输入控制。本系统采用4*3矩阵式键盘,键盘连接方式如图3.5所示:图3.5键盘电路图3.6液晶显示电路设计液晶显示器〔LCD〕是一种功耗很低的显示器,它的使用非常广泛,比方电子表、计算器、数码相机、计算机的显示器和液晶电视等。电子密码锁中需要显示的信息比拟多,为了能直观的看到结果,并且为了设计显的美观,使用总线和排阻进行简化连接方式,本设计采用液晶显示屏LCD进行显示,具体连接方式如图3.6所示。图3.6液晶显示器电路3.7存储芯片电路设计总线〔InterIntergrateCircuitBUS〕全称为芯片间总线,它在芯片间以两根连线实现全双工同步数据传送,一条数据线〔SDA〕和一条串行时钟线〔SDL〕,可以很方便地构成外围器件扩展系统。总线采用两线制,由数据线SDA和时钟线SCL构成,为了对数据进行存储,本系统使用串行EEPROM芯片,AT24C01系列是典型的串行总线的EEPROM,本系统采用此芯片进行数据存储,存储系统连接如图3.7所示:图3.7总线和存储芯片连接电路图3.8系统总体电路图图3.8系统总体电路图4系统软件设计程序设计(Programming)是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件也占有重要的地位。为了完成上述任务,在进行软件设计时,通常把整个过程分成假设干个局部,每一局部叫做一个模块。把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。所谓“模块〞,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。模块程序设计法的主要优点是:(1)单个模块比起一个完整的程序易编写、调试及修改。(2)程序的易读性好。(3)程序的修改可局部化。(4)模块可以共存,一个模块可以被多个任务在不同条件下调用。(5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。本系统软件采用模块化结构,由键盘扫描子程序,存储效劳子程序,显示子程序。4.1键盘扫描程序设计本系统的程序功能采用线反转法来扫描查询4*3矩阵式键盘,如果有按键按下,那么点亮发光二极管黄灯,其程序流程如图4.1所示。图4.1键盘扫描子程序流程图键盘输入子程序如下:ucharkey_scan(){uchartemp,com;P3=0xf0;if(P3!=0xf0) { Delay(4960); if(P3!=0xf0) {com1=P3;P3=0x0f; Delay(2000); if(P3!=0x0f)com2=P3; }} P3=0xf0;while(P3!=0xf0); //等待放手 temp=com1|com2; switch(temp) { case0xee:com=1;Sound_QQ(220,40);break; case0xed:com=2;Sound_QQ(240,60); break; case0xeb:com=3;Sound_QQ(260,70); break; case0xde:com=4;Sound_QQ(280,90); break; case0xdd:com=5;Sound_QQ(300,100); break; case0xdb:com=6;Sound_QQ(320,80); break; case0xbe:com=7;Sound_QQ(340,140); break; case0xbd:com=8;Sound_QQ(270,110); break; case0xbb:com=9;Sound_QQ(200,55); break; case0x7e:com=0x0a;Sound_QQ(500,75); break; case0x7d:com=0x00;Sound_QQ(200,50); break; case0x7b:com=0x0b;Sound_QQ(1000,45); break; default:break; } return(com);}4.2总线和存储芯片程序设计主要进行数据的读写操作,程序如下:bitSendB(uchar*s,ucharAddress,ucharNumber) //向IIC器件发送N个字节,发送成功,返回1{ uchari; Start(); Send(AddWr); if(ack==0)return(0); Send(Address); if(ack==0)return(0); for(i=0;i<Number;i++) {Send(*s); if(ack==0)return(0); s++;} Stop(); return(1);}bitReadB(uchar*s,ucharAddress,ucharNumber) //从IIC器件读出N个字节,并将所读的数据存入数组{ uchari; Start();Send(AddWr); if(ack==0)return(0); Send(Address); if(ack==0)return(0); Start(); Send(AddRd); if(ack==0)return(0); for(i=0;i<Number;i++) { *s=Read(); Cack(0); s++; } *s=Read(); Cack(1); Stop(); return(1);}LCD液晶显示子程序设计对液晶显示器进行程序设计,在LCD上显示的内容均编程,程序如下:voidLCD_initial();voidLCD_check_busy(void)//检测LCD状态,看它是不是还在忙呢{while(1){LCD_EN=0;LCD_RS=0;LCD_RW=1;LCD_DATA=0xff;LCD_EN=1;if(!LCD_BUSY)break;}LCD_EN=0;}voidLCD_clear(void)//LCD清屏{LCD_check_busy();LCD_RS=0;LCD_RW=0;LCD_DATA=1;LCD_EN=1;LCD_EN=0;}voidLCD_write_instruction(unsignedcharLCD_instruction)//写指令到LCD{LCD_check_busy();LCD_RS=0;LCD_RW=0;LCD_DATA=LCD_instruction;LCD_EN=1;LCD_EN=0;}voidLCD_write_data(unsignedcharLCD_data)//输出一个字节数据到LCD{LCD_check_busy();LCD_RS=1;LCD_RW=0;LCD_DATA=LCD_data;LCD_EN=1;LCD_EN=0;}voidLCD_set_position(unsignedcharx)//LCD光标定位到x处{LCD_write_instruction(0x80+x);}voidLCD_printc(unsignedcharlcd_data)//输出一个字符到LCD{LCD_write_data(lcd_data);}voidLCD_prints(unsignedchar*lcd_string)//输出一个字符串到LCD{unsignedchari=0;while(lcd_string[i]!=0x00){LCD_write_data(lcd_string[i]);i++;}}voidDesigner(void){ucharnumb;LCD_initial();LCD_set_position(0x10);LCD_prints("Password_Lock");LCD_set_position(0x53);LCD_prints("D_Z_L");for(numb=0;numb<26;numb++){LCD_write_instruction(LCD_LEFT_MOVE);Delayms(220);} }voidPass_init(){LCD_initial();LCD_set_position(0x05);LCD_prints("Initial!");LCD_set_position(0x40);}voidUnlock(void){LCD_initial();LCD_set_position(0x05);LCD_prints("Unlock!"); }voidAgain(void){LCD_initial();LCD_prints("Re_Enter!");LCD_set_position(0x40);}voidSucceed(void){ucharnumb1;LCD_initial();LCD_set_position(0x10);LCD_prints("Successmodified");for(numb1=0;numb1<16;numb1++){ LCD_write_instruction(LCD_RIGHT_MOVE); Delayms(180);} }voidRepeat(void){LCD_initial();LCD_set_position(0x02);LCD_prints("Wrong!");LCD_set_position(0x44);LCD_prints("Repeat"); }voidTrue(){LCD_initial();LCD_prints("right!Select:");LCD_set_position(0x40);LCD_prints("1:open_2:modify"); }voidSystem(){LCD_initial();LCD_prints("Input_Password:");LCD_set_position(0x40);}voidModify(){LCD_initial();LCD_prints("Input_Modify:");LCD_set_position(0x40);}voidError(){LCD_initial();LCD_prints("Password_Error!");LCD_set_position(0x42);LCD_prints("Try_again!");}voidLCD_initial(void)//初始化LCD{LCD_write_instruction(AD_INCREMENT|LCD_MOVE);LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_ON);//光标显示LCD_write_instruction(LCD_DISPLAY_DOUBLE);//双行显示LCD_clear();}4.4延时子程序设计程序设计中都要用到时间函数,用来定时或者时间延时,程序如下:voidDelayms(uchara){ucharb,c;for(b=0;b<100;b++)for(c=0;c<a;c++);}4.5系统主程序设计主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。当初始化就会自动等待输入密码,假设操作有误便会报警提示并进行清零,等待密码的重新输入;密码输完之后等待你按下Enter键,再判断密码是否正确,假设错误便报警并再次将各位密码清零;假设输入密码正确就会进入系统,可以开锁或者进行密码修改。主程序的流程图如图4.1所示。图4.2系统主程序流程图电子密码锁主程序如下:voidmain(){uchardat;uchari=0,j=0,k; ucharx=0; LED1=1; LED2=1; SOUND=0; INIT=1; Designer();//显示标题for(i=0;i<200;i++){Delay5ms(25);} Pass_init(); for(i=0;i<250;i++) { if(INIT==0) Delay5ms(25); if(INIT==0) { do{ x=SendB(iic,0x50,8); }while(x!=1); x=0; break; } Delay5ms(25); } do{ x=ReadB(iic,0x50,8);//首先从IIC器件中读出密码以供下面输入密码 }while(x!=1); x=0;//**********************************假设密码不正确,循环执行do{}while〔〕********************************************do{ LED1=1; System(); //显示:"请输入密码"字幕 press(key) if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5])&&(key[6]==iic[6])&&(key[7]==iic[7]))//密码比拟,假设密码正确责进入系统,假设密码不正确那么显示密码错误,重新输入密码{ True(); LED1=0; LED2=0; for(i=0;i<30;i++) { Sound_QQ(200,60); Delay5ms(100); } LED1=1;LED2=1; do { P3=0xf0; //键入1或2继续执行下面语句,否那么等待 while(P3==0xf0); dat=key_scan(); }while(dat!=1&&dat!=2); if(dat==1) //开锁 { LED1=0; Unlock();for(i=0;i<200;i++){Delay5ms(25);} }if(dat==2) //修改密码 { do{ Modify(); press(key); Again(); press(iic); if((key[0]==iic[0])&&(key[1]==iic[1])&&(key[2]==iic[2])&&(key[3]==iic[3])&&(key[4]==iic[4])&&(key[5]==iic[5])&&(key[6]==iic[6])&&(key[7]==iic[7])) { Succeed(); //修改密码成功 for(i=0;i<100;i++){Delay5ms(25);} Delay5ms(25); x=SendB(iic,0x50,8); Delay5ms(25); x=ReadB(iic,0x50,8);break; } else //修改密码不成功,重新修改 { Repeat(); for(i=0;i<100;i++){Delay5ms(25);} } }while(1); } } else //密码不正确,重新输入密码{ j++; if(j==3) { for(i=0;i<60;i++) { Sound_QQ(250,40); for(k=0;k<3;k++) {LED1=~LED1; LED2=~LED2; Delay5ms(25) } } j=0; } Error(); for(i=0;i<50;i++){ Sound_QQ(250,40); LED2=~LED2; Delay5ms(25);} for(i=0;i<100;i++){Delay5ms(35);} } }while(1); } 5系统测试及仿真分析5.1Proteus仿真软件ProteusISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、存放器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如KeilC51uVision3等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。一、进入ProteusISIS双击桌面上的ISIS6Professional图标或者单击屏幕左下方的“开始〞→“程序〞→“Proteus6Professional〞→“ISIS6Professional〞,出现如图5.1所示屏幕,说明进入ProteusISIS集成环境。图5.1启动时的屏幕二、工作界面ProteusISIS的工作界面是一种标准的Windows界面,如图5.2所示,包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。图5.2Proteus工作界面图5.2仿真结果分析当系统初始化之后进入密码输入提示阶段,液晶显示器显示:Input_Password!_,I2C对密码进行提示,8位密码是01234567,。效果图如图5.3所示:图5.3系统初始化后仿真图当密码输入错误时,液晶显示器LCD显示Password_Error!Try_again!,红灯闪烁,并报警。效果如图5.4所示:图5.4密码输入错误时仿真图当密码输入正确时,液晶显示器LCD显示right!Select:1:open_2:modify_,同时红灯和黄灯均亮,并有密码正确的提示报警音,效果如图5.5所示:图5.5密码输入正确时仿真图当密码输入正确后选择1时,输入按键1,进入如图5.6所示开锁界面;液晶显示器显示Unlock!_,同时黄灯亮。图5.6开锁显示仿真图密码输入正确后选择2,输入按键2,进入如图5.7所示密码修改界面,液晶显示器显示Input_Modfy:可以进行密码修改,输入两次新密码密码修改完成。图5.7密码修改仿真图结语:为了能够更好地完成这次的毕业设计的任务,我通过不同的渠道学习了本课题相关的一些知识,这些是我在课堂上无法学到的。三个月的时间里不仅让我对学过的单片机知识有了很多的稳固,同时也对单片机这一门课程产生了更大的兴趣并让我对专业知识有了更深的理解。在搞毕业设计的这段时间里,我学会了在网络上查找有关本设计的各硬件的资源,其中包括:电子密码锁国内外开展现状、AT89C51单片机及其引脚说
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 变压器安装调试技术要点
- 施工机械考试题及答案
- 实验五升六考试题及答案
- 森林公安执法试题及答案
- 北京市通州区2024-2025学年八年级上学期期末地理试卷(含答案)
- 辅警安全防护培训课件
- 小儿肺炎的护理跨文化研究与护理实践
- 2026年大学大二(康复治疗技术)康复评定综合阶段测试试题及答案
- 2026年深圳中考物理答题规范特训试卷(附答案可下载)
- 2026年深圳中考数学函数专项提分试卷(附答案可下载)
- 华东理工大学2026年管理与其他专业技术岗位统一招聘备考题库含答案详解
- 2026上海碧海金沙投资发展有限公司社会招聘参考题库含答案
- 2026四川成都市金牛区城市管理局招聘编外聘用工作人员2人参考题库必考题
- 输血科质控 年度总结汇报
- 2026年浙江高考语文考试真题
- 2025年贵州省公务员录用考试《公安专业科目》真题
- 高压注浆加固施工方案
- 无人驾驶(从想象到现实)
- 三片罐行业分析
- 道德经和道家智慧课件
- 中国家庭金融调查报告
评论
0/150
提交评论