单片机电子密码锁_(可以修改设置密码)——基于51单片机与AT24C02与LCD1602显示

合集下载

基于单片机的电子密码锁的设计27...

基于单片机的电子密码锁的设计27...

基于单片机电子密码锁的设计摘要:随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出。

由于传统机械锁存在构造简单,钥匙互开容易等不安全因素;使得家庭的安全性与保密性降低。

电子锁由于其保密性高,使用灵活性好,安全系数高,显得日趋重要。

本设计以单片机A T89C51与低功耗CMOS型E²PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、开锁等电路模块。

它具有以下的功能:输入密码正确,实现开锁;输入密码错误三次以上,报警;可以根据用户需求更改密码。

本设计用用Keil软件进行编译,C51语言编写主控芯片控制程序与EEPROMAT24C02读写程序相结合,设计出一款可以更改密码,并且具有报警功能的电子密码控制系统。

软件设计采用自上而下的模块化设计思想,增强系统的可扩展性和运行的稳定性,使系统朝着分布式、小型化方向发展。

本密码锁具有一定的推广价值。

关键词:单片机;A T89C51;密码锁;报警;液晶显示Microcontroller-based Design Of Electronic LocksAbstract: With the improvement of social science and the living level of people, how to realize the family anti-theft,this problem also become particularly prominent. Because of the traditional mechanical lock has e many unsafe factors,such as simple structure, easy open; Reduces the security and privacy of family. Electronic lock is increasingly important,because of its high confidentiality, use good flexibility, high safety coefficient.This system by theAT89C51 with low power CMOS based E ² PROM AT24C02 as the master chip and the data memory unit, combined with the external keyboard, LCD display, alarm, unlock and other circuit modules. It has the following features: enter the password correctly under the premise of unlocking; Input wrong password more than three times case the alarm; password can be changed according to user needs.This design use Keil software to compile,Master in C language control program and EEPROM AT24C02 chip to read and write process are combined.designed a number you can change the password, the password with an electronic alarm control system.The software design adoption the design thought from top to bottom, strengthen the system and can expand the stability and circulate,to make the system toward wear distribute type,turn to the direction development of small.The lock has some promotional value.Keywords: singlechip; AT89C51;cryptogram lock;alarm; LCD目录摘要 (i)Abstract (i)目录 (iii)1绪论 (1)1.1单片机的应用领域 (2)1.1.1智能仪器仪表 (2)1.1.2工业控制 (2)1.1.3家用电器 (2)1.1.4计算机网络和通信 (2)1.1.5医用设备 (2)1.1.6大型电器 (3)1.2课题的目的和意义 (3)1.2.1选题目的 (3)1.2.2选题意义 (3)1.3国内外研究现状与水平 (3)1.4发展趋势 (4)1.5本设计特点 (4)2分析 (5)2.1方案选择 (5)2.2总体设计思路 (5)2.2.1系统实现功能 (5)2.2.2系统运行过程 (6)2.2.3系统总设计结构图 (6)2.3主要元器件介绍 (7)2.3.1AT89C51介绍 (7)2.3.2LCD1602显示器介绍 (9)2.3.3存储芯片AT24C02介绍 (10)2.3.4I2C总线介绍 (11)2.3.5矩阵键盘介绍 (13)3设计 (14)3.1硬件设计 (14)3.1.1单片机的晶振、复位电路 (14)3.1.2键盘输入电路 (15)3.1.3显示电路 (16)3.1.4存储电路 (17)3.1.5报警电路 (17)3.1.6开锁电路 (18)3.1.7生成电路图 (18)3.1.8元器件采购 (19)3.2软件设计 (19)3.2.1主程序 (19)3.2.2键盘扫描程序 (23)3.2.3密码修改程序 (26)3.2.4LCD显示程序 (28)3.2.5延时程序 (30)3.2.6中断程序 (31)3.3调试程序 (32)3.3.1Proeus 软件介绍 (32)3.3.2Keil C51软件介绍 (32)3.3.3Proteus 软件与Keil uVision 的结合 (32)4结论 (34)致谢 (2)参考文献 (3)1 绪论随着新技术的不断开发与应用,日常生活中住宅的安全防范以及一些个人资料的保存等一系列安全防盗问题已成为社会普遍关注的问题。

