基于单片机的电子密码锁毕业设计论文Word格式.docx

上传人:b****6 文档编号:19700434 上传时间:2023-01-08 格式:DOCX 页数:35 大小:1.07MB
下载 相关 举报
基于单片机的电子密码锁毕业设计论文Word格式.docx_第1页
第1页 / 共35页
基于单片机的电子密码锁毕业设计论文Word格式.docx_第2页
第2页 / 共35页
基于单片机的电子密码锁毕业设计论文Word格式.docx_第3页
第3页 / 共35页
基于单片机的电子密码锁毕业设计论文Word格式.docx_第4页
第4页 / 共35页
基于单片机的电子密码锁毕业设计论文Word格式.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

基于单片机的电子密码锁毕业设计论文Word格式.docx

《基于单片机的电子密码锁毕业设计论文Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子密码锁毕业设计论文Word格式.docx(35页珍藏版)》请在冰豆网上搜索。

基于单片机的电子密码锁毕业设计论文Word格式.docx

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

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

1.1.2电子密码锁的发展趋势

目前的门锁一般使用弹子锁,但是它的钥匙是容易遗失;

一些保险柜使用的机械锁,其结构更加复杂,成本高,高精密制造,容易出现故障,人们往往需要带很多钥匙,使用极为不便,如果钥匙不慎丢失,它的安全性就会大大降低。

为满足人们的需求,使用密码替代钥匙解锁的密码锁应运而生。

由于被电子器件所限,以前开发的电子密码锁,保密性差,种类不多,最基本的就是只依靠最简单的模拟电子开关来实现的,制作简单但很不安全,在后为多是使用EDA来实现的,其电路结构复杂,电子元件繁多。

也有使用早先的20个引角的2051系列的单片机来实现的,但其密码简单,易被破解。

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

出于安全、方便等方面的需要许多电子密码锁已相继问世,但这类产品的特点是针对特定有效卡、指纹或声音有效,且不能实现远程控制,只能适用于保密要求高且供个人使用的门、房间等。

因为数字、字符、人体生物特征、时间和图形图像等要素均可成为钥匙的电子信息,所以组合使用这些信息能够使电子防盗锁获得更高的保密性,比如现在的一些金库,需要使用复合信息密码的电子防盗锁。

组合使用信息也能够使电子防盗锁获得无穷扩展的可能,可以使产品多样化,对用户而言是是再好不过了。

由此可以看出组合使用电子信息是电子密码锁今后发展的趋势。

1.2电子密码锁设计的目标要求

该密码锁设计方法合理,简单易行,成本低,符合用户对一些私人资料信息的加密要求,具有一定的推广价值。

该设计的电子密码锁有如下特点:

★系统设置6位密码,通过键盘输入密码,输入密码后按下确定键。

★密码可以由用户自己设定,在密码输入正确的前提下,按下设置键,出现提示信息”Yourpassword!

“,此时输入新的密码(6位)。

电子密码锁的工作流程图如图1.2-1所示:

图1.2-1电子密码锁的工作流程图

1.3系统主要芯片的选型

1.3.1主控芯片的选型

AT89C51单片机介绍[1]

AT89C51是一类具有低功耗,高性能CMOS8位的单片机,其片内含有4kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用的ISPFlash存储单元和8位中P央处理器,很多的嵌入式控制应用系统也在使用AT89S51为它们提供的性价比比较高的解决方案。

AT89C51具有很多的特点,它有40个引脚、4kBytesFlash片的内程序存储器、128bytes的随机存储器(RAM)、32个外部输入/输出(I/O)口并且是双向的、5个中断优先级、16位的可编程定时计数器有两个、2个串行全双工通信口和一个看门狗(WDT)电路。

片内时钟振荡器AT89C51提供以下标准功能:

4k字节的Flash闪速存储器,128字节的内部RAM,32个I/O口线,1个看门狗(WDT),有两个数据指针和两个16位定时/计数器,有一个5向量两级中断结构,还有一个全双工串行通信口,片内振荡器及时钟电路。

同时AT89C51可降至0Hz的静态逻辑操作,并且支持两不同软件可选的节电工作模式。

空闲方式可以停止CPU的工作,但仍然允许RAM,定时/计数器,串行通信口及中断系统等继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件的复位。

AT89C51引脚图如下图1.3.1-1所示:

图1.3.1-1AT89C51引脚图

此外,AT89S51单片机还配置了12MHz的晶振并且可以通过软件来设置它的省电模式。

当其处于空闲模式时,CPU可暂停工作,而串行口、外中断、定时计数器以及系统可继续工作,掉电模式下数据保存在RAM中,只有硬件复位或者外中断激活后芯片才又开始工作。

另外该芯片有TQFP、PLCC和PDIP这三种不同的封装形式,以满足不同市场的需求。

1.3.2显示器的选型

采用LCD1602[8]

LCD1602能完整的显示32个英文字符和日文字符,它可以应用在计算器、频率信号发生器、时钟等产品上。

LCD1602主要特性:

能够显示16*2个字符,芯片工作电压为4.5~5.5V,工作电流2MA(5V)包括背光电流,字符尺寸:

2.95*4.35mm,带有英文和日文字符库,使用方便。

LCD1602的端口有8根数据引脚和6根控制引脚以及2根电引脚。

控制灵活、方便。

采用经典的8086总线结构,使编程控制得以变得更为简单。

容易,且不会占用单片机的大量资源。

在选型时,考虑到设计的实际应用以及设计的合理性,LCD1602能显示一些数字和字母,很方便形象,故本设计最终的方案选择的是LCD1602。

1.3.3密码存储芯片AT24C02

由于51单片机掉电后会丢失数据存储器里的数据,因此必须外加掉电存储电路。

并由AT24C02芯片来实现。

美国Atmel公司的低功耗CMOS型E2PROM—AT24C02,其内部存储空间有256×

8位,可擦写次数10000次以上、工作电压宽在2.5~5.5V之间、抗干扰能力强、数据不易丢失、写入速度小于10ms、体积小。

它是采用IIC总线串行对数据进行读写,占用的资源和I/O线很少,支持在线进行编程,能够快速方便地进行数据的实时存取。

AT24C02运用IIC规程,采用主机(通常为单片机)/从机(AT24C02)双向通信,二者均可在发送器和接收器状态下工作。

主机产生一个串行的时钟信号后,通过引脚SCL控制总线的传送方向,产生停止和开始的条件。

主机和从机在接收到一个字节后都必须要发出一个确认的信号ACK。

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

2电子密码锁的硬件设计

2.1硬件设计原理

本系统硬件部分包含电源输入电路、复位电路、晶振电路、按键电路、LCD1602显示电路。

当系统运行时系统电源电路为系统供电。

为了避免系统在不稳定情况下工作所以增加了一个复位电路。

按键电路按键输入要执行的指令,LCD显示电路,为人机交互提供了条件。

具体的硬件框图如下图2.1-1所示:

图2.1-1系统框图

2.2复位电路设计

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

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

在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;

外部程序存储器读选通信号PSEN无效。

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

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

该电路在基本的复位电路上添加了手动复位按钮,在电源接通瞬间,电容C8上的电压很小,复位后R2下拉电阻的电压基本和电源电压相同,RST此时为高电平,随着电容充电,RST端电压将逐渐下降,当电压降到低于某一数值后,CPU不再复位,由于电容C1很大,可以确保RST在高电平的有效时间比24个振荡周期大,CPU能够顺利复位。

为了防止死机时无法顺利复位我增加了手动复位按键加以保障。

图2.2-1复位电路图

2.3晶振电路设计

引脚XTAL1【2】和XTAL2【2】与晶体振荡器及电容C1、C2按图图2.3-1所示方式连接。

此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。

电路中两个电容C1、C2的作用使电路快速振,提高电路的运行速度。

图2.3-1晶振电路图

2.4按键电路设计

因为本设计所用到的按键数量较多所以不适合用独立式按键,因此我们引入了矩阵键盘【3】的应用,采用四条I/O线作为行线,四条I/O线作为列线组成键盘。

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

这样矩阵键盘上的按键个数就为16个,这样就能有效地提高系统I/O口的利用率。

在单片机中可以用一个P1口实现16个按键功能,本设计中使用的这个4X4键盘不但能完成密码的输入还能作特别功能键使用。

并且键盘的每个按键功能在程序设计中设置。

由于矩阵键盘中的行、列为多键公用,每个按键都会影响该按键所处的行与列的电平,因此,各按键彼此将相互发生影响,所以必须将行列线信号配合起来,并作适当的处理,这样才能决定闭合键的位置。

