基于STC89C52单片机的电子密码锁完整版附仿真图原理图.docx

上传人:b****8 文档编号:10218570 上传时间:2023-02-09 格式:DOCX 页数:46 大小:1.76MB
下载 相关 举报
基于STC89C52单片机的电子密码锁完整版附仿真图原理图.docx_第1页
第1页 / 共46页
基于STC89C52单片机的电子密码锁完整版附仿真图原理图.docx_第2页
第2页 / 共46页
基于STC89C52单片机的电子密码锁完整版附仿真图原理图.docx_第3页
第3页 / 共46页
基于STC89C52单片机的电子密码锁完整版附仿真图原理图.docx_第4页
第4页 / 共46页
基于STC89C52单片机的电子密码锁完整版附仿真图原理图.docx_第5页
第5页 / 共46页
点击查看更多>>
下载资源
资源描述

基于STC89C52单片机的电子密码锁完整版附仿真图原理图.docx

《基于STC89C52单片机的电子密码锁完整版附仿真图原理图.docx》由会员分享,可在线阅读,更多相关《基于STC89C52单片机的电子密码锁完整版附仿真图原理图.docx(46页珍藏版)》请在冰豆网上搜索。

基于STC89C52单片机的电子密码锁完整版附仿真图原理图.docx

基于STC89C52单片机的电子密码锁完整版附仿真图原理图

基于STC89C52单片机的电子密码锁(完整版)-附-仿真图-原理图

1绪论

1.1本设计的研究背景与研究目的

随着人们生活水平的提高和社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。

在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。

(如指纹、眼底视网膜等)来控制锁的开启。

从而大大提高了锁的安全性,使不法之徒无从下手,人们也就能对自身财产安全有了更多的保障。

因此电子密码防盗锁作为防盗卫士的作用日趋重要,而如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,而电子密码防盗锁用密码代替钥匙,不但省去了佩戴钥匙的烦恼,也从根本上解决了普通门锁保密性差的缺点。

当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。

概括的讲,一块芯片就成了一台计算机。

随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性价比显著提高,技术日趋完善。

由于单片机具有体积小、重量轻、价格便宜、功耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用电器等各个领域均得到了广泛的应用。

它主要是作为控制部分的核心部件。

它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。

单片机由运算器、控制器、存储器、输入输出设备构成。

因为它体积小,通常都藏在被控机械的“肚子”里。

它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。

本设计利用单片机及附加器件实现数据传送和控制算法,来完成某一实际功能,检验并提高同学对整体电路设计和把握能力,了解单片机系统设计流程,以及电路板的实际制作和调试能力。

同时也加强对数字电路、单片机和微机原理等课程知识的实际应用能力,也为同类产品的进一步发展奠定理论和实践基础。

1.2国内外研究现状

随着人们对安全的重视和科技的发展,许多电子智能锁已在国内外相继面世。

但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。

而且指纹识别器,若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。

加上其成本较高,一定程度上限制了这类产品的普及和推广。

电子锁,由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的欢迎。

鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。

目前,在西方发达国家,电子密码锁的技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。

在我国电子锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。

但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。

国内的不少企业也引进了世界上先进的技术,发展前景非常可观。

 

2电子密码锁的总体设计方案

2.1方案论证

2.1.1方案一采用单片机控制方案

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

在单片机的外围电路外接输入键盘用于密码的输入和一些功能的控制,外接LCD显示器用于显示作用。

框图如下图2.1所示。

 

图2.1系统框图

1)中央控制部分

采用STCT89C52单片机,该型单片机有8KB的ROM,512B的RAM,5个中断源,3个16位定时器/计数器。

2)显示部分

采用1602LCD显示屏组成显示电路来提示信息。

当输入密码时,只显示*,当密码位数输入完毕按下确认键之后,对输入的密码进行比较,正确就发出‘叮当’声,同时门打开;若密码输入不正确时显示错误,并计次录数,当次数超过三次就触动蜂鸣器发出报警声。

3)键盘输入部分

本设计所采用键盘为4×4行列式。

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

在行线所接的单片机4个I/O口作为输出端,而列线所接的I/O口则作为输入端。

当按键没有被按下时所有的输出端都是高电平,代表无键按下。

一旦有键按下,则输入线就会被拉低,这样通过读入输入线的状态就可知是否有键按下。

按键功能分配分为数字键和功能键,数字键主要是用于密码输入,功能键主要是用于修改密码、确认密码、删除密码等。

4)报警电路部分

当输入密码错误超过3次,就会触动报警电路中蜂鸣器。

5)开锁电路部分

用发光二极管代替开锁的电路,发光表示开锁。

2.1.2方案二采用数字电路控制方案

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