毕业设计(论文)-基于51单片机控制的电子密码锁设计

毕业设计(论文)-基于51单片机控制的电子密码锁设计

基于51单片机控制的电子密码锁设计摘要:本设计以单片机以AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构,实现要是信息在主机的初步认证注册、密码信息的加密、钥匙丢失报废等功能。

根据51单片机之间的串行通信原理,这便对于密码信息的随机加密和保护。

而且采用键盘输入的电子密码锁具有较高的优势。

采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。

软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统可扩展性和运行的稳定性。

测试结果表明,本系统各功能已达到本设计的所有要求。

关键词:AT89C51;密码锁;单片机设计;电子锁目录摘要 (1)关键词 (1)第一章密码锁的简介及现况 (1)1.1引言 (1)1.2电子密码锁的简介 (1)1.3电子密码锁发展趋势 (2)1.4本设计所要实现的目标 (2)1.5设计的密码锁的功能 (2)第二章设计方案的选择 (3)2.1方案的论证与比较 (3)第三章单片机的组成 (4)3.1AT89C51单片机的简介 (4)3.2电路图的绘制 (7)第四章单片机硬件资源 (7)4.1开锁机构 (7)4.2按键电路设计 (8)4.3显示电路设计 (10)4.4AT89C51单片机复位方式 (11)4.5密码锁的电源电路设计 (12)第五章程序调试 (13)5.1程序调试用到的软件及工具 (13)5.2KEIL C51简介 (14)5.3调试过程 (14)5.4调试、仿真与实现 (15)第六章软件设计 (16)6.1系统软件设计的总统思想 (16)6.2各子程序设计 (17)1 键盘扫描子程序 (17)2 LED显示子程序 (18)3 密码比较和报警程序 (19)设计总结与展望 (21)致谢 (22)附录:总原理图 (22)参考文献 (24)第一章密码锁的简介及现况1.1引言在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。

基于51单片机的指纹密码锁设计(2021年整理)

基于51单片机的指纹密码锁设计(2021年整理)

基于51单片机的指纹密码锁设计(word版可编辑修改)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(基于51单片机的指纹密码锁设计(word版可编辑修改))的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为基于51单片机的指纹密码锁设计(word版可编辑修改)的全部内容。

基于51单片机指纹电子密码锁设计摘要随着人民生活水平的提高,如何实现家庭防盗这一问题也变得尤其突出,传统的机械锁由于其构造简单,安全性低,无法满足人们的需求.随着电子产品向智能化和微型化的不断发展,单片机已成为电子产品研制和开发中首选的控制器,所以具有防盗报警功能的电子密码锁控制系统逐渐代替传统的机械式密码控制系统,克服了机械式密码锁控制的密码量少,安全性能差的缺点.在传统的身份认证中,我们往往使用密码加密法,但是这种方法只是"防君子不防小人"。

在高明的黑客眼里,由几个字符组成的密码脆弱得不堪一击。

现在,科技的发展让我们有了新的选择—-生物识别技术。

将生物识别技术应用于笔记本、门锁等方面,可以对文件、财产起保护作用,并且可以进行身份识别。

生物识别技术的发展主要起始于指纹研究,它亦是目前应用最为广泛的生物识别技术。

本设计开发了一款基于单片机的指纹识别电子密码锁系统。

该系统以STC89C52单片机作为模块核心,通过串口通信控制ZFM-60指纹模块实现录取指纹并存储指纹数据,并通过HS12864—15C液晶显示比对流程及比对结果,辅以直流继电器与发光二极管模拟开锁的动作。

本系统具有体积小、性价比高、传输速度快、适合家庭及单位使用。

