版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录简易电字密码锁2一、绪论21.1 引言21.2 课题的背景及意义21.3 电子密码锁发展趋势3二、 总体设计方案52.1基于单片机的电子密码锁功能实现要求52.2按键说明52.3操作说明62.4系统结构框图6三、 硬件设计73.1 AT89C51单片机的简介73.1.1 主要特性83.1.2 管脚说明83.2振荡器和时钟电路113.3 单片机复位电路123.4 键盘电路设计133.5 液晶显示电路设计133.6 存储芯片电路设计14四、系统软件设计15五、课程总结及心得体会31参考文献32简易电字密码锁一、绪论1.1 引言在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表
2、以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。根据本设计要求,通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁等任务。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的数字密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其主要优点有:(
3、1)保密性好,编码量多,远远大于弹子锁。随机开锁成功率几乎为零。(2)密码可变。用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。(3)误码输入保护。当输入密码错误时,系统会报警。(4)操作简单易行,一学即会。1.2 课题的背景及意义随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格比显著提高,技术日趋完善。由于单片机具有体积小、重量轻、价格便宜、功耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用电器等各个领域均得到了广泛的应用。本设计利用单片机及附加器件实现数据采集和控制算法,来完成某一实际功能,检验并提高同学对整体电路设计和把握
4、能力,了解单片机系统设计流程,以及电路板的实际制作和调试能力。同时也加强对数字电路、单片机和微机原理等课程知识的实际应用能力,也为同类产品的进一步发展奠定理论和实践基础。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我国电子锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上
5、仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用。1.3 电子密码锁发展趋势 电子密码锁应用于金融业,其根本的作用是“授权”,即被“授权”的人才可以存取钱、物。广义上讲,金融业的“授权”主要包括以下三种层次的内容:1、授予保管权,如使用保管箱、保险箱和保险柜;2、授予出入权,如出入金库、运钞车和保管室;3、授予流通权,如自动存取款。目前,金融行业电子密码锁
6、的应用主要集中在前两个层面上。下面将介绍几种在金融行业中使用较多的电子密码锁以及它们的技术发展方向。当然,以上所说的授权技术再高超,都必须由精良的“锁具”担当承载结构部件,实现开启、闭锁的功能,而且承担实体防护作用,抵抗住或尽量延迟破坏行为,让电子密码锁“软、硬不吃”。一般情况下,锁具防盗的关键是锁身外壳、闭锁的部件的强度、锁止型式、配合间隙和布局。提高电子密码锁之防护能力的必然途径是报警,在金融业的许多场所有人值守、有电视监控,具有报警功能,可以综合物理防范和人力防范两种作用。报警的前提是具备探测功能,根据电子密码锁的使用场所和防护要求,可选择多种多样的探测手段。在中国的城市金融业中,实现联
7、网报警已经成为对各金融网点的基本要求。根据国内外的实践经验,金融业实行安全防范风险等级很有必要,即依据使用的防盗报警器材的性能、安装布局和人员值守状况等,可以评估被防护物或区域的防护能力,得出风险等级,其中,电子密码锁的性能至关重要。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子密码锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子密码锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用信息也能够使电子密码锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。 二、 总体设计方案2.1基于单片机的电子密码锁功
8、能实现要求1、设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。2、密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。3、报警、锁定键盘功能。密码输入错误显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。4、AT24C02保存密码,支持复位保存,掉电保存功能。2.2按键说明如图示:采用4X4键盘输入,键盘对应名称如下:1 2 3 A4 5 6 B7 8 9 C# 0 * D其中,【09】为数字键,用于输入相应的密码, 【#】号键为取消当前操作【*】号键为确认【D】键为修改密
9、码 其它键无功能及定义2.3操作说明密码锁初始密码为:000000.1、 开锁:插上电源后,程序自动调入初始密码,此时依次输 入:000000,然后按【*】(确认)键,此时锁会打开,可以看到显示open,密码锁打开。2、 退出并关锁:按下【#】(取消)键,此时锁关闭,所有输入清除。3、 修改密码:在开锁状态下,再次输入正确的密码并按下【*】(确认)键,此时听到两声提示,输入新的六位密码并按【D】(重设)键,再重复输入一次新密码并按【D】,会听到两声提示音,表示重设密码成功,内部保存新密码并存储到AT24C02。(如两次输入的新密码不一样,则重设密码失败)。4、 报警并锁定键盘:当输入密码错误后
10、,报警并锁定键盘3秒,如3秒内又有按键,3秒再启动。当重置新密码时,新密码会保存于AT24C02存储器里。2.4系统结构框图 AT89S52显示模块键盘输入模块报警电路复位电路开锁电路密码存储模块三、 硬件设计单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。随着单片机在技术上、体系上不断扩展其控制功能,国际上已经采用MCU(Microcontroller Unit)代替单片机的名词。它的最大优点是体
11、积小,可放在仪表内部。但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。近年来,51系列单片机在我国非常流行,它最大的特点是内部有可以多次重复编程的闪烁ROM,并且闪烁ROM可以直接用编程器来擦写,指令系统可兼容,方便程序的移植及系统的升级,使用起来比较方便。一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROMRAMI/O口定时/记数器中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既要按照系统功能要求配置外围设备,如键盘显
12、示器打印机A/D和D/A转换器等,又要设计合适的接口电路。3.1 AT89C51单片机的简介AT89C51是一种低功耗/低电压、高性能的八位CMOS单片机,片内有一个4KB的FLASH可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory),它采用了CMOS工艺和ATMEL公司的高密度非易失性存储器技术,而且其输出引脚和指令系统都与MSC51兼容。片内置通用8位中央处理器(CPU)和FLASH存储单元,片内的存储器允许在系统内改编程序或用常规的非易失性存储器编程。因此,AT89C51是一种功能强、灵活性高且价格合理的
13、单片机,可方便的应用于各种控制领域。3.1.1 主要特性(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停止工作。在掉电方式中,片内振荡器停止工作,由于
14、时钟被“冻结”,使一切功能都暂停,只保存片内RAM中的内容,直到下次硬件复位为止。3.1.2 管脚说明 VCC(40):供电电压,其工作电压为5V。GND(20):接地。P0端口(P0.0-P0.7):P0口为一个8位漏极开路双向I/O口,每个引脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1端口(P1.0-P1.7):P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门
15、电流。P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2端口(P2.0-P2.7):P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口,用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P
16、2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3端口(P3.0-P3.7):P3口管脚是一个带有内部上拉电阻的8位的双向I/O端口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入端时,由于外部下拉为低电平,P3口将输出电流(ILL)。P3口也可作为AT89C51的一些特殊功能口,如表3.1所示。表3.1 P3端口引脚兼用功能表P3口同时为闪烁编程和编程校验接收一些控制信号。复位RST(9):复位输入。在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个
17、引脚保持高电平,51芯片便循环复位。复位后P3.0-P3.7口均置1,引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位操作不会对内部RAM有所影响。ALE/(30):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如果想禁止ALE的输出可在SFR8EH地址上置0。此时
18、, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,则置位无效。(29):外部程序存储器的选通信号。在由外部程序存储器取指令期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。EA/VPP(31):当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,将内部锁定为RESET;当端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V的编程电源(VPP)。XTAL1(19):来自反向振荡放大器的输入及内部时钟工作电路的
19、输入。XTAL2(18):来自反向振荡器的输出。其引脚图如图3.1所示。图3.1 AT89C51引脚图3.2振荡器和时钟电路振荡器和时钟电路用于产生单片机正常工作时所需要的时钟信号,AT89C51单片机采用CMOS工艺,内部包含一个振荡器,可以用于CPU的时钟源;也允许采用外部振荡器,由外部振荡器产生的时钟信号来供内部CPU运行使用。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平
20、要求的宽度。 图3.2 振荡器电路3.3 单片机复位电路单片机的复位是一个很重要的部分,复位是使单片机的CPU以及系统的各个部件处于特定的初始状态,并使系统从初始状态开始工作。一般在系统上电,或者程序死机的时候需要进行单片机的复位。单片机复位原理是,在时钟电路开始工作后,在单片机的RST引脚施加24个时钟振荡脉冲(即两个机器周期)以上的高电平,单片机便可以实现复位。在复位期间,单片机的ALE引脚和引脚均输出高电平。当RST引脚从高电平跳变为低电平后,单片机便从0000H单元开始执行程序。本系统采用自动上电复位电路,这样可以上电自动复位和人工复位单片机系统,如图3.4所示,当按下按键开关的时候,
21、VCC通过一个电阻连接到RST引脚,给RST一个高电平;按键松开的时候,RST引脚恢复为低电平,复位完成。图3.3 手动上电复位电路3.4 键盘电路设计在单片机应用系统中,一般都会设置键盘,主要为了控制运行状态,输入一些命令或数据,以完成特定的人机交互。键盘是与单片机进行人机交互的最基本的途径,其以按键的形式来设置控制功能或输入数据,按键的输入状态本质上是一个开关量。对于简单的开关量的输入可以采用独立式按键,这种方法接口简单,但占用单片机I/O端口资源较多。对于输入参数较多、功能复杂的系统,需要采用矩阵式键盘进行输入控制。本系统采用4*4矩阵式键盘,键盘连接方式如图3.5所示:图3.5 键盘电
22、路图3.5 液晶显示电路设计液晶显示器(LCD)是一种功耗很低的显示器,它的使用非常广泛,比如电子表、计算器、数码相机、计算机的显示器和液晶电视等。电子密码锁中需要显示的信息比较多,为了能直观的看到结果,并且为了设计显的美观,使用总线和排阻进行简化连接方式,本设计采用液晶显示屏LCD进行显示,具体连接方式如图3.6所示。图3.6 液晶显示器电路3.6 存储芯片电路设计总线(Inter Intergrate Circuit BUS)全称为芯片间总线,它在芯片间以两根连线实现全双工同步数据传送,一条数据线(SDA)和一条串行时钟线(SDL),可以很方便地构成外围器件扩展系统。总线采用两线制,由数据
23、线SDA和时钟线SCL构成,为了对数据进行存储,本系统使用串行EEPROM芯片,AT24C01系列是典型的串行总线的EEPROM,本系统采用此芯片进行数据存储,存储系统连接如图3.7所示:图3.7 总线和存储芯片连接电路图四、系统软件设计程序设计(Programming)是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件也占有重要的地位。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个
24、模块。把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。所谓“模块”,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。模块程序设计法的主要优点是:(1)单个模块比起一个完整的程序易编写、调试及修改。(2)程序的易读性好。(3)程序的修改可局部化。(4)模块可以共存,一个模块可以被多个任务在不同条件下调用。(5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。本系统软件采用模块化结构,由键盘扫描子程序,存储服务子程序,显示子程序。源程序如下:#include <
25、REG51.h>#include<intrins.h>#define LCM_Data P0#define uchar unsigned char #define uint unsigned int#define w 6/定义密码位数sbit lcd1602_rs=P20;sbit lcd1602_rw=P21;sbit lcd1602_en=P22;sbit Scl=P23;/24C02串行时钟sbit Sda=P24;/24C02串行数据sbit lock_led = P26;/开锁sbit open_led = P27;/开锁指示灯bit operation=0;/操作
26、标志位bit pass=0;/密码正确标志bit ReInputEn=0;/重置输入允许标志bit s3_keydown=0;/3秒按键标志位uchar countt0,second;/t0中断计数器,秒计数器uchar code a= 0xFE,0xFD,0xFB,0xF7;/控盘扫描控制表uchar code start_line= "password: "uchar code name = "=Coded Lock=" /显示名称uchar code Correct = " correct "/输入正确 uchar code E
27、rror = " error " /输入错误uchar code codepass= " pass " uchar code LockOpen= " open "/OPENuchar code SetNew = "SetNewWordEnable"uchar code Input = "inPut: "/INPUTuchar code ResetOK = "ResetPasswordOK "uchar code initword= "Init password.&q
28、uot;uchar code Er_try= "error,try again!"uchar code again= "input again "uchar InputData6;/输入密码暂存区uchar CurrentPassword6=1,1,1,1,1,1; /当前密码值uchar TempPassword6;uchar N=0;/密码输入位数记数uchar CorrectCont;/正确输入计数uchar ReInputCont; /重新输入计数uchar code initpassword6=0,0,0,0,0,0;/=5ms延时=void
29、Delay5Ms(void)unsigned int TempCyc = 5552;while(TempCyc-);/=400ms延时=void Delay400Ms(void) uchar TempCycA = 5; unsigned int TempCycB; while(TempCycA-) TempCycB=7269; while(TempCycB-); /=24C02=void mDelay(uint t) /延时 uchar i; while(t-) for(i=0;i<125;i+) ; void Nop(void) /空操作 _nop_(); _nop_(); _nop_
30、(); _nop_();/*起始条件*/void Start(void) Sda=1; Scl=1; Nop(); Sda=0; Nop(); /*停止条件*/void Stop(void) Sda=0; Scl=1; Nop(); Sda=1; Nop();/*应答位*/void Ack(void)Sda=0;Nop();Scl=1;Nop();Scl=0;/*反向应答位*/void NoAck(void) Sda=1; Nop(); Scl=1; Nop(); Scl=0; /*发送数据子程序,Data为要求发送的数据*/void Send(uchar Data) uchar BitCou
31、nter=8; uchar temp; do temp=Data; Scl=0; Nop(); if(temp&0x80)=0x80) Sda=1; else Sda=0; Scl=1; temp=Data<<1; Data=temp; BitCounter-; while(BitCounter); Scl=0;/*读一字节的数据,并返回该字节值*/uchar Read(void) uchar temp=0;uchar temp1=0;uchar BitCounter=8;Sda=1;doScl=0;Nop();Scl=1;Nop();if(Sda)temp=temp|0x
32、01;elsetemp=temp&0xfe;if(BitCounter-1)temp1=temp<<1;temp=temp1;BitCounter-;while(BitCounter);return(temp);void WrToROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i=0;i<Num;i+) Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Send(*(PData+i); Ack(); Sto
33、p(); mDelay(20); void RdFromROM(uchar Data,uchar Address,uchar Num) uchar i; uchar *PData; PData=Data; for(i=0;i<Num;i+) Start(); Send(0xa0); Ack(); Send(Address+i); Ack(); Start(); Send(0xa1); Ack(); *(PData+i)=Read(); Scl=0; NoAck(); Stop(); /=LCD1602=/#define yi 0x80 /LCD第一行的初始位置,因为LCD1602字符地址
34、首位D7恒定为1(100000000=80)#define er 0x80+0x40 /LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)/-延时函数,后面经常调用-void delay(uint xms)/延时函数,有参函数uint x,y;for(x=xms;x>0;x-) for(y=110;y>0;y-);/-写指令-write_1602com(uchar com)/*液晶写入指令函数*lcd1602_rs=0;/数据/指令选择置为指令lcd1602_rw=0; /读写选择置为写P0=com;/送入数据delay(1);lcd1602_en=1;/拉高使能端,为
35、制造有效的下降沿做准备delay(1);lcd1602_en=0;/en由高变低,产生下降沿,液晶执行命令/-写数据-write_1602dat(uchar dat)/*液晶写入数据函数*lcd1602_rs=1;/数据/指令选择置为数据lcd1602_rw=0; /读写选择置为写P0=dat;/送入数据delay(1);lcd1602_en=1; /en置高电平,为制造下降沿做准备delay(1);lcd1602_en=0; /en由高变低,产生下降沿,液晶执行命令/-初始化-void lcd_init(void)write_1602com(0x38);/设置液晶工作模式,意思:16*2行显
36、示,5*7点阵,8位数据write_1602com(0x0c);/开显示不显示光标write_1602com(0x06);/整屏不移动,光标自动右移write_1602com(0x01);/清显示/=将按键值编码为数值=uchar coding(uchar m) uchar k;switch(m)case (0x11): k='1'break;case (0x21): k='2'break;case (0x41): k='3'break;case (0x81): k='A'break;case (0x12): k='4
37、39;break;case (0x22): k='5'break;case (0x42): k='6'break;case (0x84): k='B'break;case (0x14): k='7'break;case (0x24): k='8'break;case (0x44): k='9'break;case (0x82): k='C'break;case (0x18): k='*'break;case (0x28): k='0'break;cas
38、e (0x48): k='#'break;case (0x88): k='D'break;return(k);/=按键检测并返回按键值=uchar keynum(void) uchar row,col,i; P1=0xf0; if(P1&0xf0)!=0xf0) Delay5Ms(); Delay5Ms(); if(P1&0xf0)!=0xf0) row=P10xf0; /确定行线i=0;P1=ai; /精确定位while(i<4) if(P1&0xf0)!=0xf0) col=(P1&0xff); /确定列线 break;
39、 /已定位后提前退出 else i+; P1=ai; else return 0;while(P1&0xf0)!=0xf0);return (row|col); /行线与列线组合后返回 else return 0; /无键按下时返回0/=显示输入的N个数字,用*代替以便隐藏=void DisplayOne(void)write_1602com(yi+5+N);write_1602dat('*');/=显示提示输入=void DisplayChar(void)uchar i;if(pass=1)write_1602com(er);for(i=0;i<16;i+)wr
40、ite_1602dat(LockOpeni);elseif(N=0)write_1602com(er);for(i=0;i<16;i+)write_1602dat(Errori);elsewrite_1602com(er);for(i=0;i<16;i+)write_1602dat(start_linei);void DisplayInput(void)uchar i;if(CorrectCont=1)write_1602com(er);for(i=0;i<16;i+)write_1602dat(Inputi);/=重置密码=void ResetPassword(void)u
41、char i;uchar j;if(pass=0)pass=0;DisplayChar();else if(ReInputEn=1)if(N=6)ReInputCont+;if(ReInputCont=2)for(i=0;i<6;)if(TempPasswordi=InputDatai)/将两次输入的新密码作对比i+;elsewrite_1602com(er);for(j=0;j<16;j+)write_1602dat(Errorj);pass=0;ReInputEn=0;/关闭重置功能,ReInputCont=0;DisplayChar();break; if(i=6)write
42、_1602com(er);for(j=0;j<16;j+)write_1602dat(ResetOKj); WrToROM(TempPassword,0,6); /将新密码写入24C02存储ReInputEn=0;ReInputCont=0;CorrectCont=0;elsewrite_1602com(er);for(j=0;j<16;j+)write_1602dat(againj);for(i=0;i<6;i+)TempPasswordi=InputDatai;/将第一次输入的数据暂存起来N=0;/输入数据位数计数器清零 /=取消所有操作=void Cancel(void
43、)uchar i;uchar j; write_1602com(er);for(j=0;j<16;j+)write_1602dat(start_linej);for(i=0;i<6;i+)InputDatai=0;lock_led=0;/锁operation=0;/操作标志位清零pass=0;/密码正确标志清零ReInputEn=0;/重置输入充许标志清零CorrectCont=0;/密码正确输入次数清零ReInputCont=0;/重置密码输入次数清零 open_led=1;s3_keydown=0;N=0;/输入位数计数器清零/=确认键,并通过相应标志位执行相应功=void E
44、nsure(void)uchar i,j;RdFromROM(CurrentPassword,0,6); /从24C02里读出存储密码 if(N=6) if(ReInputEn=0)/重置密码功能未开启for(i=0;i<6;) if(CurrentPasswordi=InputDatai)i+;else TR0=1;/开启定时pass=0;break;if(i=6)CorrectCont+;if(CorrectCont=1) /正确输入计数,当只有一次正确输入时,开锁,write_1602com(er);for(j=0;j<16;j+)write_1602dat(LockOpen
45、j);lock_led=1;/开锁pass=1;/置正确标志位TR0=1;/开启定时open_led=0;/开锁指示灯亮for(j=0;j<6;j+)/将输入清除InputDatai=0;else/当两次正确输入时,开启重置密码功能write_1602com(er);for(j=0;j<16;j+)write_1602dat(SetNewj);ReInputEn=1;/允许重置密码输入CorrectCont=0;/正确计数器清零 else/当第一次使用或忘记密码时可以用131420对其密码初始化if(InputData0=1)&&(InputData1=3)&
46、;&(InputData2=1)&&(InputData3=4)&&(InputData4=2)&&(InputData5=0) WrToROM(initpassword,0,6); /强制将初始密码写入24C02存储write_1602com(er); /显示初始化密码for(j=0;j<16;j+)write_1602dat(initwordj);Delay400Ms();N=0;elsewrite_1602com(er);for(j=0;j<16;j+)write_1602dat(Errorj);pass=0;else/当已经开启重置密码功能时,而按下开锁键,write_1602com(er)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省华中师大一附中2027届高二物理第一学期期中教学质量检测试题含解析
- 上海市交通大学附属中学2027届高三物理第一学期期中经典试题含解析
- 2027届河北鸡泽县第一中学高三物理第一学期期中教学质量检测模拟试题含解析
- 2027届四川省成都市双流区高二物理第一学期期中检测试题含解析
- 生成式人工智能工具的效能优化与应用实践研究
- 望虞河拓浚工程可行性研究报告
- 2026学年四川省遂宁市一年级数学期末高分通关重点试题附答案详细答案和解析
- 2026年安全知识安全生产知识竞赛-炼铁安全知识竞赛历年参考题库含答案解析
- 2026年大学试题(财经商贸)-当代世界政治与经济历年参考题库含答案解析
- 2026年大学试题(计算机科学)-51单片微型机原理和接口教程历年参考题库含答案解析
- 2023-2024学年山东省青岛市高三(上)期初调研数学试卷
- 2026年泰安小升初数学小升初分班考卷:分班考全真模拟与附加题(重点高中联盟第1套)含参考答案、逐题解析与评分细则
- 2026年国家统一法律职业资格考试客观题试题及参考答案解析
- AI赋能银行风控:技术演进与实践路径
- 医疗纠纷责任认定课件
- 中学食堂员工培训课件
- 2025年军考真题试卷及答案
- 2025年人教版八年级英语上学期单词字帖(衡水体)
- 北体大网球专项课教学大纲
- 幼教培训课件:《如何做好班级家长工作》
- 高层住宅工程监理实施细则规范(全过程监理)
评论
0/150
提交评论