单片机电子密码锁_(可以修改设置密码)——基于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位密码),锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。

基于51单片机电子密码锁的课程设计_

基于51单片机电子密码锁的课程设计_

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

在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用显得日趋重要。

本文从经济实用的角度出发,系统由STC89C52与低功耗CMOS型E²PROM AT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、开锁等电路模块。

它能完成以下功能:正确输入密码前提下,开锁;错误输入密码情况下,报警;密码可以根据用户需要更改。

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

本密码锁具有设计方法合理,简单易行,成本低,安全实用,保密性强,灵活性高等特点,具有一定的推广价值。

关键词:电子密码锁;报警;液晶显示Design of Electric Password Lock Based on MCUAbstractAs people's living standards improve, the question how to achieve home security has become particularly prominent. In science and technology is developing continuously, electronic code lock as a security guard's role is increasingly important.This article from the economical point of view, the system by the STC89C52 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 performs the following functions: enter the password correctly under the premise of unlocking; wrong password case the alarm; password can be changed according to user needs. Master in C language control program and EEPROM AT24C02 chip to read and write process are combined and compiled with the Keil software, designed a number you can change the password, the password with an electronic alarm control system.The lock has a reasonable design, simple, low cost, safe and practical, confidentiality, flexibility, and high, with some promotional value.Key Words:Electric Password lock;Alarm; LCD Display目录引言 (8)第1章绪论 (9)1.1 电子密码锁的背景与研究意义 (9)1.2电子密码锁的现状及发展趋势 (9)1.3本章小结 (11)第2章系统整体方案设计 (12)2.1 设计目标 (12)2.2 主控部分的选择 (12)2.3 密码输入方式的选择 (12)2.4 本章小结 (13)第3章硬件系统设计 (14)3.1系统芯片介绍 (14)3.1.1单片机STC89C52功能介绍 (14)3.1.2 LCD1602显示器介绍 (15)3.1.3存储芯片AT24C02介绍 (16)3.1.4 I2C总线介绍 (16)3.2 硬件电路设计 (18)3.2.1 复位电路 (18)3.2.2 晶振电路 (19)3.2.3存储电路 (19)3.2.4 键盘输入电路 (20)3.2.5 显示电路 (21)3.2.6 电源输入电路 (22)3.2.7 报警电路 (22)3.2.8 开锁电路 (23)3.3 本章小结 (24)第4章软件程序设计 (25)4.1 主程序流程图 (25)4.2 按键软件设计 (25)4.2.1 按键功能程序流程图 (25)4.2.2 按键功能子程序 (26)4.3 密码设置软件设计 (27)4.3.1 密码设置程序流程图 (27)4.3.2 密码设置子程序 (28)4.4 开锁软件设计 (28)4.4.1 开锁程序流程图 (28)4.4.2 开锁功能子程序 (29)4.5 本章小结 (30)第 5 章系统仿真、调试及结论 (31)5.1 Proteus软件简介 (31)5.2 进入Proteus ISIS (31)5.3 工作界面 (31)5.4 各模块的电路图及说明 (33)5.4.1 电子密码锁系统主模块AT89C51单片机 (33)5.4.2 电子密码锁系统的键盘模块 (34)5.4.3 电子密码锁系统的显示模块 (34)5.4.4 电子密码锁系统的晶振复位电路 (35)5.4.5电子密码锁系统的掉电存储及报警电路 (35)5.4.6 电子密码锁系统的开锁电路 (35)5.4 本章小结 (36)结论与展望 (37)致谢 (38)参考文献 (39)附录A 密码锁电路原理图 (40)附录B 一篇引用的外文文献及其译文 (41)附录C 主要参考文献的题录及摘要 (47)附录D 主要C语言源程序 (49)插图清单图2- 1系统整体设计框图 (12)图3- 1 STC89C52引脚分布图 (14)图3- 2 AT24C02引脚图 (16)图3- 3开始结束信号图 (17)图3- 4复位电路原理图 (19)图3- 5晶振电路原理图 (19)图3- 6掉电存储电路原理图 (20)图3- 7键盘输入原理图 (21)图3- 8显示电路原理图 (22)图3- 9电源输入电路原理图 (22)图3- 10报警电路原理图 (23)图3- 11密码锁开锁机构示意图 (23)图3- 12开锁电路原理图 (24)图4- 1主程序流程图 (25)图4- 2按键功能流程图 (26)图4- 3密码设置流程图 (27)图4- 4开锁流程图 (29)图5- 1 Proteus启动时的屏幕 (31)图5- 2 Proteus ISIS的工作界面 (32)图5- 3 Proteus运行按键 (32)图5- 4 Proteus仿真图 (33)图5- 5 STC89C52单片机引脚图 (33)图5- 6键盘输入模块 (34)图5- 7密码显示模块 (34)图5- 8晶振及复位电路 (35)图5- 9掉电存储及报警电路 (35)图5- 10开锁电路 (36)表格清单表3-1 LCD1602引脚接口说明表 (8)表3-2 LCD1602基本操作程序 (15)引言在当今社会,安全防盗已成为社会问题,而锁自古以来就是防盗的重要工具,目前国内大部分人使用的还是传统的机械锁,然而,眼下假冒伪劣的机械锁互开率非常之高,此外,即使是一把质量过关的机械锁,通过急开锁,甚至可以在不损坏锁的前提下将锁打开。

