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

上传人:b****7 文档编号:15304497 上传时间:2023-07-03 格式:DOCX 页数:46 大小:999.21KB
下载 相关 举报
基于单片机的电子密码锁设计.docx_第1页
第1页 / 共46页
基于单片机的电子密码锁设计.docx_第2页
第2页 / 共46页
基于单片机的电子密码锁设计.docx_第3页
第3页 / 共46页
基于单片机的电子密码锁设计.docx_第4页
第4页 / 共46页
基于单片机的电子密码锁设计.docx_第5页
第5页 / 共46页
基于单片机的电子密码锁设计.docx_第6页
第6页 / 共46页
基于单片机的电子密码锁设计.docx_第7页
第7页 / 共46页
基于单片机的电子密码锁设计.docx_第8页
第8页 / 共46页
基于单片机的电子密码锁设计.docx_第9页
第9页 / 共46页
基于单片机的电子密码锁设计.docx_第10页
第10页 / 共46页
基于单片机的电子密码锁设计.docx_第11页
第11页 / 共46页
基于单片机的电子密码锁设计.docx_第12页
第12页 / 共46页
基于单片机的电子密码锁设计.docx_第13页
第13页 / 共46页
基于单片机的电子密码锁设计.docx_第14页
第14页 / 共46页
基于单片机的电子密码锁设计.docx_第15页
第15页 / 共46页
基于单片机的电子密码锁设计.docx_第16页
第16页 / 共46页
基于单片机的电子密码锁设计.docx_第17页
第17页 / 共46页
基于单片机的电子密码锁设计.docx_第18页
第18页 / 共46页
基于单片机的电子密码锁设计.docx_第19页
第19页 / 共46页
基于单片机的电子密码锁设计.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《基于单片机的电子密码锁设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子密码锁设计.docx(46页珍藏版)》请在冰点文库上搜索。

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

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

 

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

姓名:

---

班级:

---

学号:

---

指导教师:

---

 

2021年2月27日

摘要

随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,安全性能低,无法满足人们的需要。

因此通过电子控制的密码锁应运而生,同时电子产品向智能化和微型化的不断发展,单片机成为电子产品研制和开发中首选的控制器。

本文从经济实用的角度出发,采用美国Atmel公司的单片机AT89S52与低功耗CMOS型E2PROMAT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、显示、报警、开锁等电路,用C语言编写主控芯片的控制程序,设计了一款可以多次更改密码具有报警功能的电子密码锁。

经实验证明,该密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,符合住宅、办公室用锁要求,具有推广价值。

关键词:

密码锁;单片机;报警

 

三、系统构成5

一、引言

1.1电子密码锁简介

电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。

它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。

现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。

其性能和安全性已大大超过了机械锁。

其特点如下:

1)保密性好,编码量多,远远大于弹子锁。

随机开锁成功率几乎为零。

2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。

3)误码输入保护,当输入密码多次错误时,报警系统自动启动。

4)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。

5)电子密码锁操作简单易行,一学即会。

1.2、电子密码锁的发展趋势

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

目前门锁主要用弹子锁,其钥匙容易丢失;保险箱主要用机械密码锁,其结构较为复杂,制造精度要求高,成本高,且易出现故障,人们常需携带多把钥匙,使用极不方便,且钥匙丢失后安全性即大打折扣。

针对这些锁具给人们带来的不便若使用机械式钥匙开锁,为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。

它的出现为人们的生活带来了很大的方便,有很广阔的市场前景。

由于电子器件所限,以前开发的电子密码锁,其种类不多,保密性差,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是基于EDA来实现的,其电路结构复杂,电子元件繁多,也有使用早先的20引脚的2051系列单片机来实现的,但密码简单,易破解。

随着电子元件的进一步发展,电子密码锁也出现了很多的种类,功能日益强大,使用更加方便,安全保密性更强,由以前的单密码输入发展到现在的,密码加感应元件,实现了真实的电子加密,用户只有密码或电子钥匙中的一样,是打不开锁的,随着电子元件的发展及人们对保密性需求的提高出现了越来越多的电子密码锁。

1.3、本设计所要实现的目标

本设计采用单片机为主控芯片,结合外围电路,组成电子密码锁,用户想要打开锁,必先通过提供的键盘输入正确的密码才能将锁打开,密码输入错误有提示,为了提高安全性,当密码输入错误三次将报警。

密码可以由用户自己修改设定,锁打开后才能修改密码。

修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。

二、设计方案的选择

2.1方案一:

采用数字电路控制

用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过10秒(一般情况下,用户不会超过10秒,若用户觉得不便,还可以修改)电路将报警20秒,若电路连续报警三次,电路将锁定键盘2分钟,防止他人的非法操作。