关键词:单片机,密码锁,指纹识别51 single fingerprint-based electronic codelock designABSTRACTWith the improvement of people’s living standards, how to achieve family security issue has become particularly prominent, the traditional mechanical locks because of its simple structure,low security, can not meet people’s needs. As electronic products to intelligent miniaturized and the continuous development of SCM has become the electronic product research and development preferred controller, the electronic lock control system with anti—theft alarm function gradually replace the traditional mechanical control systems with code, overcome password less, poor safety performance shortcomings of mechanical lock control.In traditional identity, we tend to use password encryption method, but this method only ”anti—anti—villain is not a gentleman。

基于51单片机的电子密码锁

基于51单片机的电子密码锁

电子密码锁一、工作原理本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O 线的数目,在按键比较多的时候,通常采用这样方法。

每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N ×M个按键的键盘。

在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。

4×4矩阵键盘的工作原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图5所示。

在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。

这样,一个端口(如P1口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。

由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

扫描原理把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。

由于这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,为了避免让8051误判为多次输入同一按键,我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,就可以让键盘的输入稳定。

利用51单片机设计一个用16个按键输入,6位数字输出显示的电子时钟。

如图1-1所示。

图1-1按键分布图具体要求和按键功能介绍如下:1. 上电后,6 位数码管显示“—”;2. 设置6 位密码,密码通过键盘输入,按“确定”键确认,如密码正确,将锁打开;3. 密码由用户自己设定,若密码正确即锁被打开,则指示灯被点亮;4. 若密码1 次输入错误,则报警;5. 按Set 键,修改密码;6. 按Cle 键可清除已输入的密码,重新进行输二、系统硬件组成本次设计的主要有键盘,数码管,STC89C52芯片,以及LED灯。

基于单片机的电子密码锁设计

基于单片机的电子密码锁设计

基于单片机的电子密码锁设计摘要:本文介绍了以AT89C51单片机为核心与AT24C02E2PROM存储器构成的简单电子密码锁的设计,它具有设定密码、门铃呼叫、限制密码输入错误次数和报警等功能。

文章主要介绍了利用单片机实现电子密码锁的设计思路和一般方法,从电子密码锁的基本构成单元入手,着重介绍了单片机电子密码锁的系统功能和结构框图、硬件电路设计思路和软件设计思路。

关键词:AT89C51;AT24C02E2PROM;电子密码锁中图分类号:TP3191 引言随着人们生活水平的不断提高,如何实现家庭防盗这一问题也变得尤为突出,传统的机械锁由于其构造简单、极易磨损,被撬的事件屡见不鲜,但由于电子锁的保密性高,使用灵活性好,安全系数高,越来越受到广大用户的青睐。

在日常生活中,能谈得上实用一些或者大众化一些的还是按键式电子密码锁。

以AT89C51单片机为核心与AT24C02 E 2PROM存储器构成的电子密码锁,实用、功能灵活多样,采用6位密码控制(可以扩展至多位),由于单片机不具备掉电保护功能,因而,采用AT24C02来存储用户密码信息,它具有掉电后密码信息可以保存功能,可以广泛地应用在各种防盗场所。

2 整体设计方案2.1 系统组成框图基于单片机的电子密码锁的系统组成框图,如图1所示。

由控制模块AT89C51、AT24C02 E 2PROM存储器模块、本系统采用AT89C51单片机作为本设计的核心元件。

利用共阳极数码管作为显示器件,用于开机时显示提示信息和工作时显示密码提示信息或实时时钟显示。

另外,采用AT24C02 E 2PROM存储器来存储用户密码信息,它具有掉电后保存密码信息功能。

2.2 基本功能介绍(1)密码设置:初始密码通过密码修改程序用单片机写入E 2PROM存储器。

(2)密码修改:当需要修改密码时,先输入原始密码,单击确认按钮后,系统先进行密码校验,如果正确则显示“OK”,输出指示灯点亮,然后输入新的6位数密码,再单击确认按钮,完成密码修改。

基于51单片机开发板的智能密码锁

基于51单片机开发板的智能密码锁
else if((KeyValue==13)&&(bc==1)) {
for(i=0;i<4;i++) { At24c02Write(i+2,SRZ[2*i]+SRZ[2*i+1]*10); } for(i=0;i<8;i++) { rr[i]=SRZ[i]; SRZ[i]=0; DisplayData[i]=0x00; } bc=0; }
if(KeyState==1) {
if(KeyValue<10)
{ SRZ[7]=SRZ[6]; SRZ[6]=SRZ[5]; SRZ[5]=SRZ[4]; SRZ[4]=SRZ[3]; SRZ[3]=SRZ[2]; SRZ[2]=SRZ[1]; SRZ[1]=SRZ[0]; SRZ[0]=KeyValue;
an=0; } } }
void Delay1ms(int c) { unsigned char aa,b;
for(;c>0;c--) for(b=38;b>0;b--) for(aa=13;aa>0;aa--);
}
void FMQCX(void) { for(d=0;d<200;d++) { FMQ=0; Delay1ms(1); FMQ=1; Delay1ms(1); } }
else {
FMQCX(); } KeyState=0; }
if(ld<5000) { LED7=0; sz=1; Delay1ms(1); } else { LED7=1; sz=0; } SMGXC(); } }
void SMGXC(void) { unsigned int j;
for(i=0;i<8;i++) {

基于51单片机的电子密码锁设计与应用研究

基于51单片机的电子密码锁设计与应用研究

基于51单片机的电子密码锁设计与应用研究基于51单片机的电子密码锁设计与应用研究摘要:随着科技的不断发展,电子密码锁在我们的日常生活中被广泛应用。

本文以51单片机为核心,对电子密码锁进行了设计与研究。

通过对电子密码锁的原理、组成部分及其在实际应用中的优点进行了探讨,并详细介绍了设计过程和程序实现。

利用51单片机的高性能、低功耗和强大的扩展性,成功实现了电子密码锁的设计与应用。

实验结果表明,该电子密码锁具有良好的安全性和可靠性,可以满足人们对安全性的需求。

关键词:51单片机;电子密码锁;设计;应用;安全性引言随着信息技术和智能化的快速发展,电子密码锁作为一种安全可靠的门禁控制系统,已经在社会生活中得到广泛应用。

相比于传统的钥匙锁而言,电子密码锁具有更高的安全性、更方便的使用特点,成为现代化社会安全管理的重要组成部分。

51单片机作为一种常用的微控制器,具有高性能、低功耗、价格经济等优点,因此被广泛应用于电子密码锁的设计和研究中。

本文旨在通过基于51单片机的电子密码锁的设计与应用研究,探讨电子密码锁的工作原理、设计流程和实现方法,并对其在实际应用中的优势进行分析。

一、电子密码锁的原理与组成部分电子密码锁是一种基于数字电子技术的门禁控制系统,主要由输入模块、控制模块和输出模块组成。

1. 输入模块:输入模块主要用于输入开锁密码。

一般来说,输入模块可以使用按键、密码键盘、触摸屏等方式。

在本设计中,我们选择了密码键盘作为输入模块。

2. 控制模块:控制模块主要负责接收输入的密码并进行处理,判断是否正确并控制锁的开关状态。

51单片机就是一个常用的控制模块。

3. 输出模块:输出模块用于将控制模块的指令转化为实际操作,控制锁的开关或者报警功能。

一般来说,输出模块可以使用电磁铁、继电器、蜂鸣器等设备。

在本设计中,我们采用了电磁铁作为输出模块。

二、电子密码锁的设计过程1. 硬件设计电路连接:将密码键盘的输出与51单片机的输入口相连,将电磁铁与51单片机的输出口相连。

基于51单片机的简易电子密码锁

基于51单片机的简易电子密码锁
3、报警、锁定键盘功能。密码输入错误显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。
4、AT24C02保存密码,支持复位保存,掉电保存功能。
二、按键说明
按键定义图
如图示:采用4X4键盘输入,键盘对应名称如下:
1 2 3 A
4 5 6 B
7 8 9 C
* 0 # D
其中,【0—9】为数字键,用于输入相应的密码,
2、退出并关锁:按下【*】(取消)键,此时锁关闭,所有输入清除。
3、修改密码:在开锁状态下,再次输入正确的密码并按下【#】(确认)键,此时听到两声提示,输入新的六位密码并按【D】(重设)键,再重复输入一次新密码并按【D】,会听到两声提示音,表示重设密码成功,内部保存新密码并存储到AT24C02。(如两次输入的新密码不一样,则重设密码失败)。
【*】号键为取消当前操作
【#】号键为确认
【D】键为修改密码
其它键无功能及定义
三、作用说明:
密码锁初始密码为:000000.
1、开锁:插上电源后,程序自动调入初始密码,此时依次输入:000000,然后按【#】(确认)键,此时锁会打开,可以看到显示open,密码锁打开。(如为自己焊接,请首次使用输入:131420,对密码进行初始化,当显示出现:initpassword,证明密码初始化完成,此时初始密码即为:000000)。
DC电源座1只
自锁开关1只
4.7K色环电阻6只
5V继电器1只
蜂鸣器1只
三极管S85502只
发光二极管红绿各1只(共2只)
导线若干
USB电源线1条
一、实现功能:
1、设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。
2、密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机电子密码锁(可以修改设置密码)——基于51单片机与AT24C02与LCD1602显示其电路图连接如下:本人已经用硬件实验,程序可用。

正确~~本程序特点:装载后读者可以自改密码,然后需要再次载入程序时:可以把主程序aa=Sendstring(0xa0,1,table2,6);这一句去掉。

然后程序的电子锁密码就是你个人设置的密码。

程序代码为:#include<reg51.h>#include<string.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int#define LCDIO P2#define delay4us() _nop_();_nop_();_nop_();_nop_();uchar buffer[6]={0};sbit sda=P3^7;sbit scl=P3^6;sbit beep=P3^5;bit flag=0,aa; //用户蹲渊义定时溢出标志位uchar DSY_BUFFER[16]=" ";uchar DSY_BUFFER1[16]=" ";uchar Userpassword[6]={0};sbit rs=P0^4;sbit rd=P0^3;sbit lcden=P0^2;sbit led=P3^0;uchar code table2[]="123456";uchar code table[]="Your Password...";void delayms(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void delay() //短延时,两个机器周期,做总线的延时用{;;}void write_com(uchar com){rs=0;rd=0;lcden=0;P2=com;delayms(3);lcden=1;delayms(3);lcden=0;}void write_date(uchar date){rs=1;rd=0;lcden=0;P2=date;delayms(3);lcden=1;delayms(3);lcden=0;}void Display_String(uchar *p,uchar com){ uchar i;write_com(com);for(i=0;i<16;i++){write_date(p[i]);}}void init_lcd(){lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);Display_String(table,0x80);Display_String("Lock OK! ",0xc0); }void start(){sda=1;scl=1;delay4us();sda=0;delay4us();scl=0;}void stop(){sda=0;scl=1;delay4us();sda=1;delay4us();scl=0;}void init() //初始化{sda=1;delay();scl=1;delay();}void ack(){sda=0;scl=1;delay4us();scl=0;sda=1;}void noack(){sda=1;scl=1;delay4us();scl=0;sda=0;}uchar recbyte(){uchar i,rd;rd=0x00;sda=1;for(i=0;i<8;i++){scl=1;rd<<=1;rd|=sda;delay4us();scl=0;delay4us();}scl=0;delay4us();return rd;}uchar sendbyte(uchar wd) {uchar i;bit ack0;for(i=0;i<8;i++){sda=(bit)(wd&0x80);_nop_();_nop_();scl=1;delay4us();scl=0;wd<<=1;}delay4us();sda=1;scl=1;delay4us();ack0=!sda;scl=0;delay4us();return ack0;}uchar Recstring(uchar slave,uchar subaddr,uchar *buffer,uchar n) {uchar i;start();if(!sendbyte(slave)) return 0;if(!sendbyte(subaddr)) return 0;start();if(!sendbyte(slave+1)) return 0;for(i=0;i<n-1;i++){buffer[i]=recbyte();ack();}buffer[n-1]=recbyte();noack();stop();return 1;}uchar Sendstring(uchar slave,uchar subaddr,uchar *buffer,uchar n) {uchar i;start();if(!sendbyte(slave)) return 0;if(!sendbyte(subaddr)) return 0;for(i=0;i<n;i++){if(!sendbyte(buffer[i])) return 0;}stop();return 1;}void clear_password(){ uchar i;for(i=0;i<6;i++){Userpassword[i]=' ';}for(i=0;i<16;i++){DSY_BUFFER[i]=' ';}}uchar Keys_Scan(){uchar temp,keynum;P1=0x0F;delayms(5);temp=P1^0x0F;switch(temp){case 1:keynum=0;break;case 2:keynum=1;break;case 4:keynum=2;break;case 8:keynum=3;break;break;}P1=0xF0;delayms(5);temp=P1>>4^0x0F;switch(temp){case 1:keynum+=0;break;case 2:keynum+=4;break;case 4:keynum+=8;break;case 8:keynum+=12;break;break;}delayms(600);return keynum;}void main(){ uchar temp,i=0,j=0,k=0,n;uchar IS_valid_user;beep=1;init();init_lcd();delayms(5);aa=Sendstring(0xa0,1,table2,6);delayms(5);aa=Recstring(0xa0,1,buffer,6);delayms(10);P1=0x0f;while(1){if(P1!=0x0f){temp=Keys_Scan();switch(temp){case 0: case 1: case 2: case 3: case 4:case 5: case 6: case 7: case 8: case 9:if (i<=5) //密码限制在6位以内{Userpassword[i]=temp;DSY_BUFFER[i]='*';Display_String(DSY_BUFFER,0xc0);i++;}break;case 10: //按A键开锁for(k=0;k<6;k++){if(buffer[k]==(Userpassword[k]+48))flag=1;elseflag=0;}if (flag==1){ flag=0;i=0;led=0; //点亮LEDclear_password();Display_String("OPEN OK! ",0xc0);IS_valid_user = 1;j=0;}else{j++;led=1; //关闭LEDclear_password();Display_String("ERROR!Have try ",0xc0);write_com(0xcf);write_date(0x30+j);IS_valid_user=0;}i=0;break;case 11: //按B键上锁led=1;clear_password();Display_String(table,0x80);Display_String("Lock OK! ",0xc0);i=0;IS_valid_user=0;break;case 12: //按C键设置新密码//如果是合法用户则提示输入新密码if ( !IS_valid_user){i=0;Display_String("No rights ! ",0xc0); delayms(1000);Display_String("Your Password...",0x80); Display_String("Lock OK! ",0xc0); }else{i=0;Display_String("New Password: ",0x80);Display_String(" ",0xc0);}break;case 13: //按D键保存新密码if ( !IS_valid_user){ i=0;Display_String("No rights ! ",0xc0);delayms(1000);Display_String("Your Password...",0x80);Display_String("Lock OK! ",0xc0);}else{i = 0;init();delayms(5);for(k=0;k<6;k++){Userpassword[k]=Userpassword[k]+48;}aa=Sendstring(0xa0,1,Userpassword,6);delayms(5);aa=Recstring(0xa0,1,buffer,6);delayms(5);clear_password();Display_String(table,0x00);Display_String("Password Saved! ",0xc0);delayms(1000);Display_String("Do lock agian ? ",0xc0);}break;case 14: //按E键消除所有输入i=0;clear_password();Display_String(" ",0xc0);break;case 15: //清除一位if(i!=0)i--;for(n=0;n<i;n++){DSY_BUFFER1[n]='*';}Display_String(DSY_BUFFER1,0xc0);}P1=0x0f;}if(j==3){ Display_String("THIEF!!!THIEF!!!",0xc0);j=0;beep=0;}}}。

相关文档
最新文档