其按键结构及与单片机引脚接法如图2.4-1所示。

按键功能键的具体分布如2.4-2所示。

图2.4-1按键电路图

1

2

3

4

5

6

7

8

9

开锁

上锁

输入新密码

保存新密码

重新输入

未定义

图2.4-2按键功能分配图

2.5密码存储电路的设计

如图2.6-1所示,在AT89C51试验开发板上它们都接地,第8脚和第4脚分别为正、负电源,第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,在AT89C51试验开发板上和单片机的P3.3连接,第6脚SCL为串行时钟输入线,在AT89C51试验开发板上和单片机的P3.2连接,第7脚需要接地。

图2.5-124C02密码存储电路图

2.6LCD1602显示电路设计

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

本设计的显示部分由液晶显示器LCD1602【5】。

在没有按键时,显示器处于初始状态。

按下开启键显示器就处于开启状态,再按下关闭按键显示器就处于关闭状态。

当需要对密码锁进行开锁时,按下开锁按键后通过键盘上的数字键0-9输入密码,此时每按下一个数字键,显示器上就会显示一个*,最多只能输入六个*。

当密码输入完成时,按下确认键,如果输入的密码正确的话,显示屏显示“四川师范大学成都学院欢迎您”,如果密码不正确,LCD显示屏会显示“ERROR”,P2.0输出的是高电平,电子密码锁不能被打开。

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

其电路的具体设计如下图2.6-1所示:

图2.6-1LCD1602显示电路图

2.7报警电路

报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,发/叮0声,每按一下,发声一次,单片机的P3.1引脚为低电平,三极管T3导通。

图2.7-1蜂鸣器电路图

2.8系统电路

硬件连接线路:

片机系统”区域中的P0.0~P0.7端口分别连接到“LED1602”区域中的d0—d7”端口上;

2.把“单片机系统”区域中的P2.0~P2.2端口分别连接到“LED1602”区域中的“RS,RW,E”端口上。

3.把“单片机系统”区域中的P1.0~P1.7端口分别依次连接到“矩阵键盘”区域中的“行和列”端口上。

3.把“单片机系统”区域中的P3.2~P3.3端口分别依次连接到“24C02”区域中的“SCK,SDA”端口上。

3.把“单片机系统”区域中的P3.7端口连接到“蜂鸣器”上。

P2.7连接LED灯通过电阻R2接地。

3电子密码锁的软件设计

3.1程序设计思路

本设计软件部分要实现的功能分别为:

键盘扫描,延时【6】,显示器显示【4】,密码存储等。

电子密码锁工作的主要过程是LCD液晶显示器提示“yourpassword:

”,通过键盘输入密码,同时LCD显示密码输入情况,按下确认键后判断密码的正确性,当输入密码多功能电子密码锁的基本要求:

a、通过键盘输入密码。

c、220V供电下,设计系统所需电源,并考虑掉电后原始数据的保存,总的流程图如下图3.1-1所示:

图3.1-1软件总流程图

3.2键盘扫描软件设计

键盘扫描【7】流程图如图3.2-1所示,在按键当中,有与输入、开锁、清除、设置、确认的程序相对应的按键,并按顺序与输入的数相比较,当输入正确时,进入密码程序,错误时进行清除,输入两次新密码正确时,可进行重新设置密码,最后确认程序。

按键的检测主要是通过查询的方法来实现的,利用按键进行密码的输入及设置。

图3.2-1按键扫描流程图

图3.2-224C02读写操作的软件算法流程图

图3.2-32修改密码流程图

4、系统功能及仿真

(一)开锁

(二)LCD1602液晶显示

(三)密码修改

(四)报警

(五)还能添加掉电存储

当给单片机上电后,单片机显示如图:

图4-1仿真图1

当输入密码时,单片机显示如图:

图4-2仿真图2

密码错误的情况下修改密码(即输入新密码)显示如图:

图4-3仿真图3

当输入正确密码时单片机显示如图:

图4-4仿真图4

输入新密码之后保存显示:

图4-5仿真图5

图4-6实物图

5总结

以上为本人设计的电子密码锁电路。

该电子密码锁设计实现开关锁和修改密码等功能,并具有结构简单、功耗低、成本低等优点,但是设计电子密码锁需要结合实际综合考虑很多因素,因此该电子密码锁设计需要在实际中进一步完善和改进。