采用数字电路设计的方案好处就是设计简单但控制的准确性和灵活性差。

故不采用

2.2方案二:

采用以单片机为核心的控制方案

由于单片机种类繁多,各种型号都有其一定的应用环境,因此在选用时要多加比较,合理选择,以期获得最佳的性价比。

一般来说在选取单片机时从下面几个方面考虑:

性能、存储器、运行速度、I/O口、定时/计、串行接口、模拟电路功能、工作电压、功耗、封装形式、抗干扰性、保密性,除了以上的一些的还有一些最数器基本的比如:

中断源的数量和优先级、工作温度范围、有没有低电压检测功能、单片机内有无时钟振荡器、有无上电复位功能等。

在开发过程中单片机还受到:

开发工具、编程器、开发成本、开发人员的适应性、技术支持和服务等等因素。

2.3最终方案

基于以上因素:

本设计选用单片机AT89S52作为本设计的核心元件,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。

在单片机的外围电路:

外接输入键盘用于密码的输入和一些功能的控制,外接AT24C02芯片用于密码的存储,外接LCD1602显示器用于显示作用。

当用户需要开锁时,先按键盘的数字键0-9输入密码。

密码输完后按下确认键,如果密码输入正确则开锁,不正确显示密码错误重新输入密码,当三次密码错误则发出报警;当用户需要修改密码时,先按下键盘设置键后输入原来的密码,只有当输入的原密码正确后才能设置新密码。

新密码输入无误后按确认键使新密码将得到存储,密码修改成功。

方案框架图:

 

三、系统构成

3.1设计原理

设计原理:

系统由硬件部分与软件部分两部分构成。

其中硬件部分由单片机、电源输入部分、键盘输入部分、密码存储部分、复位部分、晶振部分、显示部分、报警部分、开锁部分组成,软件部分对应的由主程序、初始化程序、LCD显示程序、键盘扫描程序、启动程序、关闭程序、建功能程序、密码设置程序、EEPROM读写程序和延时程序等组成。

其原理框图如图4-1所示。

图3-1电子密码锁原理框图

 

3.2电路总体构成

根据系统要求画出的设计图总图-如图3-2:

图3-2电电路原理图

电路由单片机、矩阵键盘、1602液晶显示和24c02密码存储等部分组成。

其中矩阵键盘用于输入数字密码和进行各种功能的实现。

由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与24c02保存的密码进行对比,从而判断密码是否正确,然后控制单片机各引脚的高低电平从而传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可,当然也可以用继电器的常开触点去控制电磁铁吸合线圈。

3.3单片机电路部分

本次设计采用AT89S52芯片,AT89S52是一个低电压,高性能CMOS8位单片机,通过用keil软件编写程序,然后烧到单片机里面去,然后让它对整个系统进行信息的处理,如可以让它处理矩阵键盘传过来的信息,并根据编好的程序来确定哪个按键按下,并处理相应按键对应的功能,然后把相应的信息反应到单片机的各个引脚,来实现按键实现的现象,如:

显示是否开启锁,报警等。

它的电路如图3-3所示:

图3-3单片机电路

3.4键盘输入部分

由于本设计所用到的按键数量较多而不适合用独立按键式键盘。

采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。

本设计中使用的这个4*4键盘不但能完成密码的输入还能作特别功能键使用,比如修改密码功能等。

键盘的每个按键功能在程序设计中已经编写好。

其大体功能(看键盘按键上的标记)及与单片机引脚接法如图3-4所示:

图3-4键盘输入原理图

矩阵键盘采用“行列”扫描法,行扫描法又称逐行扫描查询法,是一种最常用的按键扫描方法,如上图所示,开始时把行线P2.0-P2.3置为低电平,然后扫描列线,如果有一行列线为低电平,则去抖后判断是否还有一行列线为低电平,如果还有,则这条列线为低电平,同时处在这条行线中的按键为低电平,然后判断是哪个按键按下,如果列线全部为高电平,则表示没有按键按下,往复循环扫描。

3.5密码存储部分

用EPROM芯片AT24C02存储密码。

AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,通过单片机对24c02芯片进行密码存储,存储好密码后,通过按键输入密码与存储芯片里面的数据进行对比,根据数据是否一致,来执行相应的操作,还可以根据按键操作来执行是否更换数据。

电路连接图如图3-5所示:

图3-5密码存储电路原理图

图中AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。

它们都接地,第8脚和第4脚分别为正、负电源。

第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,与单片机的P3.3连接。

第6脚SCL为串行时钟输入线,与单片机的P3.4连接。

第7脚需要接地。

3.6复位部位

单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。

无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。

在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效。

地址锁存信号ALE也为高电平。