电路由两大部分组成:

密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。

密码锁电路包含:

键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。

电路框图如图2.2所示。

 

图2.2密码锁电路

2.1.3方案三采用EDA控制方案

1)整体结构设计

电子密码锁包括键盘控制、密码设置和报警提示三大功能模块。

2)硬件描述语言VHDL描述电路

首先在合适的路径下建立本设计的文件夹。

然后用VHDL语言编辑。

最后仿真测试及编程下载配置。

2.2方案比较以及可行性

方案一采用基于单片机实现的电子密码锁,其中硬件电路设计具有按键有效提示、输入错误提示、控制开锁电平、控制报警电路、修改密码电路等多种功能。

密码锁内部的单片机是核心处理设备,单片机有体积小、质量轻、价格便宜诸多优点。

单片机软件部分软件的设计主要是51单片机的程序编写且单片机是靠程序运行的,如果需要修改只需要修改程序,不需要将整个硬件电路做整修,这不仅以节约资源而且可以节约时间,提高工作效率。

因为通过不同的程序可以实现不同的功能,尤其是特殊的独特的一些功能。

这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的,但是单片机却可以轻松解决。

通过编写的程序可以实现高智能,高效率,以及高可靠性,比起数电中逻辑器件这个优点显而易见,因此方案一比方案二合适。

对比方案三,虽然都可通过编程来实现各种功能,但是单片机是软件编程,而EDA技术是在软件平台下,用硬件描述语言VHDL来实现的。

设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件。

对于我个人来说,EDA方面的知识有限,不太会运用,因此我个人不选择这个方案。

综上,本次设计最优选择为方案一即采用AT89C51为核心的单片机控制,其方案的可行性如下:

⏹单片机价格实惠,因而毕业设计成本不高。

⏹单片机型号、种类多,在市场上容易购买。

⏹电路的安装和调试都比较容易方便,比较易于实现。

 

3电子密码锁硬件电路的设计

本设计主要由中央控制模块、键盘输入模块、LCD显示密码模块、开锁电路模块、蜂鸣器报警电路模块五大模块组成。

3.1中央控制模块的设计

中央控制主要由STC89C52单片机构成,辅以复位电路和时钟电路。

3.1.1主控芯片STC89C52单片机的简介

1)STC89C52单片机的主要特性如下:

1)增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。

2)用户应用程序空间为8K字节,片上集成512字节RAM。

3)通用I/O口(32个),P1/P2/P3/P4是准双向口/电阻上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

2)STC89C52RC引脚功能说明:

1)VCC(40引脚):

电源电压

2)VSS(20引脚):

接地

3)P0端口(P0.0~P0.7,39~32引脚):

P0口是一个漏极开路的8位双向I/O口。

作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入每个引脚能驱动写入“1”时,可以作为高阻抗输入。

4)P1端口(P1.0~P1.7,1~8引脚):

P1口是一个内部带上拉电阻的8位双向I/O口。

P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。

5)P2端口(P2.0~P2.7,21~28引脚):

P2口是一个内部带上拉电阻的8位双向I/O端口。

P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(I)。

6)P3端口(P3.0~P3.7,10~17引脚):

P3口是一个带内部上拉电阻的8位双向I/O端口。

7)RST(9引脚):

复位输入,当输入连续两个机器周期以上高电平时为有效,用来完成单片机的复位初始化操作。

8)ALE/ROG(30引脚)地址锁存控制信号:

(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。

图3.1STC单片机管脚图

3.1.2时钟电路的设计

时钟信号用来提供单片机片内的各种微操作的时间基准,时钟信号通常用两种电路形式得到:

内部振荡和外部振荡。

MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图2-2所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。

图3.1.2中外接晶体以及电容C2和C3构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值为30pF左右,晶振频率选11.0592MHz,其连接电路如图3.2所示。

图3.2晶振电路

3.1.3复位电路的设计

单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。

89系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。

当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。

单片机系统的复位方式有:

手动按钮复位和上电复位,其连接电路如图3.3所示。

1)手动按钮复位

手动按钮复位需要人为在复位输入端RST上加入高电平(图1)。

一般采用的办法是在RST端和正电源VCC之间接一个按钮。

当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。

手动按钮复位的电路如所示。

由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。

2)上电复位

上电复位电路只要在RST复位输入引脚上接电容至VCC端,下接一个电阻到地即可。

对于CMOS型单片机,由于在RST内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1?

F。

上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着VCC对电容的充电过程而逐渐回落,即RST端的高电平持续时间取决于电容的充电时间。

为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。

上电时,VCC的上升时间约为10ms,而起振荡器的起时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。

在图2的复位电路中,当VCC掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。

另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。

如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序。