基于51单片机的电子密码锁系统整体方案设计

基于51单片机的电子密码锁系统整体方案设计

基于51单片机的电子密码锁系统整体方案设计2.1设计目标2.1.1 设计方案这次的设计主要采用STC89C52单片机作为主控的芯片,而且和外围电路相结合,外围电路是由矩阵键盘,液晶显示器和密码存储这些部分组成的。

矩阵键盘就是用来输入代码和实现各种功能。

通过矩阵键盘输入的密码,再经过单片机对用户以前输入的密码和之前保存的密码进行比较,然后就判断密码的正确与否,最后就进行开锁和报警等各种其他功能。

这个电子密码锁是用STC89C52单片机为核心的芯片,然后配上相应的硬件电路,来完成密码的设置、存储和识别的功能,单片机接收键盘输入的代码,然后和以前保存的的六位密码进行比较,六位密码有298万多组密码可以供给人们进行随意的变换,保密性能特别高,可以选择的密码组是连续的进行排列的,如果输入的密码正确的话,就能进行开锁;如果输入的密码不正确,单片机就会通过通信线路向报警器发出报警的信号。

2.1.2 设计内容(1).密码输入正确可以选择打开或关闭密码锁(2).电子锁的密码有掉电保存的功能,用的是AT24C02芯片进行密码的保存。

(3).可以进行密码的修改(6位数的密码),在修改密码的前面要再次输入刚开始的密码,输入新的密码的时候要输入两次进行确认。

(4).还有报警和锁定键盘的功能,当输入密码错了3次,系统就会把键盘锁住一分钟而且还会有蜂鸣器的声音进行提示。

2.1.3基本内容(1)当输入密码错了3次,系统就会把键盘锁住一分钟而且还会有蜂鸣器的声音进行提示。

(2)矩阵键盘中有0-9的数字键和别的功能键(3)这个电子密码锁有报警的功能,当密码输入错误时候蜂鸣器就会响而且LED灯会亮。

(4)用户可以自己修改设定密码,在修改密码的前面要再次输入密码,在输入新的密码的时候要进行二次的确认。

2.2主控部分选用单片机为系统的核心部件,可以实现控制和处理作用。

单片机有很丰富的资源,快的速度,编程简单这些特点。

用单片机内部的随机存取存储器和只读存储器以及一些其它的引脚资源,用外部的液晶显示器和键盘的输入来进行传输数据和显示的功能,基本上可以达到设计指标。

基于51单片机的密码锁设计说明

基于51单片机的密码锁设计说明

基于AT89S51与AT24C02密码锁的设计(大学应用技术学院)目录前言 (1)第一章绪论 (2)第1.1节研究背景 (2)第1.2节电子密码控制简介 (2)第1.3节国外研究现状和发展趋势 (2)第1.4节本设计所要实现的目标 (3)第二章主要元器件介绍及IIC总线说明 (4)第2.1节主控芯片AT89S52 (4)2.1.1. 主要性能参数 (4)2.1.2. 功能特性概述 (4)2.1.3. 引脚功能说明 (5)2.1.4. 特殊功能寄存器 (6)第2.2节 AT24C02 (9)2.2.1. 性能 (9)2.2.2. 引脚功能描述 (10)第2.3节 LCD1602 (10)2.3.1. 接口信号说明 (11)第2.4节晶振振荡器 (11)第3章系统硬件构成 (12)第3.1节设计原理 (12)第3.2节电路总图构成 (13)3.2.1. 报警部分 (14)3.2.2. AT24C02存储部分 (14)3.2.3. 显示部分 (15)3.2.4. 复位电路 (15)3.2.5. 晶振部分 (16)3.2.6. 开锁电路 (16)3.2.7. 键盘输入模块 (17)第4章仿真设计 (18)第4.1节 Protues仿真软件概述 (18)第4.2节 Protues与Keil的连调 (18)第4.3节 Protues与Keil的连调的仿真结果 (19)第5章系统软件设计 (21)第5.1节主程序流程图 (21)第5.2节按键功能流程图 (21)第5.3节密码设置流程图 (22)第5.4节开锁流程图 (23)结论 (24)参考文献 (25)致谢 (26)附录 (27)附录1: 实物照片 (27)附录2: 部分源程序 (29)基于AT89S51与AT24C02密码锁的设计(大学应用技术学院)【摘要】:电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。