根据实际情况选择如图3-6所示的复位电路。

图3-6复位电路原理图

3.7晶振部分

AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C5、C6按图3-7所示方式连接。

晶振、电容C5/C6及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C5、C6的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C5、C6取值范围在5~30pF之间。

根据实际情况,本设计中采用12MHZ做为系统的外部晶振。

电容取值为30pF。

如图3-7所示:

3-7晶振电路

3.8显示部分

为了提高密码锁的密码显示效果能力。

本设计的显示部分由液晶显示器LCD1602取代普通的数码管来完成。

开始时显示器将一直处于初始状态,当需要对密码锁进行开锁时,按下数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,最多显示6位。

当密码输入完成时,按下确认键,如果输入的密码正确的话,LCD子显示“RightOpen”,单片机其中P1.3引角会输出低电平,使三极管导通,电磁铁吸合,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“ErrorRetry”,P1.3输出的是高电平,电子密码锁不能被打开。

通过LCD显示屏,可以清楚的判断出锁所处的状态。

其显示部分引脚接口如图4-8所示:

图3-8显示电路原理图

3.9报警部分

报警部分由蜂鸣器及外围电路组成,加电后不发声,当密码输入错误三次时,单片机的P1.4引脚为低电平,三极管导通执行蜂鸣器警车声子程序发出警笛报警。

如图3-9所示:

图3-9报警电路原理图

3.10开锁部分

开锁用户通过键盘任意设置密码,并储存在EEPROM中作为锁码指令。

开锁步骤如下:

首先按下键盘数字键0-9输入密码,最后按下确认键。

当用户输入一密码后,单片机自动识码,如果识码不符,则提示重新输入,如果超过三次则报警。

如果正确,系统使单片机其中一引脚线发出信号,经三极管放大后,由继电器驱动电磁阀动作将锁打开,实物中用led代替继电器。

图3-10开锁电路原理图

四、主要元器件介绍

4.1主控芯片AT89S52

4.1.1AT89S52性能简介

AT89S52为8位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52相同,其主要用于会聚调整时的功能控制。

功能包括对会聚主IC内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。

主要管脚有:

XTAL1(19脚)和XTAL2(18脚)为振荡器输入输出端口,外接12MHz晶振。

RST/Vpd(9脚)为复位输入端口,外接电阻电容组成的复位电路。

VCC(40脚)和VSS(20脚)为供电端口,分别接+5V电源的正负端。

P0~P3为可编程通用I/O脚,其功能用途由软件定义,在本设计中,P0端口(32~39脚)被定义为N1功能控制端口,分别与N1的相应功能管脚相连接,13脚定义为IR输入端,10脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12脚、27脚及28脚定义为握手信号功能端口,连接主板CPU的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。

如图4-1

4-1图单片机引脚

其主要功能特性:

兼容MCS-51指令系统;4k可反复擦写(>1000次)ISPFlash;ROM32个双向I/O口;4.5-5.5V工作电压;2个16位可编程定时/计数器时钟频率0-33MHz

全双工UART串行中断口线128x8bit内部RAM

2个外部中断源低功耗空闲和省电模式

中断唤醒省电模式3级加密位

看门狗(WDT)电路软件设置空闲和省电功能

灵活的ISP字节和分页编程双数据寄存器指针

4.2存储芯片AT24C02

AT24C02是美国Atmel公司的低功耗CMOS型E2PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、体积小等特点。

而且他是采用了I2C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。

AT24C02中带有的片内地址寄存器。

每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。

所有字节均以单一操作方式读取。

为降低总的写入时间,一次操作可写入多达8个字节的数据。

I2C总线是一种用于IC器件之间连接的二线制总线。

他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。

AT24C02正是运用了I2C规程,使用主/从机双向通信,主机(通常为单片机)和从机(AT24C02)均可工作于接收器和发送器状态。

主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。

无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。

AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。

SOICPDIP

图4-2AT24C02的两种引脚图

24C02中带有片内地址寄存器。

每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。

所有字节均以单一操作方式读取。

为降低总的写入时间,一次操作可写入多达8个字节的数据。

4.3LCD1602显示器

现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。

1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。

1602型LCD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。

4.3.1接口信号说明

1602型LCD的接口信号说明如表4-3所示:

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

DataI/O

2

VDD

电源正极

10

D3

DataI/O

3

V0

液晶显示偏压信号

11

D4

DataI/O

4

RS

数据/命令选择端(H/L)

12

D5

DataI/O

5

R/W

读写选择端(H/L)

13

D6

DataI/O

6

E

使能信号

14

D7

DataI/O

7

D0

DataI/O

15

BLA

背光源正极

8

D1

DataI/O