图3.3手动按钮复位电路

3.2键盘输入模块的设计

3.2.1矩阵键盘工作原理

矩阵键盘又称为行列式键盘,它是用4条I/O线作为行线,4条I/O线作为列线,组成键盘的。

在行线和列线的每一个交叉点上,设置一个按键。

这样键盘中按键的个数是4×4个。

这种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。

行列式键盘的工作方式是先利用列线发送扫描字,然后读取行线的状态,查看是否有按键按下。

键盘部分提供一种扫描的工作方式能对键盘不断扫描、自动消抖、自动识别按下的键,并给出编码。

在显示部分,它可以为发光二极管、荧光管及其他显示器提供按扫描方式工作的显示接口,而且为显示器提供多路复用信号,可以显示多达16位的字符或数字。

键盘中有无按键按下是由列线送入全扫描字、行线读入行线状态来判断的,其方法是由列线逐列置低电平后,检查行输入状态来判断,其方法是依次给列线送低电平,然后检查所有行线状态,如果全为1,则所按下的键不在此列,如果不全为1,则所按下的键必在此列,而且是在与0电平线相交的交点上的那个键。

3.2.2单片机键盘扫描法

扫描法是在判定有键按下后逐列果行(或列)的状态出现非全1状态,如果(或列)的状态出现非全1状态,这时0状态的行、列交点的键就是所按下的键。

扫描法的特点是逐行(或逐列)扫描查询,这时相应行(或列)应有上拉电阻接高电平。

行列式键盘扫描程序就是采用扫描法来确定哪个键按下的。

确定矩阵式键盘上哪个键被按下时运用扫描法,又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,过程如下:

1)判断键盘中有无键按下,将全部行线Y0~Y3置为低电平,然后检测列线的状态。

只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。

若所有列线,均为高电平,则键盘中无键按下。

2)判断闭合键所在的位置,在确认有键按下后,即可进入确定具体闭合键的过程。

其方法是:

依次将行线置为为低电平,即在置某根行线为低电平时,其他线为高电平,在确定某根行线位置为低电平后,再逐行检测各列线的电平状态,若某列为则该列线与置为低电平的行线交叉处的按钮就是闭合的按键,其连接电路如图3.4所示。

图3.4矩阵键盘电路与单片机连接图

3.3LCD显示密码模块的设计

显示模块主要由LCD1602显示屏组成,他显示的是键盘输入的密码,以及密码正确与错误的提示。

当输入密码时,出于安全性的考虑,显示的密码是有*号代替,为暗密。

当输入六位密码后按下确认键,系统会与存于ROM的密码对比,若密码错误,显示屏会显示Error,若密码正确,显示屏会显示Right。

3.3.1LCD1602简介

1)1602功能介绍

1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。

每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。

1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。

2)1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如下表3.1所示:

表3.1引脚功能说明

编号

符号

引脚说明

编号

符号

引脚说明

1

VSS

电源地

9

D2

数据

2

VDD

电源正极

10

D3

数据

3

VL

液晶显示偏压

11

D4

数据

4

RS

数据/命令选择

12

D5

数据

5

R/W

读/写选择

13

D6

数据

6

E

使能信号

14

D7

数据

7

D0

数据

15

BLA

背光源正极

8

D1

数据

16

BLK

背光源负极

其引脚图如下图所示:

图3.5LCD1602引脚图

3)LCD寄存器的选择

表3.2LCD寄存器的选择

E

R/W

RS

功能说明

1

1

0

写入命令寄存器

1

1

1

写入数据寄存器

1

1

0

读取忙碌标志及RAM地址

1

1

1

读取RAM数据

0

X

1

不动作

3.3.2LCD1602液晶显示模块与单片机连接电路

图3.6连接电路

3.4开锁模块的设计

通过单片机送给开锁执行机构,电路驱动原本是利用电磁锁吸合原理来进行开锁的的。

本设计为节约资源,通过P3.0接一个发光二极管作为电磁阀线圈,当发光二级管亮则表示实现,密码正确门开,若二极管不亮则表示输入的密码不正确,门不开,其连接电路如图3.7所示。

图3.7开锁电路

3.5报警模块的设计

报警模块由蜂鸣器和单片机组成。

选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100mA驱动电流。

蜂鸣器电路如图3.5所示。

当89C51的P3.3口输出为高电平时,蜂鸣器产生蜂鸣音,89C51输出为低电平时,蜂鸣器不发声,其连接电路如图3.5所示。

图3.8报警电路

3.6硬件电路总体设计

本次设计的各大模块在上述章节中已仔细介绍了,将各大模块融合在一起后组成电子密码锁硬件电路,键盘输入模块和LCD显示模块是最主要的两大模块,键盘主要是完成密码的输入、修改密码、消除密码等等任务。

