基于51单片机的密码锁(可改密码)_第1页
基于51单片机的密码锁(可改密码)_第2页
基于51单片机的密码锁(可改密码)_第3页
基于51单片机的密码锁(可改密码)_第4页
基于51单片机的密码锁(可改密码)_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

实习报告实习名称单片机应用实习院(系)名称电气与信息工程学院专业班级XXXXXXXXX学生姓名XXXXXX学号XXXXXX指导教师XXXXXXXXXX目录第1章总体设计方案411总体设计方案4第2章硬件电路设计521单片机最小系统电路设计522液晶显示模块623键盘输入模块724AT24C02密码存储模块825系统供电电路设计926蜂鸣器和继电器模块10第3章系统软件设计1131软件总体设计思路1132主程序流程设计12总结13参考文献14附录15附录一15附录二15实习任务书学生姓名XXXX系部电气与信息工程学院专业班级测控121指导教师姓名XXX职称副教授讲师是否外聘是否题目名称键盘式电子密码锁一、设计的内容、目的和意义本次实习是有关于键盘式电子密码锁的设计。在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。本次实习的目的是实现电子密码锁的功能,并运用单片机技术设计一个结构简单,并且相对低成本的密码锁。二、设计的技术指标要求1、研究方法(1)总体按照最优化的方法进行软件设计和硬件设计,走软件实现道路;(2)对软硬件进行模块划分,并对各单元电路结合EDA工具进行论证设计;(3)在查阅文献基础上展开设计,力求创新。2、技术要求(1)采用6位密码(2)报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘摘要本次设计使用ATMEL公司的STC89C52实现一基于单片机的智能电子密码锁的设计,其主要具有如下功能1、设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。2、密码可以由用户自己修改设定(只支持6位密码),初始密码输入成功后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。3、报警、锁定键盘功能。密码输入错误1602LCD会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。4、AT24C02保存密码,支持复位保存,掉电保存功能。方案比较及选择方案1用数字逻辑器件搭建电子密码锁,电路复杂庞大,且稳定性差,密码位数有限,保密性差方案2用FPGA可编程逻辑器件设计电子密码锁,程序通用性差,可读性低,不易移植。成本昂贵方案3单片机AT89C51为核心,设计一个电子密码锁系统。系统分为硬件和软件两个部分。硬件部分主要包括键盘输入模块、显示电路模块、密码存储模块、单片机电路模块等;软件部分主要包括如下模块系统的主流程、键盘的扫描、LCD的读写、密码存储器的读写比较等。确定方案及理由方案1需要大量逻辑器件。方案2需要FPGA可编程逻辑器件,价格昂贵所以本次实习选择价格简单操作相对简单的第三个方案。第1章总体设计方案11总体设计方案密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能1、密码输入功能插上电源后,LCD提示输入密码,输入密码时在1602LCD上显示“”每输入一个数字,LCD上向右移一格,同时“”加一个。值到输入6个“”为此,若一次性输入大于6个密码,则只保留前6位密码,按“确定”生效。若按取消键,锁关闭,所有输入清除。2、密码更改功能将输入的值作为新的密码(初始密码是6个0)。3、当密码输入成功后,或者密码修改成功后,LCD上有提示成功字符,同时蜂鸣器响两声作为提示。其具体系统原理框图如图11所示。12软硬件功能分析键盘输入模块、液晶显示模块、AT24C02存储模块、电源模块以及蜂鸣器与继电器模块。系统的总体工作过程是这样的首先,从键盘输入密码,单片机采集到密码后通过液晶显示,同时与AT24C02存储模块中的密码比对,密码正确后继电器开关打向另一端以模拟开锁过程,三次密码输入错误后报警模块报警。键盘输入模块复位电路密码存储模块STC89C52显示模块报警电路开锁电路通过对器件性价比及其他方面的考虑,键盘采用矩阵式键盘,显示采用LCD1602字符型液晶显示器为了,用外扩一个AT24C02E2PROM存储密码。第2章硬件电路设计21单片机最小系统电路设计单片机最小系统设计是单片机应用系统设计的基础。AT89S52单片机最小系统电路如图21所示。P10345678REST9XDINWALGVCUPFUYMKB图21单片机最小系统电路22液晶显示模块本次实际的显示模块是采用的1602,电路图如图所示P10T2EX345678RS9DINWALGVCUKESACKO_BP图22液晶显示电路1602的引脚功能第1脚为地。第2脚VCC接5V正电源。第3脚为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个20K的电位器调整对比度。第4脚RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚E端为使能端,E端由高电平跳变成低电平时,液晶模块执行命令。第714脚D0D7为8位双向数据线。第1516脚空脚。23键盘输入模块使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。P10T2EX345678RS9DINWALGVCUB图23矩阵键盘电路通过行列键盘扫描的方法可获取键盘输入的键值,从而得知按下的哪个键,具体过程如下(1)查询是否有键按下。单片机向行扫描口输出全为“0”的扫描码,然后从列检测口检测信号,只要有一列信号不为“1”,则表示有键按下,且不为“1”的列即对应为按下的按键所在的列。(2)查询按下按键所在的行、列位置。前面已经取得了按下键的列,接下来要确定按键所在的行,这需要进行逐行扫描,单片机首先使第1行为“0”,其余各行为“1”,接着进行行列检测,若为全“1”,表示不在第1行,否则即在第1行;然后使第2行为全“0”,其余各行为“1”,再进行列检测,若为全“1”,表示不在第2行;这样逐行检测,直到找到按键所在的行。当各行都扫描以后仍没有找到,则放弃扫描,认为是键的错误动作。在扫描键盘过程中,应该注意以下问题(1)当按下或松开按键时,按键会产生机械抖动。这种抖动经常发生在按下或松开瞬间,一般持续几到十几秒,抖动时间随按键的结构不同而不同,。在扫描键盘过程中,必须想办法消除按键,否则会引起错误。较为简单的方法就是用软件延时方法来消除按键的抖动,一旦发现有键按下,就延时20MS以后再测按键的状态。这样就避开按键发生抖动的那一段时间,使CPU能可靠地读按键状态。在编制键盘扫描程序时,只要发现按键状态有变化,即无论是按下还是松开,程序都延时20MS以后再进行其他操作。(2)在键盘扫描中,应防止按一次键而有多个对应键值输入的情况。这种情况的发生是由于键扫描速度和键处理速度较快,当某一个键按下还未松开时键扫描程序和键处理程序已执行了多遍。这样,由于程序执行和按键动作不同步而造成按一个键有多个键值输入的错误状态。为避免发生这种情况,必须保证按一次键,CPU只对该键做一次处理。为此,在键扫描程序中不仅要检测是否有键按下,在有键按下的情况,做一次处理,而且在键处理完毕后,还应检测按下的键否松开,只有当按下的键松开以后,程序才往下执行。这样每按一个键,只做一个键处理,使二者达到同步,消除按一次键有多个键值输入的错误情况。根据需要,本设计的44键盘设定10个数字键(09)和3个功能键。图32中第4列前三个暂时不用,可以作以后扩充所用。因此根据上面提到的44键盘的键值编码方法,各按键及其编码对应关系如表31。按键行号列号键值编码11111H(00010001)21221H(00100001)31341H(01000001)42112H(00010010)52222H(00100010)62342H(01000010)73114H(00010100)83224H(00100100)93344H(01000100)取消4118H(00011000)04228H(00101000)(确认)4348H01001000D修改4488H(10001000)表21按键与编码对应关系表24AT24C02密码存储部分P10T2EX345678RS9DINWALGVCU图24AT24C02模块为了保存用户设置的密码,本系统使用AT24C02用来保存用户设置的密码,它的SCL、SDA端分别接单片机的T0、T1端,用于与单片机之间读写操作的数据传输;WP接低电平表示单片机可以对器件进行正常的读/写操作;A0、A1、A2是器件地址输入端,都接低电平表示只有一个AT24C02被器件寻址。该电路要注意的是SCL、SDA必须加上一上接电阻,阻值为47K。用户设置的密码存放在AT24C02中,当需要更改或读取用户密码时,只需对AT24C02里的数据更改或读取。AT24C02支持I2C总线数据传送协议,I2C总线协议规定,任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据发送或接收的模式,通过器件地址输入端A0A1和A2可以实现将最多8个24WC01和24WC02器件4个242C04器件,2个24WC08器件和1个24WC16器件连接到总线上。25系统供电电源电路设计本系统需要采用5V电源,所采用的电源电路是由整流电路和三端稳压器组成的。电路输出电压和最大输出电流决定于所选三端稳压器。其电源电路如图所示。D31N4007TF1C13300UFC23300UFC3033UFC4033UFC501UFC601UFR11K79052131237805VCCVCC5V5V12HEADER图255V电源电路25蜂鸣器和继电器部分密码正确时驱动继电器开锁,LED灯提示,蜂鸣器响,电路图所示KASPCQHOTSNLBLYG图26继电器,蜂鸣器电路1、继电器(1)概述继电器是一种电子控制器件,它具有控制系统和被控制系统,通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。2、蜂鸣器蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。在单片机应用的设计上,很多方案都会用到蜂鸣器,大部分都是使用蜂鸣器来做提示或报警,比如按键按下、开始工作、工作结束或是故障等等。这里对单片机在蜂鸣器驱动上的应用作一下描述。本设计使用的是自激蜂鸣器,自激蜂鸣器是直流电压驱动的,不需要利用交流信号进行驱动,只需对驱动口输出驱动电平并通过三极管放大驱动电流就能使蜂鸣器发出声音。第3章系统软件设计31软件总体设计思路经过前几章的设计工作,系统的硬件电路设计已经完成了。然而,对于一个完整的设计系统来说,只有硬件电路的设计完成是不够的,它必须通过软件编程来实现系统工作的控制功能,从而才能实现电路应有的系统功能。单片机系统的软件设计主要使用汇编语言或高级语言。汇编语言与系统硬件的关系密切,可方便地实现诸如中断管理以及模拟/数字量的输入/输出等功能,具有占用系统资源小、执行速度快的特点,但是,对复杂的大型应用系统,其代码可读性差,并不利于升级和维护。高级语言的代码效率和长度都不如汇编语言,但其结构清晰、可读性好、开发周期短、有极强的可移植性,在多数应用方面执行效率与汇编语言的差距也不大,近年来得到了极为广泛的应用。而C语言既有高级语言的各种特点,又可对硬件进行操作,并可进行结构化程序设计。用C语言编写的程序较容易移植,可生成简洁、可靠的目标代码,用C语言进行单片机计算机开发已经是必然的发展趋势。本设计整体软件思路为大量程测量后切换模拟开关决策量程范围,周而复始的测量,并显示。本设计以单片机作为系统的核心控制单元,运用C语言进行编程工作,按照工作流程来实现设计要求的对交流真有效值的测试功能,并且通过软硬件的不断调整,来完善优化设计系统,从而实现结构化程序设计。32主程序流程设计通过之前的硬件系统设计,综合各方面的考虑,系统主控流程图如图所示初始化屏幕显示WELECOM扫描按键是否有键按下开始否修改键按下输入键按下接受6位密码密码是否正确修改并保存密码开锁是是否是否出错报警图31程序流程图是实习总结以上为本次单片机实习设计的电子密码锁电路,通过这次实习发现自己的看法有点太片面,实习不仅是对前面所学知识的一种检验,也是对自己能力的一种提高,通过这次实习使自己明白了原来的那点知识是非常欠缺的,要学习的东西还很多,通过这次实习,明白学习是一个长期积累的过程,在以后的工作和生活中都应该不断的学习,努力提高自己的知识和综合素质。在这次实习中,同学之间互相帮助,有什么不懂的大家在一起商量,发现我们所学的知识实在是有限,不过我们能够充分利用网络的优势去查阅资料。在整个设计过程中学到了许多东西,也培养了独立思考和设计的能力,树立了对知识应用的信心,相信会对今后的学习工作和生活有非常大的帮助,并且提高了自己的动手实践操作能力,使自己充分体会到了在设计过程中的成功喜悦。虽然这个设计做的不怎么好,但是在设计过程中所学到的东西是这次实习的最大收获和财富,使我终身受益。此次所设计的密码锁由于自己的能力有限未能将其拓展为红外遥控密码锁。但在以后的生活和工作中,我会继续努力学习,争取将其完成。通过这次实习,我感觉有很大的收获首先,通过学习使自己对课本上的知识可以应用于实际,使的理论与实际相结合,加深自己对课本知识的更好理解,同时实习也段练了我个人的动手能力能够充分利用图书馆去查阅资料,增加了许多课本以外的知识。能对AD9、和KEIL51等仿真软件操作,能达到学以致用。对我们学生来说,理论与实际同样重要,这是我们以后在工作中说明自己能力的一个重要标准。参考文献1白延敏51单片机典型系统开发实例精讲M电子工业出版社,2009,12李建忠单片机原理及应用M西安电子科技大学出版社,2002,13胡汉才单片机原理及其接口技术M清华大学出版社,1996,24阎石数字电子技术基础M高等教育出版社,1998,45美HOWARDJOHNOON,MARTINGRAHAM高速数字设计(英文版)M电子工业出版社1991,16李钟实实用电子报警器精选百例M科学技术文献出版社,2002,27赵广林PROTEL99SE电路设计与制作M电子工业出版社2005,88江思敏,姚鹏翼,胡荣PROTEL电路设计教程M清华大学出版社,2002,19BRIANWKERNIGHANANDDENNISMRITCHIETHECPROGRAMMINGLANGUAGEM1988,110戴佳,戴卫恒C语言应用程序设计M电子工业出版社,2006,111龚运新单片机C语言开发技术M清华大学出版社2006,1附录附录1总原理图P0T2EX345678RS9DINWALGVCUKESACKBQHOTNPFULO_Y附录2源程序源程序INCLUDEINCLUDEDEFINELCM_DATAP0DEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINT/DEFINEBUSY0X80/用于检测LCM状态字中的BUSY标识DEFINEW6/定义密码位数SBITLCD1602_RSP25SBITLCD1602_RWP26SBITLCD1602_ENP27SBITSCLP34/24C02串行时钟SBITSDAP35/24C02串行数据SBITALAMP21/报警SBITKEYP20/开锁SBITOPEN_LEDP22/开锁指示灯BITOPERATION0/操作标志位BITPASS0/密码正确标志/BITRESETEN0/重设密码充许标志BITREINPUTEN0/重置输入充许标志BITS3_KEYDOWN0/3秒按键标志位BITKEY_DISABLE0/锁定键盘标志UNSIGNEDCHARCOUNTT0,SECOND/T0中断计数器,秒计数器VOIDDELAY5MSVOIDUNSIGNEDCHARCODEA0XFE,0XFD,0XFB,0XF7/控盘扫描控制表UNSIGNEDCHARCODESTART_LINE“PASSWORD“UNSIGNEDCHARCODENAME“CODEDLOCK“/显示名称UNSIGNEDCHARCODECORRECT“CORRECT“/输入正确UNSIGNEDCHARCODEERROR“ERROR“/输入错误UNSIGNEDCHARCODECODEPASS“PASS“UNSIGNEDCHARCODELOCKOPEN“OPEN“/OPENUNSIGNEDCHARCODESETNEW“SETNEWWORDENABLE“UNSIGNEDCHARCODEINPUT“INPUT“/INPUTUNSIGNEDCHARCODERESETOK“RESETPASSWORDOK“UNSIGNEDCHARCODEINITWORD“INITPASSWORD“UNSIGNEDCHARCODEER_TRY“ERROR,TRYAGAIN“UNSIGNEDCHARCODEAGAIN“INPUTAGAIN“UNSIGNEDCHARINPUTDATA6/输入密码暂存区UNSIGNEDCHARCURRENTPASSWORD61,3,1,4,2,0/当前密码值UNSIGNEDCHARTEMPPASSWORD6UNSIGNEDCHARN0/密码输入位数记数UNSIGNEDCHARERRORCONT/错误次数计数UNSIGNEDCHARCORRECTCONT/正确输入计数UNSIGNEDCHARREINPUTCONT/重新输入计数UNSIGNEDCHARCODEINITPASSWORD60,0,0,0,0,0/5MS延时VOIDDELAY5MSVOIDUNSIGNEDINTTEMPCYC5552WHILETEMPCYC/400MS延时VOIDDELAY400MSVOIDUNSIGNEDCHARTEMPCYCA5UNSIGNEDINTTEMPCYCBWHILETEMPCYCATEMPCYCB7269WHILETEMPCYCB/24C02VOIDMDELAYUINTT/延时UCHARIWHILETFORI0I0XFORY110Y0Y/写指令WRITE_1602COMUCHARCOM/液晶写入指令函数LCD1602_RS0/数据/指令选择置为指令LCD1602_RW0/读写选择置为写P0COM/送入数据DELAY1LCD1602_EN1/拉高使能端,为制造有效的下降沿做准备DELAY1LCD1602_EN0/EN由高变低,产生下降沿,液晶执行命令/写数据WRITE_1602DATUCHARDAT/液晶写入数据函数LCD1602_RS1/数据/指令选择置为数据LCD1602_RW0/读写选择置为写P0DAT/送入数据DELAY1LCD1602_EN1/EN置高电平,为制造下降沿做准备DELAY1LCD1602_EN0/EN由高变低,产生下降沿,液晶执行命令/初始化VOIDLCD_INITVOIDWRITE_1602COM0X38/设置液晶工作模式,意思162行显示,57点阵,8位数据WRITE_1602COM0X0C/开显示不显示光标WRITE_1602COM0X06/整屏不移动,光标自动右移WRITE_1602COM0X01/清显示/将按键值编码为数值UNSIGNEDCHARCODINGUNSIGNEDCHARMUNSIGNEDCHARKSWITCHMCASE0X18K1BREAKCASE0X28K2BREAKCASE0X48K3BREAKCASE0X88KABREAKCASE0X14K4BREAKCASE0X24K5BREAKCASE0X44K6BREAKCASE0X84KBBREAKCASE0X12K7BREAKCASE0X22K8BREAKCASE0X42K9BREAKCASE0X82KCBREAKCASE0X11KBREAKCASE0X21K0BREAKCASE0X41KBREAKCASE0X81KDBREAKRETURNK/按键检测并返回按键值UNSIGNEDCHARKEYNUMVOIDUNSIGNEDCHARROW,COL,IP10XF0IFP1DELAY5MSIFP1/确定行线I0P1AI/精确定位WHILEI4IFP1/确定列线BREAK/已定位后提前退出ELSEIP1AIELSERETURN0WHILEP1RETURNROW|COL/行线与列线组合后返回ELSERETURN0/无键按下时返回0/一声提示音,表示有效输入VOIDONEALAMVOIDALAM0DELAY5MSALAM1/二声提示音,表示操作成功VOIDTWOALAMVOIDALAM0DELAY5MSALAM1DELAY5MSALAM0DELAY5MSALAM1/三声提示音,表示错误VOIDTHREEALAMVOIDALAM0DELAY5MSALAM1DELAY5MSALAM0DELAY5MSALAM1DELAY5MSALAM0DELAY5MSALAM1/显示输入的N个数字,用代替以便隐藏VOIDDISPLAYONEVOID/DISPLAYONECHAR9N,1,WRITE_1602COMYI5NWRITE_1602DAT/显示提示输入VOIDDISPLAYCHARVOIDUNSIGNEDCHARIIFPASS1/DISPLAYLISTCHAR0,1,LOCKOPENWRITE_1602COMERFORI0I16IWRITE_1602DATLOCKOPENIELSEIFN0/DISPLAYLISTCHAR0,1,ERRORWRITE_1602COMERFORI0I16IWRITE_1602DATERRORIELSE/DISPLAYLISTCHAR0,1,START_LINEWRITE_1602COMERFORI0I16IWRITE_1602DATSTART_LINEIVOIDDISPLAYINPUTVOIDUNSIGNEDCHARIIFCORRECTCONT1/DISPLAYLISTCHAR0,0,INPUTWRITE_1602COMERFORI0I16IWRITE_1602DATINPUTI/重置密码VOIDRESETPASSWORDVOIDUNSIGNEDCHARIUNSIGNEDCHARJ/RESETEN1/开启重置功能IFPASS0PASS0DISPLAYCHARTHREEALAMELSEIFREINPUTEN1IFN6REINPUTCONTIFREINPUTCONT2FORI0I6IFTEMPPASSWORDIINPUTDATAI/将两次输入的新密码作对比IELSE/DISPLAYLISTCHAR0,1,ERRORWRITE_1602COMERFORJ0J16JWRITE_1602DATERRORJTHREEALAM/错误提示PASS0REINPUTEN0/关闭重置功能,REINPUTCONT0DISPLAYCHARBREAKIFI6/DISPLAYLISTCHAR0,1,RESETOKWRITE_1602COMERFORJ0J16JWRITE_1602DATRESETOKJTWOALAM/操作成功提示WRTOROMTEMPPASSWORD,0,6/将新密码写入24C02存储REINPUTEN0REINPUTCONT0/RESETEN0CORRECTCONT0ELSEONEALAM/DISPLAYLISTCHAR0,1,AGAIN/显示再次输入一次WRITE_1602COMERFORJ0J16JWRITE_1602DATAGAINJFORI0I6ITEMPPASSWORDIINPUTDATAI/将第一次输入的数据暂存起来N0/输入数据位数计数器清零/输入密码错误超过三过,报警并锁死键盘VOIDALAM_KEYUNABLEVOIDP10X00ALAMALAMDELAY5MS/取消所有操作VOIDCANCELVOIDUNSIGNEDCHARIUNSIGNEDCHARJ/DISPLAYLISTCHAR0,1,START_LINEWRITE_1602COMERFORJ0J16JWRITE_1602DATSTART_LINEJTWOALAM/提示音FORI0I6IINPUTDATAI0KEY1/关闭锁ALAM1/报警关锁OPERATION0/操作标志位清零PASS0/密码正确标志清零/RESETEN0/重设密码充许标志清零REINPUTEN0/重置输入充许标志清零ERRORCONT0/密码错误输入次数清零CORRECTCONT0/密码正确输入次数清零REINPUTCONT0/重置密码输入次数清零OPEN_LED1S3_KEYDOWN0KEY_DISABLE0N0/输入位数计数器清零/确认键,并通过相应标志位执行相应功能VOIDENSUREVOIDUNSIGNEDCHARI,JRDFROMROMCURRENTPASSWORD,0,6/从24C02里读出存储密码IFN6IFREINPUTEN0/重置密码功能未开启FORI0I6IFCURRENTPASSWORDIINPUTDATAIIELSEERRORCONTIFERRORCONT3/错误输入计数达三次时,报警并锁定键盘WRITE_1602COMERFORI0I16IWRITE_1602DATERRORIDOALAM_KEYUNABLEWHILE1ELSETR01/开启定时KEY_DISABLE1/锁定键盘PASS0BREAKIFI6CORRECTCONTIFCORRECTCONT1/正确输入计数,当只有一次正确输入时,开锁,/DISPLAYLISTCHAR0,1,LOCKOPENWRITE_1602COMERFORJ0J16JWRITE_1602DATLOCKOPENJTWOALAM/操作成功提示音KEY0/开锁PASS1/置正确标志位TR01/开启定时OPEN_LED0/开锁指示灯亮FORJ0J6J/将输入清除INPUTDATAI0ELSE/当两次正确输入时,开启重置密码功能/DISPLAYLISTCHAR0,1,SETNEWWRITE_1602COMERFORJ0J16JWRITE_1602DATSETNEWJTWOALAM/操作成功提示REINPUTEN1/允许重置密码输入CORRECTCONT0/正确计数器清零ELSE/当第一次使用或忘记密码时可以用131420对其密码初始化IFINPUTDATA01/强制将初始密码写入24C02存储/DISPLAYLISTCHAR0,1,INITWORD/显示初始化密码WRITE_1602COMERFORJ0J16JWRITE_1602DATINITWORDJTWOALAMDELAY400MSTWOALAMN0ELSE/DISPLAYLISTCHAR0,1,ERRORWRITE_1602COMERFORJ0J16JWRITE_1602DATERRORJTHREEALAM/错误提示音PASS0ELSE/当已经开启重置密码功能时,而按下开锁键,/DISPLAYLISTCHAR0,1,ER_TRYWRITE_1602COMERFORJ0J16JWRITE_1602DATER_TRYJTHREEALAMELSE/DISPLAYLISTCHAR0,1,ERRORWRITE_1602COMERFORJ0J16JWRITE_1602DATERRORJTHREEALAM/错误提示音PASS0N0/将输入数据计数器清零,为下一次输入作准备OPERATION1/主函数VOIDMAINVOIDUNSIGNEDCHAR

温馨提示

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

评论

0/150

提交评论