基于51单片机的密码锁(可改密码)

基于51单片机的密码锁(可改密码)

实习报告实习名称:单片机应用实习院(系)名称:电气与信息工程学院专业班级:xxxxxxxxx学生姓名:xxxxxx学号:xxxxxx指导教师:xxxxxxxxxx黑龙江工程学院教务处制2014年7月目录第1章总体设计方案 (4)1.1总体设计方案 (4)第2章硬件电路设计 (5)2.1单片机最小系统电路设计 (5)2.2液晶显示模块 (6)2.3键盘输入模块 (7)2.4 AT24C02密码存储模块 (8)2.5 系统供电电路设计 (9)2.6 蜂鸣器和继电器模块 (10)第3章系统软件设计 (11)3.1软件总体设计思路 (11)3.2主程序流程设计 (12)总结 (13)参考文献 (14)附录 (15)附录一 (15)附录二 (15)实习任务书学生姓名xxxx 系部电气与信息工程学院专业班级测控12-1指导教师姓名xxx 职称副教授讲师是否外聘□是否题目名称键盘式电子密码锁一、设计的内容、目的和意义本次实习是有关于键盘式电子密码锁的设计。

在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。

若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。

随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。

为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

密码锁具有安全性高、成本低、功耗低、易操作等优点。

本次实习的目的是实现电子密码锁的功能,并运用单片机技术设计一个结构简单,并且相对低成本的密码锁。

二、设计的技术指标要求1、研究方法(1)总体按照最优化的方法进行软件设计和硬件设计,走软件实现道路;(2)对软硬件进行模块划分,并对各单元电路结合EDA工具进行论证设计;(3)在查阅文献基础上展开设计,力求创新。

2、技术要求(1)采用6位密码(2)报警、锁定键盘功能。

(完整版)单片机电子密码锁 (可以修改设置密码)——基于51单片机毕业论文

(完整版)单片机电子密码锁 (可以修改设置密码)——基于51单片机毕业论文

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

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

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

程序代码为:#include<reg51.=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); }{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();}{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;}}}。

基于51单片机的PS2键盘1602显示24c02存储的密码锁设计(附程序)

基于51单片机的PS2键盘1602显示24c02存储的密码锁设计(附程序)

基于51单片机的PS2键盘密码锁设计摘要:AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash 存储器,被广泛应用于各个领域。

LCD1602液晶显示器以其微功耗、体积小、超薄轻巧等诸多优点而备受人们喜爱。

本作品是以AT89S52作为主控芯片,LCD1602作为显示器,以PS2键盘作为输入设备的密码锁。

PS2键盘与AT89S52通过PS2接口协议进行通信,可以完成密码设置,密码重置及显示等诸多功能。

本作品还使用了24C02存储器来实现密码锁的掉电保存功能。

关键词:AT89S52;LCD1602;24C02;PS2键盘Abstract:AT89S52 is a low power,high performance CMOS 8 bit microcontroller, with 8K flash memory, is widely applied in various fields. LCD1602 liquid crystalDisplay with its low power consumption, small size, thin lightweight and many other advantages, is liked by people.This work is based on the AT89S52 as the main chip, the LCD1602 as display, PS2 keyboard as an input device of the cipher lock. PS2 keyboard and AT89S52 through PS2 interface protocolFor communication, can complete password, password reset and display and other functions. This work we also used the 24C02 memory to realize the password lock the power-down save function.Keywork: A T89C52; LCD1602; 24C02;PS/2 keyboard1 实验目的及意义在单片机系统中,经常使用的键盘都是专用键盘.此类键盘为单独设计制作的,成本高、使用硬件连接线多,且可靠性不高,这一状况在那些要求键盘按键较多的应用系统中更为突出.与此相比,在PC系统中广泛使用PS/2键盘具有价格低、通用可靠,且使用连接线少(仅使用2根信号线)的特点,并可满足多种系统的要求.因此在单片机系统中应用PS/2键盘是一种很好的选择.对于单片机初学者的我而言,AT89S52简单易学,非常适合我学习。

基于AT24C02的简易电子密码锁说明书

基于AT24C02的简易电子密码锁说明书