16

BLK

背光源负极

表4-31602型LCD的接口信号说明

4.3.2主要技术参数

1602型LCD的主要技术参数如下表所示:

显示容量

16X2个字符

芯片工作电压

4.5~5.5V

工作电流

2.0mA(5.0V)

模块最佳工作电压

5.0V

字符尺寸

2.95X4.35(WXH)mm

表4-41602型LCD的主要技术参数

4.3.3基本操作程序

读状态:

输入:

RS=L,RW=L,E=H输出:

D0~D7=状态字

读数据:

输入:

RS=H,RW=H,E=H输出:

写指令:

输入:

RS=L,RW=L,D0~D7=指令码,E=高脉冲输出:

D0~D7=数据

写数据:

输入:

RS=H,RW=L,D0~D7=数据,E=高脉冲输出:

4.4晶体振荡器

石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:

从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。

其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。

只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。

当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。

晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。

以声卡为例,要实现对模拟信号44.1kHz或48kHz的采样,频率发生器就必须提供一个44.1kHz或48kHz的时钟频率。

如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振。

但是现在的娱乐级声卡为了降低成本,通常都采用SCR将输出的采样频率固定在48kHz,但是SRC会对音质带来损害,而且现在的娱乐级声卡都没有很好地解决这个问题。

现在应用最广泛的是石英晶体振荡器。

石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。

石英晶体振荡器广泛地应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中。

为数据处理设备产生时钟信号和为特定系统提供基准信号。

在单片机中为其提供时钟频率。

 

五、系统软件设计

本系统软件设计由主程序、初始化程序、LCD显示程序程序、键盘扫描程序、输入密码开锁程序、密码修改程序、EEPROM读写程序和延时程序等组成。

主要程序设计流程图如下所示:

1、先执行初始化程序,然后启动程序,执行键盘扫描程序,根据各个功能键执行相应的功能。

图5-1主程序流程图

图5-2输入密码开锁流程图

 

图5-3修改密码流程图

 

程序清单:

//1.初始密码123456,输入密码时显示******,有按键音.

//2密码通过键盘输入0-9数字,当输入第6个密码,系统自动验证密码,若密码正确,则将锁打开。

//3.密码错误,返回输入密码界面,连续错误3次,键盘锁定,蜂鸣器报警。

//4.密码输入正确后,进入选择修改密码画面.

//5.新密码需要输入两次密码,两次新密码一致修改成功,否则不能修改。

//6.新密码修改成功后存入存储器,即使掉电密码也保存。

//

//开机画面1

//"Welcome!

"

//""

//输入密码画面

//"Inputcode"

//"*****"

//输入密码正确画面

//"Inputcode"

//"UnlockOK!

"

//输入密码错误画面

//"Inputcode"

//"ERROR!

"

//修改密码选择画面

//"ChangeK10"

//"ExitK11"

//第一次输入新密码

//"Newcode1"

//"*********"

//第二次输入新密码

//"Newcode2"

//"*********"

//两次新密码一致,修改密码成功画面

//"OK!

"

//"PasswordSaved!

"

//两次新密码不一致,修改密码失败画面

//"Norights!

"

//""

 

#include

#include

#include

#defineuintunsignedint

#defineucharunsignedchar

//---------------------------------

sbitBEEP=P3^5;//蜂鸣器

sbitJDQ=P3^6;//继电器模拟开锁

//---------------------------------

//P1.0-1.7---D0.0-D0.7

sbitrs=P3^0;//1602液晶

sbitwela=P3^1;//1602液晶

sbitlcden=P3^2;//1602液晶

//---------------------------------

#defineC02_write0xa0//写

#defineC02_read0xa1//读

sbitSCL=P3^4;//时钟

sbitSDA_EEPROM=P3^3;//数据

bitack;

bitdd;

//---------------------------------

//4*4key-P1

//

//---------------------------------

ucharIIC_Password[16]="";//IIC密码

ucharDSY_BUFFER[16]="";//显示缓冲

ucharUserPassword[16]="";//使用者密码

ucharTwoPassword[16]="";//使用者密码

ucharOnePassword[16]="";//使用者密码

ucharKeyNo=16;

//---------------1602--------------------------------------

voiddelayms(uintz)//延时Nms

{

uintx,y;

for(x=z;x>0;x--)

for(y=120;y>0;y--);

}

voidwrite_com(ucharcom)//1602液晶写指令

{

rs=0;

lcden=0;

P1=com;

delayms

(1);

lcden=1;

delayms

(2);

lcden=0;

}

voidwrite_date(uchardate)//1602液晶写数据

{

rs=1;

lcden=0;

P1=date;

delayms

(1);

lcden=1;

delay

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2