毕业:基于单片机的电子密码锁毕业设计(完整版)资料_第1页
毕业:基于单片机的电子密码锁毕业设计(完整版)资料_第2页
毕业:基于单片机的电子密码锁毕业设计(完整版)资料_第3页
毕业:基于单片机的电子密码锁毕业设计(完整版)资料_第4页
毕业:基于单片机的电子密码锁毕业设计(完整版)资料_第5页
已阅读5页,还剩172页未读 继续免费阅读

下载本文档

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

文档简介

毕业:基于单片机的电子密码锁毕业设计(完整版)资料(可以直接使用,可编辑优秀版资料,欢迎下载)

毕业:基于单片机的电子密码锁毕业设计(完整版)资料(可以直接使用,可编辑优秀版资料,欢迎下载)本科毕业设计(论文)题目基于单片机的电子密码锁设计院(系部)河北大学专业名称电子信息工程年级班级学生姓名指导教师2021年月日摘要本课题设计了一种基于单片机的数字电子密码锁,这种数字电子密码锁以单片机作为数据处理主控芯片。电子密码锁的设计主要由四部分组成:4×4矩阵键盘接口电路、以AT89S52芯片为核心的密码锁的数据处理及控制电路、掉电情况下依然能保存密码的EEPROM存储器芯片,输出七段显示电路。另外系统还有LED提示灯,报警蜂鸣器,单片机复位电路等。电子密码锁设计的关键问题是实现密码的输入、清除、开锁、更改等功能。同时该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅,办公室等场所的用锁要求,具有推广价值。关键词单片机密码锁4*4矩阵键盘EEPROM存储芯片实用经济AbstractThisprojectdesignedadigitalelectroniclockwhichusedaMCUasdataprocessandcontrolchip.Themainfunctionsdigitalelectroniclockareasfollows:Thedesignoftheelectronicpasswordlockismainlymadeupoffourparts:4×4matrixkeyboardinterfacecircuit,dataprocessingandcontrolcircuit,eeprommemorychipthatisusedtokeeppasswordwhenthelocklosespoweranddisplaycircuit.InadditionthesystemalsoconsistsofLEDlights,alarmbuzzers,single-chipresetcircuitandsoon..Thekeyquestionoftheelectroniclockdesigningistherealizationoffunctions,suchastheinputpassword,clearpassword,unlock,changepasswordandotherfunctions.Andthedesignedcipherlockischaracterizedbyitsreasonabledesigningmethods,simpleoperation,lowcostandpropertyofsafetyandpracticality.Besides,itworkswellasaresidencelockandhasgreatpotentialforcommercialdevelopment.Keywords:SCMCipherlock4*4matrixkeyboardEEPROMPracticaleconomy目录1绪论 11.1国内外研究综述 11.2选题的目的和意义 21.3本论文的任务 32电子密码锁总体设计 42.1系统总体设计 42.2单片机 52.3密码存储芯片选择 62.4键盘输入方案比较 82.5显示方案比较 103电子密码锁的硬件设计 123.1系统结构框图 123.2主控部分 133.3显示部分 133.4键盘输入部分 143.5密码存储部分 153.6电源部分 163.7其它功能部分 183.8电子密码锁的电路原理图 214电子密码锁的软件组成 224.1系统软件设计流程 224.2KeiluVision2软件介绍 234.3各主要部分的功能实现程序设计 24初始化程序设计 24按键处理程序设计 27密码更改程序设计 315系统仿真 345.1系统仿真过程 345.2仿真调试中遇到的问题及解决办法 35总结 36致谢 37参考文献 38附录 391绪论1.1国内外研究综述在电子锁出现以前人们广泛的使用机械锁,但是随着时间的推移机械锁已不能满足人们的要求,于是电子锁应用而生。以前由于电子器件所限,开发的电子密码锁种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作虽简单但很不安全。现在电子锁的技术可以说是时时的在进步,出现了很多性能强,安全可靠的新型电子锁。如:遥控式电子密码锁,卡式电子锁,生物特征电子锁等。但是应用广泛的还是键盘式电子密码锁。遥控式电子密码锁:优点是传输信息量可以很大、速度极快、人眼识别不出来,又无法在光路径上用仪器捕获信号进行复制,因此保密性极高。缺点是需要随身保管遥控器即钥匙,对于某些方面来说不是很实用。卡式密码锁:能够在卡中存储大量的个人信息,即容量非常的大,并且可以实现一卡多用。但是卡式密码锁也有很大的缺陷,开锁用的卡很可能受到一些电子产品的磁干扰,出现“失效”;同时卡也很容易被丢失,丢失了卡就需要尽快的取消卡的授权,一面个人的重要信息丢失,这个过程也是相当麻烦的。生物特征电子锁:人的某些与生俱来的个性特征(如手、眼睛、声音的特征)几乎不可重复,作为“钥匙”就是唯一的。但是生物特征电子锁需要大量的个人身体上的信息,这就使其处理上会变得复杂,这也确定了生物特征电子锁目前仅适用于极个别的行业。键盘式电子锁:主要依靠的是键盘输入密码验证,不需要携带专一的“钥匙”,只需要记住密码即可。键盘式电子锁有采用数字电路控制的,但控制的准确性和灵活性比较的差;有以单片机为核心的键盘式电子锁,它的性能比较的稳定,而且性价比也比较的高,受到了广泛的关注。尽管新式电子防盗锁层出不穷,但键盘式电子密码锁仍然“老树发新芽”,在市场上居于主流地位。伴随着科学技术的发展,电子的应用技术的提高,又出现了一些带有微型处理器的智能电子锁,它除了具有电子密码锁的功能外,还引入了智能化管理的功能,从而使电子密码锁具有更高的安全性和可靠性。目前发达国家大规模使用的智能门禁系统,就是一种使用多种更加安全,可靠方法来实现大门管理的新型电子密码锁。发达国家的电子密码锁技术已经相当的成熟,智能化、集成化程度很高。而我国的应用还不是很广泛,一般应用在一些高级的场所之中,例如银行的保险柜、保险箱、高级酒店等,家居应用很少。我国的电子密码锁的技术也是比较落后的,不是很成熟。开发的密码锁大多采用的是普通的数字电路设计生产的,与机械锁相比较的确存在着很多的优点,但智能化的程度不高,编码的组合很少。1.2选题的目的和意义在我们的日常生活中,经常会遇到一些地方需要进行防护,而这些地方的防护多是以使用各种各样的锁来进行的。常见的大致有两个大的方面,一种是机械锁,一种是电子密码锁锁。传统简单的机械锁一般是结构比较的简单,很容易遭到外部的破坏,而机密复杂的大型机械锁又比较的笨重,不适合大众的需要。在科学技术不断发展的今天,电子密码锁已经受到了越来越多的关注。电子密码锁具有保密性高,无灵活零件,不会磨损,寿命长,灵活性好等特点。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。但是电子密码锁也存在着缺陷1.价格比较的昂贵;2推广性不强。现在采用单片机制作的电子锁就克服了这些缺陷。单片机具有体积小、功能强,性价比高等特点,广泛应用于电子产品。基于单片机的电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。本次选题的就是设计一种基于单片机控制的具有本机开锁和报警功能的电子密码锁,在电子密码锁的显示和键盘输入有方案的比较,使电子密码锁更加的实用经济,能够实际生活中得到广泛的应用。用单片机制作的电子锁有以下的特点:1.保密性好,采用的是多位密码输入。2.破解保护,能够及时的锁定键盘报警。3.界面简洁,密码操作也非常简单。1.3本论文的任务本设计的电子密码锁的实现是基于单片机的,任务及工作如下:1、在Proteus软件环境中进行硬件电路图的设计。2、在Keil软件环境中进行系统的软件编程,并进行程序源文件的编译和调试,最后生成.hex文件。此.hex文件是硬件电路运行实现的源代码来源。3、把.hex文件加载到单片机芯片,然后在Proteus软件环境中运行硬件电路。2电子密码锁总体设计2.1系统总体设计本设计主要由单片机、矩阵键盘、LED数码管显示和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可,当然也可以用继电器的常开触点去控制电磁铁吸合线圈。其设计原理框图如图2.1所示:单片机单片机显示部分其它部分键盘输入部分密码存储部分图2.1原理框图单片机:本部分的功能包括写入和读取各种控制命令及数据处理,同时还要对各执行单元进行控制。单片机是整个系统的控制核心及数据处理核心。键盘部分:本部分由用户通过键盘输入各种信息送入到单片机进行处理。显示部分:本部分完成的是单片机处理后的数据和信息的显示以及系统提示信息的显示。密码存储部分:本部分完成存储原始密码和用户更改密码数据的功能。其它部分:本部分的目的是为了提高系统的可用性和实用性。主要包括电源部分、复位部分、晶振部分、开锁部分和报警部分。电源部分主要的功能是为单片机提供适当的工作电源,同时也为其它的部分提供电源。复位部分功能是使单片机在出现故障时进行成功的复位。晶振部分功能是给单片机提供时钟。开锁部分主要是根据单片机数据处理的结果驱动继电器控制开锁的操作。报警部分主要的功能就是在错误操作下实现报警提示。2.2单片机选择单片机的种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。在多数的电子设计中,基于性价比的考虑,8位单片机为首选。8位单片机中以MCS-51系列单片机及其兼容机所占的份额最大。MCS-51的硬件结构决定了其指令系统不会发生变化。因此在对不同公司的单片机进行选型时,只需要比较芯片内部资源即可。在以前的电子设计中,应用比较广泛的是AT89C51单片机,但是该单片机存在着致命的缺陷不支持ISP功能。Atmel公司现在已停止了AT89C51的生产,而加上了ISP功能的AT89S51、AT89S52诞生了。AT89S系列单片机在工艺上进行了改进,采用了0.35mm的新工艺,不但降低了成本,而且增加了功能,提升了单片机的性能,提高了市场竞争力。AT89S系列单片机新增了许多功能,性能也有了较大的提升,但是价格仍旧与AT89C系列的价格相差不大。新增的功能之中最具影响力的就是ISP在线编程功能,这个功能的优势在于,改写单片机Flash存储器内的程序时不需要把芯片从工作环境中剥离,是一个强大易用的功能。显然,AT89S系列单片机在性能上要比AT89C系列的单片机优良的多,而且价格也没有什么提高。所以选择AT89S系列作为本系统的的主控部分。而AT89S系列中的89S51和89S52在实际应用中最多,本设计中软件部分需要大量的程序编程,89S51内的程序存储器太小,不能满足要求,因此选择AT89S系列的AT89S52作为本设计的主控部分。AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。AT89S52引脚图如图2.2所示:图2.2AT89S52引脚图AT89S52引脚功能说明如下:VCC:电源电压GND:地P0口:P0口是一个8位漏极开路的双向I/O口,也即地址/数据总线复用口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0内部上拉电阻被激活。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动(吸收或输出电流)4个TTL逻辑门电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(TTL)。P1端口引脚的第二功能如表1所示表1P1端口引脚的第二功能端口引脚第二功能P1.0T2(定时器/计数器T2的外部计数输入),时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(TTL)。P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能。如表2所示:表2端口引脚第二功能端口引脚第二功能P3.0RXD(串行输入口)P3.4TO(定时/计数器0)P3.1TXD(串行输出口)P3.5T1(定时/计数器1)P3.2INTO(外中断0)P3.6WR(外部数据存储器写选通)P3.3INT1(外中断1)P3.7RD(外部数据存储器读选通)此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISRTO位缺省为RESET输出高电平打开状态。ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将有两次有效的PSEN信号。EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.3密码存储芯片选择本部分主要是论证密码存储芯片的选型。存储器的类型按功能分只读存储器(Read-OnlyMemory,简称ROM)和随机存取存储器(RandomAccessMemory,简称RAM)。随机存取存储器与只读存储器的根本区别在于:随机存储器在正常工作状态时可随时向存储器里写入数据或从中读出数据,在存储器断电后信息全部丢失。只读存储器又分为固定掩膜存储器和可编程存储器。固定掩膜存储器在生产时就根据用户的要求把数据和程序固化其中,其中的内容用户不可以再修改,只能读出。而可编程存储器便于用户根据自己的需要来写入特定的信息,根据存储矩阵中存储单元电路的结构不同,可编程的ROM有PROM、EPROM和EEPROM等三种。PROM的编程是由用户而不是生产厂家完成,增加了灵活性,但编程是一次性的,且可靠性较差,目前已很少使用。EPROM作为一种可以多次擦除和重写的ROM,克服了掩膜式ROM和PROM只能一次性写入的缺点,满足了实际工作中需要多次修改程序或数据的可能,前提条件是存储矩阵中现有的程序或数据必须首先擦除。EPROM的擦除和编程写入是采用专门的编程器设备完成的,并且擦除的周期比较的长。电可擦除可编程只读存储器EEPROM也称E2PROM。与EPROM擦除时把整个芯片的内容全变成“1”不同,EEPROM的擦除可以按字节分别进行,且字节的编程和擦除都只需10ms,并且不需要将芯片从机器上拔下以及诸如用紫外线光源照射等特殊操作,可以在线进行擦除和编程写入。因此根据设计的要求,采用的是EEPROM。常见的EEPROM芯片有28256、AT24C系列,28256的EEPROM引脚比较多,功能比较的多,且容量太大,而本设计的存储器只是存储密码数据,不需要很多的功能和很大的容量,因而选用的是AT24C系列的EEPROM。常用的AT24C系列如下表3所示:表3AT24C系列EEPROM对比表EEPROM型号AT24C02AT24C08AT24C16容量(bytes)2K8K16K页大小(bytes)81616总页面数3264128地址位(bits)888本设计中存储的数据不多,因此选用AT24C02即可满足要求。AT24C02是美国Atmel公司的低功耗CMOS型EEPROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、体积小、掉电情况下可以继续保存数据等特点。AT24C02芯片作为系统的从器件,它与主器件之间的通信遵循I²C总线协议,I²C总线协议规定,任何将数据传送到总线的器件作为发送器。任何从总线接受数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或者是接收器。AT24C02的引脚如图2.3所示:图2.3AT24C02的引脚引脚的功能:串行时钟(SCL):用于产生器件所有数据发送或接收的时钟。串行数据/地址(SDA):用于器件所有数据的发送或接收,SDA是一个开漏输出管脚,可与其它开漏输出或集电极开路输出进行线。器件地址输入端(A0、A1和A2):用于多个器件级联时设置器件地址,当有多个从器件连接在I²C总线上时,此端口用于选择不同的从器件。本次设计中三个引脚全部接地。写保护(WP):如果WP管脚连接到VCC,所有的内容都被写保护(只能读)。当WP管脚连接地线或悬空,允许器件进行正常的读/写操作。2.4键盘输入方案比较键盘输入是现阶段电子设计中最常用、最实用的输入设备。设计中常用的键盘输入方案有两种:独立式键盘、矩阵式键盘。独立式键盘独立式按键是指直接用I/O口线构成的单个按键的电路。每个独立式按键单独占有一根I/O口线,每个按键的工作状态都是独立的不会影响到其他的按键的工作状态。独立式按键的电路如图2.4所示:图2.4独立式按键电路原理图通常独立式键盘的按键输入都采用低电平有效,上拉电阻保证了按键的断开,I/O口线有确定的高电平。独立式按键电路配置灵活,软件结构简单,但是每个按键都需要独立的I/O口,如果按键的数量较多的时候,I/O就会造成极大的浪费。矩阵式键盘行列式键盘又叫矩阵式键盘。用I/O口线组成行列结构,按键位于行列的交点位置上。矩阵式键盘电路原理如图2.5所示:图2.5矩阵式键盘电路原理图本次设计中电子密码锁的键盘中,出去0-9的数字键外,还需要一些辅助的功能键,总体上来说按键的数量是相当的多的。采用独立式按键的方案,会对单片机的I/O口造成很大的浪费;采用矩阵式的按键方案就比较的适用于本次设计。2.5显示方案比较设计中常用的输出显示设备有两种:数码管和LCDLCD显示方案LCD是一种被动式的显示器,利用液晶能改变光线通过方向的特性,来达到显示的目的。LCD显示清晰美观,具有功能低、抗干扰能力强的优点,广泛应用于仪器仪表、控制系统等。液晶显示器的驱动方式由电极引线的选择方式确定,选择了液晶显示器之后便无法改变驱动的方式。当LCD显示笔端上两个电极电压相位相同时,两电极之间的电位差为0,该字段就不显示;当两个电极电压的相位相反时,两电极之间的电位差为两倍的方波电压,该字段显示。其原理电路如图2.6所示:图2.6原理电路数码管显示方案七段数码管显示器是有8个发光二极管组成的(a,b,c,d,e,f,g),LED七段数码管的显示即相应的发光二极管导通或者是截断,不同的组合等到的字符显示不一样的。数码管显示的数据内容比较的直观,一个数码管可以显示一位,多个数码管就可以显示多位,且程序设计和外围电路设计都十分的简单。数码管显示的每一位都需要有一个8位输出口控制,当需要较多的数码管显示的时候,单片机如果要直接控制各个数码管的显示是不可能的,因为没有足够的I/O口线进行控制。通常采用串口发送数据,然后用串行输入并行输出的移位寄存器来驱动数码显示器。实际应用中,简单的可以使用三极管来驱动,但是本设计为了使显示更加的稳定,采用的是74HC164串行移位寄存器来驱动。本次设计,显示的东西不需要很复杂,信息也较少,用数码管显示完全可以满足要求,而使用LCD显示成本可能会比较的高,所以采用数码管显示。3电子密码锁的硬件设计本部分主要介绍基于AT89S52单片机的电子密码锁的硬件设计。系统的硬件部分由键盘输入部分、密码存储部分、显示部分、电源输入部分、复位部分、晶振部分、报警部分、开锁部分组成。3.1系统结构框图系统以AT89S52单片机作为数据和控制部分;以矩阵键盘输入作为键盘输入部分的方式;数码管显示作为数据输出显示部分;由继电器控制电磁阀动作的开锁电路作为开锁部分;蜂鸣器作为报警部分,系统的硬件结构框图如图3.1所示:AT89S52键盘输入复位电路密码存储电路晶振电路AT89S52键盘输入复位电路密码存储电路晶振电路电源输入显示电路报警电路开锁电路图3.1系统的硬件结构图3.2主控部分本次设计中,选用Ateml公司的51系列单片机AT89S52芯片作为电子密码锁的数据处理及操作控制芯片。只有单片机芯片是无法完成数据处理及控制功能的,必须有附加的电路,使单片机芯片组成一个可运行的系统才能实现其功能。本次设计,由AT89S52单片机连同附加电路构成的单片机最小系统作为主控。电路图如图3.2所示:图3.2最小系统3.3显示部分电子密码锁采用数码管进行显示,经过单片机处理过的数据信息都由数码管进行显示。单片机数据传输采用串行方式,数据通过单片机的串行数据口P3.0(RXD)进行发送,接着应用74HC164串行移位寄存器把串行的数据转换成8位的并行数据,驱动LED数码管。74HC164芯片中,没有数据锁存器,使串行数据每到达一位,直接就被送到数码管中,造成数据显示不稳定。为了使数据显示稳定,在移位寄存器和数码管之间加入数据锁存器,来稳定数码管的数据显示。显示部分如图3.3所示:图3.3显示部分电路图3.4键盘输入部分在电子密码锁中各种信息的输入都是通过键盘输入部分完成的。把单个按键按照4*4组成键盘,四条行线连接到单片机的P1.0-P1.3四条I/O口线上,四条列线连接到单片机的P1.4-P1.7四条I/O口线上,运行的时候,单片机通过控制P1口得高低电平,然后根据变化进行判断。单片机向行线输入高电平,向列线输入低电平,按键未被按下之前保持电平给定不变,按键按下,行线的高电平变成低电平。同样对列线进行判定,即可判断所输入的信息。键盘部分的电路连接如图3.4所示:图3.4键盘部分电路图3.5密码存储部分在电子密码锁中,存入的密码是需要永久的保存的。在设计中采用了在掉电的情况下依然能够保存数据的EEPROM存储芯片24C02存储密码。设计的密码锁因为只需要存储6位密码,数据量很小,所以24C02的地址选择端口直接接地,时钟输入端口(SCK)和数据输入端口(SDA)和单片机的相连即可。电路连接如图3.5所示:图3.5密码存储部分电路图3.6电源部分密码锁主控制部分电源需要用5V直流电源供电,把频率为50Hz、有效值为220V的单相交流电压转换为幅值稳定的5V直流电压。其主要原理是把交流电经过电源变压器、整流电路、滤波电路、稳压电路转换成稳定的直流电压。由于输入电压为电网电压,一般情况下所需直流电压的数值和电网电压的有效值相差较大,因而电源变压器的作用显现出来起到降压作用。降压后还是交流电压,所以需要整流电路把交流电压转换成直流电压。由于经整流电路整流后的电压含有较大的交流分量,会影响到负载电路的正常工作。需通过低通滤波电路滤波,使输出电压平滑。稳压电路的功能是使输出直流电压基本不受电网电压波动和负载电阻变化的影响,从而获得稳定性足够高的直流电压。为了防止停电情况的发生,本电路后备了UPS电源,它包括市电供电电路,停电检测电路,电子开关切换电路,蓄电池充电电路和蓄电池组成。主电源如图3.6所示:图3.6主电路图220V市电通过变压器降压成12V的交流电,再经过整流桥整流,7805稳压到5V送往电子切换电路,由于本电路功耗较少,所以选用10W的小型变压器。由R2,R3,R4,R5及J1构成电压比较器,正常情况下,V+<V-J1输出高电平,继电器的常闭触点和市电相连;当市电断开,V+>V-J6时,由Q1,Q2构成的达林顿管使继电器K1开启,将其常开触电将蓄电池和电路相连,实现市电和蓄电池供电的切换,保证电子密码锁的正常工作(视电池容量而定持续时间)。Q3,Q4构成的蓄电池自动充电电路,它在电池充满后自动停止充电,其中D5亮为正在充电,D7为工作指示。由R8,R11,Q4构成电压检测电路,蓄电池电压低,则Q3,Q4导通,实现对其充电;充满后,Q3,Q4截止,停止充电,同时D5熄灭,电路中C6的作用是滤除干扰信号。如图3.7、3.8所示:图3.7停电检测及电子开关切换电路图3.8蓄电池自动充放电电路3.7其它功能部分密码锁系统中主要的为以上的几个部分,但是为了使系统更加的完善,还需要一些附加的部分。复位部分单片机复位是使CPU和系统中的其它功能部件都处在一个确定的初始状态,并从这个状态开始工作,单片机刚开始接上电源,断电或者是发生故障时都需要复位。单片机的复位输入RST脚持续两个机器周期高电平将使单片机复位。复位部分如图3.9所示:图3.9复位部分电路报警部分报警部分是由陶瓷压电发声装置及外围电路组成。当密码输入不正确是会发出警报。报警电路如图3.10所示:图3.10报警电路晶振部分本部分是为单片机提供时钟控制信号,采用的电路是外接晶振和电容组成的并联谐振回路。AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C2、C1按图4-7所示方式连接。晶振、电容C1、C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C1、C2取值范围在5~30pF之间。根据实际情况,本设计中采用12MHZ做为系统的外部晶振。电容取值为20pF。如图3.11所示:图3.11晶振部分电路开锁部分当输入正确的密码的时候,单片机的其中一个引脚线发出信号,经过三极管放大后,由继电器驱动电磁阀动作将锁打开。同时绿色的指示灯将会点亮。开锁电路如图3.12所示:图3.12开锁电路3.8电子密码锁的电路原理图根据系统所需要实现的功能,进行的原理图设计如图3.13所示:图3.13电子密码锁的电路原理图4电子密码锁的软件组成4.1系统软件设计流程本设计的软件程序设计主要有(1)初始化程序(2)按键功能实现程序(3)密码修改程序(4)报警程序等组成。系统的总体流程图如图4.1所示:开始开始初始化,设置密码等待输入计算键值是CLR?是否是确认键?否存键值首次按键?已输6位?是否否密码右移是计数值减1报警是是否比较密码正确?开锁密码左移计数值加1图4.1系统的总体流程图4.2KeiluVision2软件介绍单片机开发中除必要的硬件外,同样离不开软件,本系统的软件编程设计是在Keil软件环境中完成的。我们写的C语言、汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果使用C语言编程,那么Keil几乎就是不二之选。即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令人事半功倍。KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。4.3各主要部分的功能实现程序设计初始化程序设计电子密码锁系统在接通电源后,首先要对系统进行初始化。初始化过程包括密码锁上锁,密码的读入,LED数码管的显示内容初始化,设定系统状态指示等。流程图如图4.2所示:初始化开始初始化开始载入预设密码至系统内存系统上锁并设定状态指示灯设定显示器为等待输入状态用户输入密码区清零初始化定时器0图4.2初始化程序设计流程图初始化程序如下:ORG 0000HLJMP FIRSTORG 000BHLJMP INT_T0ORG 0100HFIRST: MOV SET_TIMES,#0 ;新密码输入次数清零从24C01C中读数据,数据送AT89CMOV SLA,#0A0H ;写入控制字MOV SUBA,#00H ;目标地址MOV NUMBYTE,#6 ;写入的字节数LCALL IRDNBYTE ;开始写数据BEGIN:MOV CNT_ERROR,#00H ;密码错误次数清零START:CLR LED_YELLOW ;上锁指示灯SETB LED_GREEN ;开锁指示灯灭SETB LED_RED ;密码错误指示灯灭MOV KEY_CNT_SET,#00HMOV CNT_A,#00H MOV CNT_B,#00HMOV KEY_CNT,#00HMOV LINE,#00HMOV ROW,#00HMOV VAL,#00HMOV WORD_ADRESS,#4CHMOV LED_BIT_1,#0AH ;数码管全"-"MOV LED_BIT_2,#0AHMOV LED_BIT_3,#0AHMOV LED_BIT_4,#0AHMOV LED_BIT_5,#0AHMOV LED_BIT_6,#0AHMOV KEY_1,#00H ;输入密码存储区清0MOV KEY_2,#00HMOV KEY_3,#00HMOV KEY_4,#00HMOV KEY_5,#00HMOV KEY_6,#00HMOV TMOD,#01H ;初始化定时器T0MOV TH0,#(65536-700)/256MOV TL0,#(65536-700)MOD 256 MOV IE,#82H 按键处理程序设计(介绍)键功能程序键功能程序键值=‘0-9’?键值=‘开锁’?键值=‘清除’?键值=‘设置’?键值=‘确认’?密码输入程序设置程序清除程序开锁程序确认程序是是是是是否否否否返回否图4.3按键处理程序流程图按键处理程序如下:A0: NOPLSCAN: MOV P1,#0F0H;扫描行码,把四条“行”线置成低电平 L1: JNB P1.0,L2;检测第一行是否有键按下 LCALL DLY_S;消除键盘抖动 JNB P1.0,L2;确认第一行有键按下 MOV LINE,#00H;把值送到指定内存,等待计算 LJMP RSCAN;跳转到键值计算部分 L2: JNB P1.1,L3 LCALL DLY_S JNB P1.1,L3 MOV LINE,#01H LJMP RSCAN L3: JNB P1.2,L4 LCALL DLY_SJNB P1.2,L4 MOV LINE,#02H LJMP RSCAN L4: JNB P1.3,a0 LCALL DLY_S JNB P1.3,a0 MOV LINE,#03HRSCAN: MOV P1,#0FH ;扫描列码 C1: JNB P1.4,C2 MOV ROW,#00H LJMP CALCU C2: JNB P1.5,C3 MOV ROW,#01H LJMP CALCU C3: JNB P1.6,C4 MOV ROW,#02H LJMP CALCU C4: JNB P1.7,C1 MOV ROW,#03H LJMP CALCUCALCU: MOV A,LINE ;计算键值 MOV B,#04H MUL AB ADD A,ROW MOV VAL,A;把键值存入VAL单元CJNE A,#0AH,J1 ;是否为"CLR"键 JNB LED_GREEN,CLR_KEY;检测是否已开锁MOV R1,KEY_CNT CJNE R1,#00H,J2;判断已按键次数为零? LCALL ALARM_1;调用报警子程序LCALLFALSE;数码管显示“FALSE”LJMP STARTCLR_KEY:LCALL ALARM_1;锁开状态下,按CLR的处理方法,调用报警子程序 LCALL FALSE;显示“FALSE”LJMP A1 J2:LCALL SHIFTR;显示内容右移一位 DEC KEY_CNTLCALL BCD LCALL DISP ;等待按键抬起 W00:LCALL DLY_1S MOV A,P1 CJNE A,#0FH,W01 LJMP A0 W01:MOV A,P1 CJNE A,#0F0H,W02 LJMP A0 W02:SJMP W00 J1:MOV A,VAL CJNE A,#0CH,J11 ;是否为SET键 LCALL DLY_SJB LED_GREEN,SET_ERROR……J11:MOV A,VALCJNE A,#0DH,J22 ;是否为LOCK键LCALL DLY_SJNB LED_GREEN,LOCK……J22:MOV A,VAL CJNE A,#0BH,J3_TEMP;是否为"ENTER"键 LJMP TTTTTTJ3_TEMP:LJMP J3……密码更改程序设计密码锁的密码就相当于我们日常生活中用到的钥匙,而电子密码锁可以根据用户的需要,随时更改原有的密码,来提高密码锁的安全性,密码修改功能是保证密码锁有效的重要保障。在密码修改子程序中,用户只有在开锁状态下才能进行修改,即要求用户知道原有的密码,否则无法打开密码锁,更无法修改其密码。框图如图4.4所示:有按键按下?有按键按下?操作错误,报警否是否是否计算键值,存储新密码输入完?两次输入并一致?是存储密码图4.4密码更改程序设计流程图密码更改程序如下:SET_P:CLR LED_GREEN ;更改系统状态及屏幕显示内容 SETB LED_YELLOW SETB LED_REDMOV LED_BIT_1,#0CH ;关闭全部数码管 MOV LED_BIT_2,#0CH MOV LED_BIT_3,#0CH MOV LED_BIT_4,#0CH MOV LED_BIT_5,#0CH MOV LED_BIT_6,#0CH LCALL BCD LCALL DISPA0_SET: NOP ;按键检测并计算键值存放在VAL单元……. ;按键处理部分CJNE A,#02H,TIMES1 ;判断是否已输入两次新密码LCALL DLY_1S MOV A,WORD_6 ;逐位比较密码,不一致则重新设置 CJNE A,KEY_1,J_RSET MOV R0,#59H MOV @R0,#33H MOV A,WORD_5 CJNE A,KEY_2,J_RSET MOV A,WORD_4 CJNE A,KEY_3,J_RSET MOV A,WORD_3 CJNE A,KEY_4,J_RSET MOV A,WORD_2 CJNE A,KEY_5,J_RSET MOV A,WORD_1 CJNE A,KEY_6,J_RSET向24C01C中写数据,数据存放在24C ……TIMES1:MOV R0,#WORD_1SET ;第一次新密码暂存内存中 MOV WORD_1,@R0 MOV R0,#WORD_2SET MOV WORD_2,@R0 MOV R0,#WORD_3SET MOV WORD_3,@R0 MOV R0,#WORD_4SET MOV WORD_4,@R0 MOV R0,#WORD_5SET MOV WORD_5,@R0 MOV R0,#WORD_6SET MOV WORD_6,@R0 LCALLDLY_1S ;加延时程序 ……5系统仿真5.1系统仿真过程开始时的数码管显示“”,等待输入密码。如图5.1所示:图5.1数码管显示密码输入时显示F并依次左移,如密码输入错误可以使用“clr”键进行清除,然后可以从新输入。如图5.2所示:图5.2数码管显示F密码输入正确时,数码管显示简单的便是“pass”,同时绿色指示灯亮起,开锁电路运行,锁被打开。如图5.3所示:图5.3数码管显pass本次设计的密码锁的密码为数6位,当密码的位数少于或者多于6位的时候,数码管上将提示“false”。如图5.4所示:图5.4密码是输入错误时,数码管提示“error1”,如果继续输入第二次、第三次错误的时,数码管将提示“error2”和“error3”,同时报警器报警提示,红色指示灯闪烁,键盘锁死,防止继续操作。如图5.5所示:图5.5当需要关闭密码锁的时候,直接按下键盘上的“lock”键即可锁定。数码管恢复初始“”,黄色指示灯亮起。如图5.6所示:图5.65.2仿真调试中遇到的问题及解决办法1问题描述:密码在未输入6位的情况下,摁下“enter”键,数码管显示“false”,无法返回初始输入界面“”。解决办法:“enter”键跳转时,跳转到开始即可。2问题描述:密码正确输入,“enter”键确认后,数码管显示“pass”,这时直接按“clr”键,屏幕上显示“error1”原因及解决办法:“clr”的后面跳转不对,需要加一个标志位使数码管的显示恢复“pass”。3问题描述:在系统正常运行后,如果密码锁被用户打开,此时用户可以按下“lock”键对其重新上锁,但在运行过程中,虽然系统可以重新上锁,但会在重新上锁前,出现报警,并且数码管显示“error1”原因及解决办法:因为系统运行的速度较快,按键还没有复原,键盘的检测便又一次检测到了该按键,重复的操作了“lock”键,系统提示错误。所以应在检测按键时,等待按键的复原,再进行跳转执行该按键的程序指令。总结本次设计经过一个月的时间终于完成,在这期间使我对大学的知识又进行了一次学习、了解,特别是对一些以前学习过或者说是接触过的应用软件加深了了解,并且通过网上和书本上的学习很成功的运用这些软件对设计的硬件电路和软件程序测试成功实现。虽然运用的还不是很熟练,一些功能还不是很了解,但是通过同学和老师的帮助,还是得到了很好的解决。本次设计的目标均得到了实现,具体如下:(1)产品性能稳定,可靠。(2)加电后,数码显示管显示;(3)输入密码时,只逐位显示F,以防止密码泄漏;(4)在任何掉电情况下,原设定密码保持不变。(5)输入密码的过程中,如果不小心出现输入的密码错误,可以清除,然后继续的进行密码的输入。可以在开锁后进行密码的修改,但需要两次输入确认。(6)当密码输入完毕按下确认键时,单片机将输入的密码与设定的密码比较,若密码正确,则密码锁打开;若密码不正确,则密码锁无法打开,在密码输入错误次数到达预设值时,启动报警程序报警。但是由于水平和时间的关系,有些地方的设计还不进人意。而这些地方还有待今后一一的去解决。致谢本文从开题到定稿,历时一个多月。在本论文完成之际,首先要向我的指导老师石军亮老师致以诚挚的谢意。在论文的写作过程中,她给了我许许多多的帮助和关怀。同时她对工作的积极热情、认真负责、有条不紊、实事求是的态度,给我留下了深刻的印象,使我受益非浅。在此我向石老师致以真诚的谢意。同时还要感谢各科的老师,你们的辛勤栽培使我获得了今天的成绩,谢谢老师们。当然,我还要感谢我周围的同学,他们在这次设计中给予了我很多的帮助,没有他们的帮助,在这短短的一个多月时间内,我是不可能这么好的完成我的设计的。尤其是对一些应用软件的运用,开始基本上是不会用,但是经过了大家的帮助,我学会了基本的操作。同时感谢寝室的兄弟给予我的鼓励和支持,感谢他们的陪伴。现在即将离开学校、老师、同学,还有我四年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。最后,感谢在大学期间认识我和我认识的所有人,有你们伴随,才有了我丰富多彩的大学生活。参考文献[1]余发山,王福忠.单片机原理及应用技术[M].徐州:中国矿业大学出版社,2021[2]康华光.电子技术基础(模拟部分)[M].北京:高等教育出版社,2006[3]康华光.电子技术基础(数字部分)[M].北京:高等教育出版社,2006[4]潘永雄.新编单片机原理及应用[M].西安:西安电子科技大学出版社,2003[5]张毅刚.MCS51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,2004[6]周润景,张丽娜,丁莉.基于Proteus的电路及单片机设计与仿真(第2版)[M].北京:北京航空航天大学出版社[7]李广第等.单片机基础[M].北京:北京航空航天大学出版社,2001.[8]彭为.单片机典型系统设计实例精讲[M].北京:电子工业出版社,2006.附录电子密码锁PCB图源程序(部分):*******************************************************;以下6个字节存放6位需要数码管显示的数据LED_BIT_1 EQU 30H LED_BIT_2 EQU 31HLED_BIT_3 EQU 32HLED_BIT_4 EQU 33HLED_BIT_5 EQU 34HLED_BIT_6 EQU 35H;以下6个字节存放初始密码WORD_1EQU 38HWORD_2 EQU 39HWORD_3 EQU 3AHWORD_4 EQU 3BHWORD_5 EQU 3CHWORD_6 EQU 3DH;以下6个字节存放用户输入的6位密码KEY_1 EQU 3EHKEY_2 EQU 3FHKEY_3 EQU 40HKEY_4 EQU 41HKEY_5 EQU 42HKEY_6 EQU 43H;************************************CNT_A EQU 44HCNT_B EQU 45HKEY_CNT EQU 46H ;已输出的密码位数LINE EQU 47H ;按键行号ROW EQU 48H ;按键列号VAL EQU 49H ;键值CNT_ERROR EQU 4AHWORD_ADRESS EQU 4BH;以下6个字节存放用户新设的密码WORD_1SET EQU 4CHWORD_2SET EQU 4DHWORD_3SET EQU 4EHWORD_4SET EQU 4FHWORD_5SET EQU 50HWORD_6SET EQU 51HKEY_CNT_SET EQU 36H ;存放用户设置密码时输入的位数;以下为读写I2C芯片时用到的暂存单元ACK BIT 00H ;应答标志位SLA DATA 54H ;器件地址字SUBA DATA 55H ;器件子地址NUMBYTE DATA56H ;读/写字节数SDA BIT P3.7SCL BIT P3.6 ;I2C总线定义MTD EQU 4CH ;发送数据缓存区首地址(4CH-51H)MRD EQU 38H ;接收数据缓存区首地址(38H-3DH)SET_TIMES EQU 37H;定义状态指示灯LED_GREEN BIT P3.4LED_RED BIT P3.5LED_YELLOW BIT P3.2;以下为初始化程序,包括数据存储空间初始化,设置初始密码 ORG 0000H LJMP FIRST ORG 000BH LJMP INT_T0 ORG 0100HFIRST: MOV SET_TIMES,#0 MOV WORD_1SET,#01H ;设置初始密码为"123456" MOV WORD_2SET,#02H MOV WORD_3SET,#03H MOV WORD_4SET,#04H MOV WORD_5SET,#05H MOV WORD_6SET,#06H;向24C01C中写数据,数据存放在24C MOV SLA,#0A0H ;24C01C MOV SUBA,#00H ;目标地址 MOV NUMBYTE,#6 ;字节数 LCALL IWRNBYTE ;写数据 ;***************************************************; LCALLDIY_LS ;加延时程序;**************************************************;;从24C01C中读数据,数据送AT89C MOV SLA,#0A0H ;24C01C MOV SUBA,#00H ;目标地址 MOV NUMBYTE,#6 ;字节数 LCALL IRDNBYTE ;写数据;****************************************************; BEGIN: MOV CNT_ERROR,#00H START: CLR LED_YELLOW ;上锁指示灯 SETB LED_GREEN ;开锁指示灯灭 SETB LED_RED ;密码错误指示灯灭 MOV KEY_CNT_SET,#00H MOV CNT_A,#00H ;程序初始化 MOV CNT_B,#00H MOV KEY_CNT,#00H MOV LINE,#00H MOV ROW,#00H MOV VAL,#00H MOV WORD_ADRESS,#4CHMOV LED_BIT_1,#0AH ;led灯全"-" MOV LED_BIT_2,#0AH MOV LED_BIT_3,#0AH MOV LED_BIT_4,#0AH MOV LED_BIT_5,#0AH MOV LED_BIT_6,#0AH MOV KEY_1,#00H ;输入密码存储区清0 MOV KEY_2,#00H MOV KEY_3,#00H MOV KEY_4,#00H MOV KEY_5,#00H MOV KEY_6,#00HMOV TMOD,#01H ;定时器T0选择方式1 MOV TH0,#(65536-700)/256 MOV TL0,#44h ;#(65536-700)MOD 256 MOV IE,#82H ;CPU开中断,定时器1开中断 ;以下为程序循环部分 LCALL BCD LCALL DISP;以下为键盘扫描程序,计算键值并存入VALA0:NOPLSCAN: MOV P1,#0F0H ;扫描行码 L1: JNB P1.0,L2 LCALL DLY_S JNB P1.0,L2 MOV LINE,#00H LJMP RSCAN L2: JNB P1.1,L3 LCALL DLY_S JNB P1.1,L3 MOV LINE,#01H LJMP RSCAN L3: JNB P1.2,L4 LCALL DLY_SJNB P1.2,L4 MOV LINE,#02H LJMP RSCAN L4: JNB P1.3,A0 LCALL DLY_S JNB P1.3,A0 MOV LINE,#03HRSCAN: MOV P1,#0FH ;扫描列码 C1: JNB P1.4,C2 MOV ROW,#00H LJMP CALCU C2: JNB P1.5,C3 MOV ROW,#01H LJMP CALCU C3: JNB P1.6,C4 MOV ROW,#02H LJMP CALCU C4: JNB P1.7,C1 MOV ROW,#03H LJMP CALCUCALCU: MOV A,LINE ;计算键值 MOV B,#04H MUL AB ADD A,ROW MOV VAL,A;以下为按键处理程序,对不同的按键作出响应 CJNE A,#0AH,J1 ;是否为"CLR"键 JNB LED_GREEN,CLR_KEY MOV R1,KEY_CNT CJNE R1,#00H,J2 LCALL ALARM_1LCALLFALSELJMP STARTCLR_KEY:LCALL ALARM_1 LCALLFALSE LJMP A1 J2: LCALL SHIFTR DEC KEY_CNT LCALL BCD LCALL DISP ;等待按键抬起 W00:LCALL DLY_1S MOV A,P1 CJNE A,#0FH,W01 LJMP A0 W01:MOV A,P1 CJNE A,#0F0H,W02 LJMP A0 W02:SJMP W00 J1:MOV A,VAL CJNE A,#0CH,J11 ;是否为SET键 LCALL DLY_S JB LED_GREEN,SET_ERROR W00_SET: LCALL DLY_S MOV A,P1 CJNE A,#0FH,W01_SET LJMP SET_P W01_SET: MOV A,P1 CJNE A,#0F0H,W02_SET LJMP SET_P W02_SET: SJMP W00_SETSET_ERROR:LCALL ALARM_1 LCALLFALSE LJMP BEGINJ11:MOV A,VALCJNE A,#0DH,J22 ;是否为LOCK键LCALL DLY_SJNB LED_GREEN,LOCKLOCK_ERROR:LCALL ALARM_1LCALLFALSELOCK:NOPW00_LOCK:LCALL DLY_S MOV A,P1 CJNE A,#0FH,W01_LOCK LJMP BEGIN W01_LOCK: MOV

温馨提示

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

评论

0/150

提交评论