湖南理工学院单片微机原理课程设计说明书设计题目:基于AT24C02的简易电子密码锁院部:机械学院专业:机械电子工程组长姓名: 学号:组员姓名:学号:学号:学号:起迄日期: 2016 年 6月19日 2016 年 6月 30日指导教师:教研室主任:目录1 引言、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、41、1 电子密码锁简介、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、41、2 电子密码锁的发展趋势、、、、、、、、、、、、、、、、、、、、、、、、、、41、3 本设计所要实现的目标、、、、、、、、、、、、、、、、、、、、、、、、、、52 设计方案的选择、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、52、1 方案一:采用数字电路控制方案、、、、、、、、、、、、、、、、、、52、2 方案二:采用无线遥控方式控制方案、、、、、、、、、、、、、、52、3 方案三:采用以单片机为核心的控制方案、、、、、、、、、、53 主要元器件介绍、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、63、1 主控芯片AT89S51、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、63、1、1 AT89S51性能简介、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、63、1、2 AT89S51引角功能说明、、、、、、、、、、、、、、、、、、、、、、、、、、3、2 存储芯片AT24C02、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、93、3 LCD1602显示器、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、103、3、1 接口信号说明、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、103、3、2 主要技术参数、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、113、3、3 基本操作程序、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、113、4 晶体振荡器、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、124 系统硬件构成、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、124、1 设计原理、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、124、2 电路总体构成、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、134、3 键盘输入部分、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、134、4 密码存储部分、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、144、5 复位部位、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、4、6 晶振部分、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、154、7 显示部分、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、154、8 报警部分、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、17错误!未定义书签。

基于AT24C02电子密码锁的设计

基于AT24C02电子密码锁的设计

单片机应用课程设计设计题目:基于AT24C02电子密码锁的设计目录1 设计任务........................ 错误!未定义书签。

2 系统总体方案设计................ 错误!未定义书签。

2、1各个模块方案论证............ 错误!未定义书签。

2、1、1 芯片选择............... 错误!未定义书签。

2、1、2 显示器的选择........... 错误!未定义书签。

2、2总体方案设计................ 错误!未定义书签。

3 硬件电路设计.................... 错误!未定义书签。

3、1单片机最小系统.............. 错误!未定义书签。

3、2AT24C20储存密码电路........ 错误!未定义书签。

3、3矩阵键盘电路 (6)3、4液晶显示电路 (6)4 系统软件设计.................... 错误!未定义书签。

4、1主程序流程图 (7)4、2子程序流程图 (8)4、2、1 AT24C20子程序流程图 (8)4、2、2 1602子程序流程图 (9)5实物调试........................ 错误!未定义书签。

5、1实性物能分析 (9)6心得体会........................ 错误!未定义书签。

附录1 ............................ 错误!未定义书签。

(1)系统总电路图 (15)(2)系统仿真图 (15)附录2 ............................ 错误!未定义书签。

(1)程序清单 ..................... 错误!未定义书签。

1.设计任务基本要求:采用AT24C02与单片机STC89C52相结合设计电子密码锁,然后通过矩阵键盘按键进行密码的输入、清除、更改、开锁等功能。

2.系统总体方案设计2.1各个模块方案讨论2.1.1芯片选择由于设计的就是电子密码锁,而单片机AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。

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

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

基于51单片机的电子智能密码锁
李长灏;杨帆;马如龙;刘航;李伟;周慧
【期刊名称】《电脑知识与技术:学术版》
【年(卷),期】2022(18)12
【摘要】电子智能密码锁,是代指一类可以经过操控电子电路或控制器的内部操控芯片,从而达到操控电子密码锁的机械锁芯开关或闭合的电子设备。

其类型上既有
结构相对简单的集成电路产品,又有大量应用集成电路晶片的高价格比的电子设备,
但现在,在市场上使用比较普遍的就是以芯片为内核的电子密码锁,应用了C语言程序设计,将程序烧录进芯片中,再联系各个模组完成开锁的智能电子密码锁。

本次研
究中以STC89C52单片机作为系统核心,结合矩形键盘电路、指纹模组、蓝牙模组、LED数码管显示电路等,利用单片机其灵活编程能力以及丰富的I/O端口,对整个系统进行控制。

本次项目研究设计方法合理、成本极低、简单易行、安全实用等特点,具有可持续发展的空间。

【总页数】3页(P81-83)
【作者】李长灏;杨帆;马如龙;刘航;李伟;周慧
【作者单位】甘肃农业大学信息科学技术学院
【正文语种】中文
【中图分类】TP391
【相关文献】
1.基于51单片机和无线通信的红外智能密码锁设计
2.基于51单片机的指纹电子密码锁的设计与实现
3.基于51单片机的智能语音密码锁设计
4.基于51单片机的电子密码锁设计与应用研究
5.基于STC89C51单片机的电子密码锁设计
因版权原因,仅展示原文概要,查看原文内容请购买。

  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;}}}。

相关文档
最新文档