《毕业设计(论文)基于单片机的数字密码锁设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的数字密码锁设计.doc(36页珍藏版)》请在三一办公上搜索。
1、基于单片机设计的数字密码锁设计摘要在现代社会,电子密码锁已不是一个陌生的名词。本文中将要介绍的电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子锁装置。电子密码由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,它是一种通过密码输入来控制电路或是芯片工作,运用键盘输入、密码修改、密码检测、液晶显示电路、执行电路、报警电路来完成开锁、密码修改等任务。利用识别密码是否正确来开锁或报警。采用键盘输入的电子密码锁具有较高的优势。采用数字信号编码和二次调制方式,不仅可以实现多路信
2、息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。本文设计的密码锁具有安全性高、成本低、功耗低、易操作等优点,并且利用Keil编程工具进行编程,并在Proteus电路仿真软件中进行了设计仿真。关键词:AT89C51;单片机设计;密码锁;控制电路; The digital combination lock design based on single chip microcomputer AbstractIn the modern so
3、ciety, the electronic lock is not a strange noun. This paper will introduce an electronic lock, which is through the password input to control circuit or chips work, so as to control the closing or open of the mechanical switch, complete the lock that the task of electronic lock locking device. Elec
4、tronic lock, due to its high secrecy, good flexibility of use, high safety coefficient, is liked by the majority of customers.The design on the single chip computer AT89C51 as a combination lock monitoring device of the detection and control the core, it is a kind of through the password input to co
5、ntrol circuit or chips work, using the keyboard, and password changing, password detection, the lock circuit, executive circuit, alarm circuit, keyboard input frequency circuit to complete the lock, locking closure such tasks. Using password is correct recognition to replace or call the police. Thro
6、ugh the keyboard input number to realize the keyboard to lock the record. The keyboard input electronic lock has higher advantage. Adopting digital signal encoding and secondary modulation mode, not only can achieve more road information control and improve the signal transmission of anti-jamming, r
7、educe the wrong action, but also power consumption is low; Reaction speed is high,;and it is high transmission efficiency; it is stable on working,and so on. The software design uses top-down idea of modular design, which is in order to make the system be distributed, miniaturization, direction, and
8、 enhance the system configuration and the stability of the operation. In this paper,the design is high security locks, low cost, low power consumption, easy operation, etc.Keywords: AT89C51; The SCM design; Combination lock; Control circuit;第一章 绪论1.1 引言在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以
9、加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。根据本设计要求,通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁等任务。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的数字密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。其主要优点有:(1)保密性好,编码量多,远
10、远大于弹子锁。随机开锁成功率几乎为零。(2)密码可变。用户可以经常更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。(3)误码输入保护。当输入密码错误时,系统会报警。(4)操作简单易行,一学即会。1.2 课题的背景及意义随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格比显著提高,技术日趋完善。由于单片机具有体积小、重量轻、价格便宜、功耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用电器等各个领域均得到了广泛的应用。本设计利用单片机及附加器件实现数据采集和控制算法,来完成某一实际功能,检验并提高同学对整体电路设计和把握能力,了解单片机系统设计流
11、程,以及电路板的实际制作和调试能力。同时也加强对数字电路、单片机和微机原理等课程知识的实际应用能力,也为同类产品的进一步发展奠定理论和实践基础。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我国电子锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式
12、和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用1.3 电子密码锁发展趋势 电子密码锁应用于金融业,其根本的作用是“授权”,即被“授权”的人才可以存取钱、物。广义上讲,金融业的“授权”主要包括以下三种层次的内容:1、授予保管权,如使用保管箱、保险箱和保险柜;2、授予出入权,如出入金库、运钞车和保管室;3、授予流通权,如自动存取款。目前,金融行业电子密码锁的应用主要集中在前两个层面上。下面将介绍几种在金融行
13、业中使用较多的电子密码锁以及它们的技术发展方向。当然,以上所说的授权技术再高超,都必须由精良的“锁具”担当承载结构部件,实现开启、闭锁的功能,而且承担实体防护作用,抵抗住或尽量延迟破坏行为,让电子密码锁“软、硬不吃”。一般情况下,锁具防盗的关键是锁身外壳、闭锁的部件的强度、锁止型式、配合间隙和布局。提高电子密码锁之防护能力的必然途径是报警,在金融业的许多场所有人值守、有电视监控,具有报警功能,可以综合物理防范和人力防范两种作用。报警的前提是具备探测功能,根据电子密码锁的使用场所和防护要求,可选择多种多样的探测手段。在中国的城市金融业中,实现联网报警已经成为对各金融网点的基本要求。根据国内外的实
14、践经验,金融业实行安全防范风险等级很有必要,即依据使用的防盗报警器材的性能、安装布局和人员值守状况等,可以评估被防护物或区域的防护能力,得出风险等级,其中,电子密码锁的性能至关重要。由于数字、字符、图形图像、人体生物特征和时间等要素均可成为钥匙的电子信息,组合使用这些信息能够使电子密码锁获得高度的保密性,如防范森严的金库,需要使用复合信息密码的电子密码锁,这样对盗贼而言是“道高一尺、魔高一丈”。组合使用信息也能够使电子密码锁获得无穷扩展的可能,使产品多样化,对用户而言是“千挑百选、自得其所”。 第二章 总体设计方案2.1基于单片机的电子密码锁功能实现要求基于课题的任务要要求:1.具有密码输入功
15、能;2.设置初始化按键,以便重新输入密码;3.在液晶显示屏上显示结果;4.拒绝接收超规定次数的密码输入信号,并发出声音报警。本文的设计方法功能要求如下: (1)当系统启动时,LCD屏幕上显示Password_Lock D_Z_L,然后进入初始化界面,LCD上显示Intial. (2) 当初始化按键INTIAL按下时,系统进入密码输入部分,LCD上显示Input_Password:(3)为了防止密码被窃取要求在输入密码时在LCD屏幕上显示*号,并在。(4)为了提高密码锁的安全性,设置密码位数为8位数字,并且当每个按键按下时LED黄灯会闪下并且伴随按键输入音。(5)当密码输入正确时,能够在LCD上
16、显示:right! Select 1:open 2:modefy ,且LED红灯和黄灯均亮;当密码输入错误时,液晶屏显示:Password_Error! Try_again!_;LED黄灯熄灭,红灯闪烁,并报警。(6)密码输入正确时,进入系统,有两个选择,选择1时,LCD显示Unlock,代表开锁,同时黄灯闪烁报警;选择2时,可以进行密码更改,LCD上显示Input_modify:代表输入新密码。(7)43的矩阵键盘其中包括0-9的数字键、Enter输入功能键、CLR数字清除功能键。(8)密码可以由用户自己修改设定(只支持8位密码),在输入新密码时候需要二次确认,输入两次新密码,以防止误操作
17、。2.2 设计方案方案一:采用数字电路控制。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作。采用数字电路设计的方案好处就是设计简单但控制的准确性和灵活性差。故不采用。方案二:采用一种是用以AT89C51为核心的单片机控制方案。选用单片机AT89C51 作为本设计
18、的核心元件,利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,实现基本的密码锁功能。在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LCD显示器用于显示作用。其原理如下图2.1所示:图2.1 单片机控制密码锁原理图可以看出方案二控制灵活准确性好且保密性强还具有扩展功能,根据现实生活的需要此次设计采用此方案第三章 硬件设计单片机(SCM)是单片微型计算机(Single Chip Microcomputer)的简称。它是把中央处理器CPU、随机存储器RAM、只读存储器ROM、I/O接口电路、定时/计数器以及输入输出适配器都集成在一块芯片上,构成一个完整的微型计算机。随着
19、单片机在技术上、体系上不断扩展其控制功能,国际上已经采用MCU(Microcontroller Unit)代替单片机的名词。它的最大优点是体积小,可放在仪表内部。但存储量小,输入输出适配器简单,功能较低。目前,单片机在民用和工业测控领域得到最广泛的应用,早已深深地融入人们的生活中。近年来,51系列单片机在我国非常流行,它最大的特点是内部有可以多次重复编程的闪烁ROM,并且闪烁ROM可以直接用编程器来擦写,指令系统可兼容,方便程序的移植及系统的升级,使用起来比较方便。一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如ROMRAMI/O口定时/记数器中断系统
20、等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既要按照系统功能要求配置外围设备,如键盘显示器打印机A/D和D/A转换器等,又要设计合适的接口电路。3.1 AT89C51单片机的简介AT89C51是一种低功耗/低电压、高性能的八位CMOS单片机,片内有一个4KB的FLASH可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory),它采用了CMOS工艺和ATMEL公司的高密度非易失性存储器技术,而且其输出引脚和指令系统都与MSC51兼容。片内置通用8位中央处理器(CPU
21、)和FLASH存储单元,片内的存储器允许在系统内改编程序或用常规的非易失性存储器编程。因此,AT89C51是一种功能强、灵活性高且价格合理的单片机,可方便的应用于各种控制领域。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是用静态逻辑来设
22、计的,其工作频率可下降到零并提供两种软件的省电方式-空闲方式和掉电方式。在空闲方式中,CPU停止工作。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,只保存片内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输出原
23、码,此时P0外部必须被拉高。P1端口(P1.0-P1.7):P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高电平,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2端口(P2.0-P2.7):P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口,用于外部程序存储器或
24、16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。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口同时为闪烁编程和编程校验接收一
25、些控制信号。复位RST(9):复位输入。在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个引脚保持高电平,51芯片便循环复位。复位后P3.0-P3.7口均置1,引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位操作不会对内部RAM有所影响。ALE/(30):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地低位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出
26、的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如果想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,则置位无效。(29):外部程序存储器的选通信号。在由外部程序存储器取指令期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效的信号将不出现。EA/VPP(31):当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,将内部锁定为RESET;当端保持高电平时,此间内部程
27、序存储器。在FLASH编程期间,此引脚也用于施加12V的编程电源(VPP)。XTAL1(19):来自反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2(18):来自反向振荡器的输出。其引脚图如图3.1所示。图3.1 AT89C51引脚图3.2振荡器和时钟电路振荡器和时钟电路用于产生单片机正常工作时所需要的时钟信号,AT89C51单片机采用CMOS工艺,内部包含一个振荡器,可以用于CPU的时钟源;也允许采用外部振荡器,由外部振荡器产生的时钟信号来供内部CPU运行使用。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部
28、时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 图3.2 振荡器电路3.3 单片机复位电路单片机的复位是一个很重要的部分,复位是使单片机的CPU以及系统的各个部件处于特定的初始状态,并使系统从初始状态开始工作。一般在系统上电,或者程序死机的时候需要进行单片机的复位。单片机复位原理是,在时钟电路开始工作后,在单片机的RST引脚施加24个时钟振荡脉冲(即两个机器周期)以上的高电平,单片机便可以实现复位。在复位期间,单片机的ALE引脚和引脚均输出高电平。当RST引脚从高电平跳变为低电平后,单片机
29、便从0000H单元开始执行程序。本系统采用手动上电复位电路,这样可以人工复位单片机系统,如图3.4所示,当按下按键开关的时候,VCC通过一个电阻连接到RST引脚,给RST一个高电平;按键松开的时候,RST引脚恢复为低电平,复位完成。 图3.3 手动上电复位电路3.4 电源电路设计为了使系统能够持续供电,特使用市用220V电进行降压转换,转换成系统能够运用的5V直流电源。电源电路如图3.8所示:图3.4 电源电路原理图3.5 键盘电路设计在单片机应用系统中,一般都会设置键盘,主要为了控制运行状态,输入一些命令或数据,以完成特定的人机交互。键盘是与单片机进行人机交互的最基本的途径,其以按键的形式来
30、设置控制功能或输入数据,按键的输入状态本质上是一个开关量。对于简单的开关量的输入可以采用独立式按键,这种方法接口简单,但占用单片机I/O端口资源较多。对于输入参数较多、功能复杂的系统,需要采用矩阵式键盘进行输入控制。本系统采用4*3矩阵式键盘,键盘连接方式如图3.5所示:图3.5 键盘电路图3.6 液晶显示电路设计液晶显示器(LCD)是一种功耗很低的显示器,它的使用非常广泛,比如电子表、计算器、数码相机、计算机的显示器和液晶电视等。电子密码锁中需要显示的信息比较多,为了能直观的看到结果,并且为了设计显的美观,使用总线和排阻进行简化连接方式,本设计采用液晶显示屏LCD进行显示,具体连接方式如图3
31、.6所示。图3.6 液晶显示器电路3.7 存储芯片电路设计总线(Inter Intergrate Circuit BUS)全称为芯片间总线,它在芯片间以两根连线实现全双工同步数据传送,一条数据线(SDA)和一条串行时钟线(SDL),可以很方便地构成外围器件扩展系统。总线采用两线制,由数据线SDA和时钟线SCL构成,为了对数据进行存储,本系统使用串行EEPROM芯片,AT24C01系列是典型的串行总线的EEPROM,本系统采用此芯片进行数据存储,存储系统连接如图3.7所示:图3.7 总线和存储芯片连接电路图3.8 系统总体电路图 图3.8 系统总体电路图4 系统软件设计程序设计(Programm
32、ing)是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件也占有重要的地位。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。所谓“模块”,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。模块程序设计法的主要优点是:
33、(1)单个模块比起一个完整的程序易编写、调试及修改。(2)程序的易读性好。(3)程序的修改可局部化。(4)模块可以共存,一个模块可以被多个任务在不同条件下调用。(5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。本系统软件采用模块化结构,由键盘扫描子程序,存储服务子程序,显示子程序。4.1 键盘扫描程序设计本系统的程序功能采用线反转法来扫描查询4*3矩阵式键盘,如果有按键按下,则点亮发光二极管黄灯,其程序流程如图4.1所示。图4.1 键盘扫描子程序流程图键盘输入子程序如下:uchar key_scan() uchar temp,com; P3=0xf0; if(P3!=0xf0)
34、 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) case 0xee: com=1; Sound_QQ(220,40); break; case 0xed: com=2; Sound_QQ(240,60); break; case 0xeb: com=3; Sound_QQ(260,70); break; case 0xde: com=4; Sound_QQ(280,90
35、); break; case 0xdd: com=5; Sound_QQ(300,100); break; case 0xdb: com=6; Sound_QQ(320,80); break; case 0xbe: com=7; Sound_QQ(340,140); break; case 0xbd: com=8; Sound_QQ(270,110); break; case 0xbb: com=9; Sound_QQ(200,55); break; case 0x7e: com=0x0a; Sound_QQ(500,75); break; case 0x7d: com=0x00; Sound
36、_QQ(200,50); break; case 0x7b: com=0x0b; Sound_QQ(1000,45); break; default : break; return(com);4.2 总线和存储芯片程序设计 主要进行数据的读写操作,程序如下:bit SendB(uchar *s,uchar Address,uchar Number)/向IIC器件发送N个字节 ,发送成功,返回1uchar i;Start();Send(AddWr);if(ack=0)return(0);Send(Address);if(ack=0)return(0);for(i=0;iNumber;i+) Se
37、nd(*s); if(ack=0)return(0);s+; Stop();return(1);bit ReadB(uchar *s,uchar Address,uchar Number) /从IIC器件读出N个字节,并将所读的数据存入数组 uchar i;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;iNumber;i+)*s=Read();Cack(0);s+;*s=Read();Cack(1);S
38、top();return(1);4.3 LCD液晶显示子程序设计对液晶显示器进行程序设计,在LCD上显示的内容均编程,程序如下:void LCD_initial();void LCD_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;void LCD_clear(void) /LCD清屏 LCD_check_busy(); LCD_RS=0; LCD_RW=0; LCD_DATA=1; L
39、CD_EN=1; LCD_EN=0; void LCD_write_instruction(unsigned char LCD_instruction) /写指令到LCD LCD_check_busy(); LCD_RS=0; LCD_RW=0; LCD_DATA=LCD_instruction; LCD_EN=1; LCD_EN=0; void LCD_write_data(unsigned char LCD_data) /输出一个字节数据到LCD LCD_check_busy(); LCD_RS=1; LCD_RW=0; LCD_DATA=LCD_data; LCD_EN=1; LCD_E
40、N=0; void LCD_set_position(unsigned char x) /LCD光标定位到x处 LCD_write_instruction(0x80+x);void LCD_printc(unsigned char lcd_data) /输出一个字符到LCD LCD_write_data(lcd_data);void LCD_prints(unsigned char *lcd_string) /输出一个字符串到LCD unsigned char i=0; while(lcd_stringi!=0x00) LCD_write_data(lcd_stringi); i+; void
41、 Designer(void) uchar numb; LCD_initial(); LCD_set_position(0x10); LCD_prints(Password_Lock); LCD_set_position(0x53); LCD_prints(D_Z_L); for(numb=0;numb26;numb+) LCD_write_instruction(LCD_LEFT_MOVE ); Delayms(220); void Pass_init() LCD_initial(); LCD_set_position(0x05); LCD_prints(Initial!); LCD_set
42、_position(0x40);void Unlock(void) LCD_initial(); LCD_set_position(0x05); LCD_prints(Unlock!);void Again(void) LCD_initial(); LCD_prints(Re_Enter!); LCD_set_position(0x40);void Succeed(void) uchar numb1; LCD_initial(); LCD_set_position(0x10); LCD_prints(Success modified); for(numb1=0;numb116;numb1+)
43、LCD_write_instruction(LCD_RIGHT_MOVE ); Delayms(180); void Repeat(void) LCD_initial(); LCD_set_position(0x02); LCD_prints(Wrong!); LCD_set_position(0x44); LCD_prints(Repeat);void True() LCD_initial(); LCD_prints(right! Select:); LCD_set_position(0x40); LCD_prints(1:open_2:modify); void System() LCD_
44、initial(); LCD_prints(Input_Password:); LCD_set_position(0x40);void Modify() LCD_initial(); LCD_prints(Input_Modify:); LCD_set_position(0x40); void Error() LCD_initial(); LCD_prints(Password_Error!); LCD_set_position(0x42); LCD_prints(Try_again!);void LCD_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 延时子程序设计程序设计中都要用到时间函数,用来定时或者时间延时,程序如下: void Delayms(uchar a) uchar b,c; for(b=0;b