另外,在系统应用程序方面,该设计只实现了修改密码、开关锁、自动报警等功能,要想在现实生活中推广,还必须针对实际应用场合的需要,进一步完善系统功能的程序。

具有防盗报警功能的电子密码锁代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,密码锁不管在技术上还是在性能上都得到了提高。

其经过多次的整理,是一个比较不错的设计,可以满足人们的基本需求,但是因为水平有限,此电路中也存在一定的问题,的设计并不奢望一定能成功,但一定要对已学的各种电子知识能有一定的运用能力,我做设计的目的是希望能检查下对所学知识的运用能力的好坏,并且开始慢慢走上创造的道路,这是非常可贵的一点。

但是在我们设计和调试的过程中,也发现了一些问题,譬如电子密码锁的设计还不够人性化,比如加上语音的提示功能,可能会更有生命力。

电路的密码不能忘记,一旦忘记,就难以打开,这可以通过增加电路解决,但那过于复杂。

此次程序设计还有一定的漏洞。

也许还有其他的一些不足,还请老师给以支持。

6参考文献

[1]童诗白.华成英:

模拟电子技术基础[第四版].高等教育出版社,2000.3,P3-P7

[2]张毅刚:

单片机原理及应用.高等教育出版社,2003.7,P65-P67

[3]李全利:

单片机原理及接口技术.高等教育出版社,2003.1,P69-P78

[4]李光飞:

单片机课程设计指导.北京航空航天大学出版社,2007.1,P12-P24

[5]蔡朝洋:

单片机控制实习与专题制作.北京航空航天大学出版社,2006.6,P30-P41

[6]陈连坤:

单片机原理及接口技术.北京交通大学出版社,2010.5,P55-P57

[7]李学海:

标准8051单片机基础教程.北京航空航天大学出版,2006.1,P57-P60

附录一:

原理图

附录二:

源程序

//---------------------------Main.c--------------------------------

//名称:

用1602LCD与24C04设计的电子密码锁

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

//说明:

初始密码由24C04.BIN设定为“123456”。

//当输入0~9中的数字时可以输入密码,不超过6位数,输入完成后按下A

//键开锁,密码正确时LED点亮,液晶显示开锁成功。

//其他键功能是:

B上锁C重新输入密码D保存新密码E清除

//重设密码成功时要求先输入正确的密码成功开锁。

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

#include<

reg51.h>

string.h>

#defineucharunsignedchar

#defineuintunsignedint

//上次按键和当前按键序号,该矩阵中序号范围为0~15,16表示无按键

ucharpre_keyNo=16,keyNo=16;

ucharcodeTitle_Text[]="

YourPassword..."

;

//标题字符串

ucharDSY_BUFFER[10]="

"

//显示缓冲

ucharUserPasssword[10]="

//用户输入的密码

voidLCD_Init();

//液晶初始化

voidDisplay_String(uchar*str,ucharLineNo);

//在液晶指定行显示字符串

voidIIC_24C04_Init();

//IIC初始化

voidBeep();

//蜂鸣器

ucharRecString(ucharSlave,ucharSubaddr,uchar*Buffer,ucharN);

//从IIC读取数据

ucharSendString(ucharSlave,ucharSubaddr,uchar*Buffer,ucharN);

ucharKeys_Scan();

sbitLED_OPEN=P2^7;

//开锁亮灯

sbitBEEP=P3^7;

//蜂鸣器

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

//延时

voidDelayMS(uintx)

{

uchari;

whlie(x--)for(i=0;

i<

120;

i++);

}

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

//蜂鸣器子程序

voidBeep()

for(i=0;

100;

i++)

{

DelayMS

(1);

BEEP=~BEEP;

}

BEEP=0;

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

//清除密码

voidClear_Password()

UserPassword[0]='

\0'

DSY_BUFFER[0]='

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

//主程序

voidmain()

uchari=0;

ucharIIC_Password[10];

ucharIS_Valid_User=0;

P0=P1=0xFF;

TMOD=0X02;

//TO设置为8位自动重装模式

TH0=175;

TL0=175;

TR0=1;

//启动TO

DelayMS(10);

LCD_Init();

//初始

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

当前位置:首页 > 解决方案 > 学习计划

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

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