而显示模块则是主要完成输入密码的显示以及密码输入正确或者错误的提示。

而剩余的就是报警模块、开锁模块以及单片机的最小系统。

开锁顾名思义就是密码输入正确后打开大门,而报警主要是为安全着想,当有人非法入侵时便于抓住犯人。

单片机最小系统则是单片机正常运行的保障。

总的硬件电路如图3.9所示。

图3.9总的硬件电路

 

4电子密码锁的软件设计

电子密码锁的软件设计是整个电子密码锁可靠安全运行的关键,密码锁软件程序分为主程序、延时子程序、LCD显示子程序、修改密码子程序、扫描键盘输入子程序、报警子程序。

密码通过矩阵键盘输入,并且在液晶显示屏上显示,如果输入密码正确,则可以直接开锁。

如果不正确,并且3次以上输入不正确,则启动报警系统,触发蜂鸣器发声。

如果要修改密码,则需要在输入基础密码判别正确后,输入修改后的密码,通过系统确认后方可修改密码。

为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。

而本次设计分为四大模块,分别是键盘输入模块、LCD显示模块、开锁和报警模块以及修改密码模块,通过主程序来实现控制。

4.1主程序流程介绍

主程序主要内容是各子程序模块的调用,并利用各模块进行电子密码锁功能的实现,即是键盘输入密码并在LCD液晶显示屏上显示密码,当密码输入完成后,单片机会将输入进的密码与原单片机内部所储存的密码进行对比,如若密码正确,则代表电磁吸合器的发光二极管会显示红色,同时LCD液晶显示屏会显示出right;如若密码错误,会启动计数器计数,当错误次数超过三次时,报警系统会启动即是蜂鸣器会发出报警声,以提醒保安。

流程图如图4.1所示。

图4.1主程序流程图

4.2键盘模块流程图

键盘输入模块主要包含键盘的扫描、延时去抖、找到键值以及返回键值。

键盘扫描时循环的,程序编写是会使其进入是循环,这样可以检验出是否有按键按下,如果无按键按下就会进入等待有按键按下的状态,如果有按键按下的话就进入延时去抖的步骤,这样可以肯定的确定扫描到的按键是否被按下。

经过去抖之后就是确定按键的位置即是第几行和第几列,找到按键后,就是确定键值并返回按键值,每一次扫描到有键按下后,最后都要有释放闭合按键的步骤,这是为了避免影响下一次键盘的扫描和按键值的读取。

流程图如图4.2所示。

图4.2键盘扫描流程图

按键的消抖子程序所示:

if(press_on!

=0XF0)//--按键消抖---(时间自定)

{

delay(50);

press_on=KEY_IO;

}

确定键值的子程序如下所示:

switch(row)

{

case0xe0:

row=0;break;

case0xd0:

row=1;break;

case0xb0:

row=2;break;

case0x70:

row=3;break;

}

switch(col)

{

case0x07:

col=0;break;

case0x0b:

col=1;break;

case0x0d:

col=2;break;

case0x0e:

col=3;break;

}

recieve=key_value[row][col];

}

4.3显示模块流程图

LCD显示模块的软件设计主要包含开始、初始化LCD、清除LCD、写LCD四个过程。

其中写包含写数据和写字符。

写数据的部分程序:

//写数(5位数据)

voidprintf_data(ucharrow,ucharcol,ucharcount,uintdat)

{

ucharsh1,sh2,sh3,sh4,sh5;

sh5=dat/10000;

sh4=dat%10000/1000;

sh3=dat%1000/100;

sh2=dat%100/10;

sh1=dat%10;

write_adr(0x0c);

switch(row)

{

case1:

row=0x80;break;

case2:

row=0xc0;break;

default:

break;

}

write_adr(row+col-1);

delay(500);

if(count>=5)

write_data(sh5+48);

if(count>=4)

write_data(sh4+48);

if(count>=3)

write_data(sh3+48);

if(count>=2)

write_data(sh2+48);

if(count>=1)

write_data(sh1+48);

写字符的小程序为:

//写一段字符

voidprintf_char(ucharrow,ucharcol,ucharInbuffer[31])

{

uchari;

write_adr(0x0c);

switch(row)

{

case1:

row=0x80;break;

流程图如图4.3所示:

图4.3LCD显示流程图

4.4修改密码流程图

修改密码模块主要是在输入密码正确之后,按下14键即是修改密码键就能进入修改密码界面,其流程分为四个步骤,分别为按下14键并启动定时、输入修改的密码、按下确认键11键、LCD的显示。

修改密码的部分程序如下:

//改密码

voidch_word(void)

{

unsigne

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1