基于单片机的电子密码锁设计保险柜.docx
- 文档编号:26152372
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:42
- 大小:1.78MB
基于单片机的电子密码锁设计保险柜.docx
《基于单片机的电子密码锁设计保险柜.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子密码锁设计保险柜.docx(42页珍藏版)》请在冰豆网上搜索。
基于单片机的电子密码锁设计保险柜
课程设计
基于51单片机设计的密码保险柜
摘要
本文以AT89C52单片机为核心器件,结合按键电路、LED显示电路、报警指示电路和电机驱动电路构成,利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性通过软件程序来控制整个系统实现电子密码保险柜的基本功能,其主要具有的功能:
密码通过键盘输入,若密码正确,则将电机转动;密码输入错误,蜂鸣器将报警提示;用户可以自由设定密码,密码保险柜具有设计方法合理,简单易行成本低,安全实用等特点,具有一定的推广价值。
关键词:
AT89C52单片机;报警电路;直流电机;数码管
第1章绪论1
1.1系统的开发背景1
1.2系统的开发意义1
1.3系统开发目标1
1.4本章小结2
第2章方案选择3
2.1总体方案论证选择3
2.2显示模块的选择3
2.3键盘模块的选择3
2.4直流电机模块的选择4
2.5本章小结4
第3章硬件设计5
3.1系统硬件设计与组成5
3.1.1主控模块6
3.1.2指示报警模块7
3.1.3光电报警模块10
3.1.4直流电机模块11
3.1.5键盘接口模块11
3.1.6数码管显示模块11
3.2设计程序12
3.3硬件明细12
第4章软件设计13
4.1模块规划13
4.2系统程序设计流程图13
4.3设计程序15
第5章系统调试16
5.1PROTEUS仿真调试16
5.2调试结果17
5.3结果分析17
5.4本章小结17
结论与体会18
参考文献19
附录120
附录221
第一章绪论
1.1系统的开发背景
据有关资料介绍,电子密码保险柜的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。
但当时多半是配合机械锁一起作用且存在着诸如体积较大,成本较高,可靠性较低等缺点一时难以普及。
20世纪80年代后,随着信息技术、集成电路、半导体技术的发展,电子密码保险柜的设计也取得了快速的进步。
目前,在西方发达国家,电子密码保险柜技术相对先进,种类齐全,电子密码柜已被广泛应用于安全处所,而我国在此点上这稍有落后。
现今常见的密码锁设计主要有两种方案,一种是中规模集成电路控制的方案,另一种是单片机控制的方案。
对于采用集成电路控制的方案,其中的编码电子保险柜电路分为编码电路、控制电路、复位电路、解码电路、防盗报警电路、门铃电路,而电子保险柜主要由输入元件、电路(包括电源)以及锁体三部分组成。
显然此种方案的物理实现结构较为复杂且重新设置密码、输入密码的操作过程也会给用户带来一定的不方便;而利用单片机控制的方案,由于单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加掉电存储、声光提示甚至添加遥控控制功能,但其也有一定的局限性,就在于其控制原理的复杂以及要求设计人员具有更加良好的程序设计能力,调试较为繁
琐,否则程序一旦跑飞将造成意想不到的损失
1.2系统开发的意义
随着人们生活水平的提高,日常生活和工作中的住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等一系列安全防盗问题变的尤其突出。
传统的机械由于其构造的简单,被撬的事件屡见不鲜,且人们常需携带多把钥匙,使用极不方便,一旦钥匙丢失安全性即大打折扣。
随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。
为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。
密码保险柜因具有安全性高、成本低、功耗低、易操作等优点,受到了广大用户的青睐。
1.3系统开发的目标
本课题的主要任务是熟悉掌握51系列单片机的编程方法,学习应用Proteus软件进行单片机应用系统设计与仿真。
设计一款简易电子密码保险柜,设计以单片机为主控芯片,结合外围电路,组成电子密码锁,用户想要打开锁,必须通过键盘输入正确的密码才能打开,密码输入错误会有报警。
密码可以由用户自己设定,锁打开后才能修改密码。
修改密码时会有小灯提示。
1.4本章小结
在日常生活和工作中,住宅与部门的安全防范,单位的文件档案财务报表以及一些个人资料的保存多以加锁的办法解决。
在以前科技不发达的年代,只能用传统的机械锁,使用极其不方便。
随着科技的不断发展,人们需要防盗的东西越来越多,因此人们对安全性的要求越来越高。
电子保险柜的出现,满足了人们对安全性的要求,同时对于机械保险柜更方便,灵活。
第二章方案选择
2.1总体方案论证与选择
密码锁可以采用数字电路来实现,也可以采用单片机来完成。
方案一:
采用数字电路来实现,所设计的电路相当复杂,大概需要十几片数字集成块,其功能主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。
方案二:
采用单片机来实现,由于其功能的实现主要通过软件编程来完成,不仅降低了硬件电路的复杂性,而且成本也降低不少。
最终方案:
采用单片机的方式来实现密码锁
2.2显示模块的选择
方案一:
采用数码管显示。
数码管亮度高、体积小、重量轻,非常适合显示数字
•坚固耐用
LED是被完全的封装在环氧树脂里面,它比灯泡和荧光灯管都坚固。
灯体内也没有松动的部分,这些特点使得LED可以说是不易损坏的。
•高节能
节能能源无污染即为环保。
直流驱动,超低功耗(单管0.03-0.06瓦)电光功率转换接近100%,相同照明效果比传统光源节能80%以上。
•寿命长
LED光源有人称它为长寿灯,意为永不熄灭的灯。
固体冷光源,环氧树脂封装,灯体内也没有松动的部分,不存在灯丝发光易烧、热沉积、光衰等缺点,使用寿命可达6万到10万小时,比传统光源寿命长10倍以上。
方案二:
者点阵式液晶显示器来实现显示功能,液晶显示具有功耗低、轻便防震,不而且液晶显示有功耗低、体积小、重量轻、寿命长、不产生电磁辐射污染等优点。
界面友好清晰,操作方便。
但是亮度低,价格相对你叫贵,本着节省成本的原则。
最终方案:
设计选用数码管。
2.3键盘模块的选择
方案一:
采用独立式按键电路,每个键单独占有一根I/O接口线,每个I/O口的工作状态互不影响,此类键盘采用端口直接扫描方式。
但是当按键较多时占用单片机的I/O口数目较多。
方案二:
采用阵列式键盘,此类键盘是采用行列扫描方式,当按键较多时可以降低占用单片机的I/O口数目。
最终方案:
由于用的按键比较多,并且需要按键提供数字信息,所以选用带有数值的薄膜4*4按键模块。
2.4直流电机模块的选择
方案一:
步进电机步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
方案二普通直流驱动电机起动和调速性能好,调速范围广平滑,过载能力较强,受电磁干扰影响小。
而且价格便宜,成本底。
最终方案:
普通直流电机。
2.5本章小结
综上所述,本章目的主要根据题目要求来选取了该设计所需要的硬件设备,以及设计方式的选择,它追求技术较为成熟、完备、可靠,因此本系统具有一定的开发前景。
第三章硬件设计
3.1系统硬件设计及组成
硬件设计是整个系统的基础,要考虑的方面很多,除了实现此设计的基本功能以外,主要还要考虑如下几个因素:
①系统稳定度;②器件的通用性或易选购性;③软件编程的易实现性;④系统其它功能及性能指标;因此硬件设计至关重要。
现从各功能模块的实现逐个进行分析探讨。
在本设计中用户通过键盘输入密码,确认后系统调用密码比较判断函数,如果密码在规定的时间内输入正确,单片机输出开门信号开锁。
如果在规定的时间内没完成密码的输入,系统则自动清除所输入的密码,并提示重新输入。
用户发现错误时,可以清除重输。
密码输入后,通过校验后了,如果密码错误则启动报警系统,初始密码由系统设定,用户可根据自己的要求设定密码,修改密码时首先需要与旧密码匹配,如果输入旧密码错误则系统报警并自动退出密码修改系统。
启动报警,旧密码正确,则可以输入新密码,系统设定密码为6位,当输入密码不为6位或输入的新密码不一致时密码修改失败,系统报警并自动退出密码修改状态。
如果输入的新密码为6位并且两次输入的新密码一致则修改密码成功。
图3-1系统设计框图
3.1.1主控模块
AT89C52是一个低功耗,高性能CMOS8位单片机,片内含4kBytes的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT80C52引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。
图3-2AT89C52引脚图
VCC:
电源电压5V
GND:
接地
P0:
是一组8位漏极开路型双向I/O口,也即地址/数据总线复用总线,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1:
是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,7个引脚被外部信号校验期间P1接收低8位地址。
P2:
是一个带有内部上拉电阻的8位双向I/O口,即地址总线。
P2的输出缓冲级可驱动4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。
在访问8位地址的外部数据存储器时,P2口线上的内阻在整个访问期间不改变。
Flash编程或校验时,P2也接收高位地址和其它控制信号。
P3:
是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,低电平有效,当AT89C52由外部程序存储器取指令(或时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,要有两次有效的PSEN信号。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
时钟电路--此次设计的时钟电路由一个12MHz的晶振和两个22PF的陶瓷贴片电容组成。
89C52芯片内部有一个高增益反相放大器,用于构成振荡器。
引线XTAL1和XTAL2分别为反向放大器的输入和输出,两端跨接石英晶体及两个电容就可构成稳定的自激振荡器。
而电容器C1,C2起稳定振荡频率,并对振荡频率有微调作用,C1和C2可在20-100PF之间取值,这里取22PF。
电路如图3-3所示。
图3-3时钟电路
复位电路--手动按钮复位需要人为在复位输入端RST上加入高电平。
一般采用的办法是在RST端和正电源VCC之间接一个按钮。
当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。
手动按钮复位的电路如所示。
由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。
通常采用手动复位和上电自动复位结合,其电路如图3-4所示。
图3-4复位电路
3.1.2指示报警模块
图3-5
说明:
LED灯采用共阳极方式连接。
当黄灯D1亮绿灯D1灭时,可以输入密码.
图3-6
说明:
黄灯D1亮,开始输入密码,每写一位数码管上显示“—”。
图3-7
说明:
确认后,黄灯D1和绿灯D2不亮,数码管都显示“日”,电机转动;
图3-8
说明:
输入密码少位或者输入密码错误,黄灯D1亮,绿灯D2不亮,数码管显示“F”,电机不转,同时蜂鸣器会发出报警声。
图3-9
说明:
当按下修改密码键盘时,黄灯D1和绿灯D2都亮,可以进行修改密码。
3.1.3光电报警器
图3-10光电报警器模块
说明:
当光路没被遮挡时,会发出连续的报警声,且红灯亮,防止密码柜被被偷。
3.1.4直流电机模块
图3-11流电机模块
说明:
当对应单片机的IO口输出低电平时,三极管打开,有电流通过电机,电机转动,开锁。
3.1.5键盘接口模块
图3-12键盘模块
说明:
通过P3口组成的4*4矩阵键盘,各个键定义为0,1,2,3,4,5,6,7,8,9,A-修改密码,D-复位,“*”修改密码和密码共用确认键。
3.1.6数码管显示模块
图3-13
说明:
通过P0口控制数码管的段选,然后用P2口的低六位控制数码管的位选,从而达到数码管显示。
3.2硬件明细
名称
规格
数量
单片机
AT89C52
1
LED
红黄绿蓝
各1个
直流电机
2v-6v
1
矩阵键盘
4*4
1
电解电容
10uf
2
瓷片电容
30pf
1
数码管
3位一体
2
电阻
10k,1k,
各2个
蜂鸣器
5v有源
2
3.3本章小结
主要是对硬件进行的设计硬件设计是整个系统的基础,要考虑的方面很多,除了实现此设计的基本功能以外,主要还要考虑如下几个因素:
①系统稳定度;②器件的通用性或易选购性;③软件编程的易实现性;④系统其它功能及性能指标。
硬件的设计决定了产品性价比。
第四章软件设计
4.1模块划分
本设计软件部分要实现的功能分别为:
键盘扫描,数码管显示,延时部分,
蜂鸣器报警,led显示,直流电机。
4.1.1键盘扫描模块
键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。
4.1.2密码修改模块
必须输入原来的密码才能输入你想想要的密码。
4.1.3密码比较判断模块
该模块的功能是将键盘输入的密码与设定的密码进行比较,若密码正确,则开锁;若不正确则调用报警模块。
4.1.4显示模块
该模块的功能是显示,由于是分屏显示数据,所以需要调用各显示子程序。
4.1.5报警模块
该模块为了保证安全性,当密码输入的次数超过1,就会发出报警,以便
引起人们的注意。
4.2系统程序设计流程图
图4-1
图4-2
根据设计要求的功能,程序主要分为三部分,即:
(1)动态显示部分;
(2)行列键盘扫描部分;
(3)按键功能实现部分。
按键功能实现部分融合在主程序中,根据不同的键值进行分支处理,以完成设计要求的不同控制功能;按键控制主要完成数据输入、显示刷新控制等。
程序主流程主要完成键盘扫描、键值处理,键值分支控制的任务,流程图如图5-2
是在IRQ4的1KHZ中断中控制显示的,采用动态扫描的方式,1KHz的时基中断每1ms进一次中断,在中断中对2ms计数器i进行累加,当i从0累加到2时,则刚好为2ms,此时更新一个位的数码管显示,并对i进行清零。
具体流程图5-3。
图4-31KHz时基中断流程
4.3设计程序
由于程序过多,如附录所示。
第五章系统调试
5.1Proteus仿真调试
主要用的是ISIS部分。
ProteusISIS是一种操作简便而又功能强大
的原理图编译工具,它运行于Windows操作系统上,可以仿真、分析各种模拟
器件和集成电路,该软件的特点有:
•实现了单片机仿真和SPICE电路仿真结合。
具有模拟电路仿真、数字电路
仿真、单片机及其外围电路组成的系统仿真、RS232动态仿真、IC调试器、SPI
调试器、键盘和LCD系统仿真等功能;有各种虚拟仪器。
如示波器、逻辑分析
仪、信号发生器等。
•支持主流单片机系统的仿真。
目前支持的单片机类型有68000系列、8051
系列、ARM系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、PIC24
系列、BSTAMP系列、Z80系列、HC11系列以及各种外围芯片。
•提供软件调试功能。
在硬件仿真系统中具有全速、单步、设置断点等调试
功能,同时可以观察各种变量、寄存器等的当前状态,因此在该软件仿真系统中,
也必须具有这些功能;同时支持第三方的软件编译和调试环境。
如KeiluVision3
等软件。
•具有强大的原理图绘制功能。
运行Proteus的ISIS程序后,进入该仿真软件的主界面。
在工作前,要设置
VIEW菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。
通过工作
栏中的P(从库中选择元件命令)命令。
通过debug菜单的相应命令仿真程序和电路的运行情况。
Proteus提供了比较丰富的测试信号用于电路的测试。
对于单片机硬件电路
和软件的调试,Proteus提供了两种方法;一种是系统总执行效果,一种是对软
件的分部调试以看具体的执行情况。
对于总体执行效果的调试方法,只需要执行debug菜单下的execute菜单项
或F12快捷键启动执行,用debug菜单下的pauseanimation菜单项或pause键暂停系统的运行。
对于软件的分部调试,应先执行debug菜单下的start/restartdebugging菜单
项命令,此时可以选择stepover、stepinto和stepout命令执行程序,执行的效果是单句执行、进入子程序执行和跳出子程序执行。
在执行了start/restartdebugging命令后,在debug菜单的下面要出现仿真中所涉及到的软件列表和单片机的系统资源等,可供调试时分析和查看。
5.2调试结果
将LED数码管与单片机板I/O接口连接,然后连接单片机与4×4键盘。
再用下载线连接单片机下载线接口与电脑接口,打开单片机电源开关,打开集成开发环境,以PROJECT方式打开程序,或直接按F8将程序下载到单片机芯片中。
下载完毕后,拔掉下载线,打开电源开关,开机时数码管不显示,初始化密码为“123456”,密码可以更改,并保存在RAM中;然后按下述步骤对硬件电路进行测试:
(1)开机时数码管不显示。
初始化密码为“123456”,密码可以更改,并保存在RAM中。
(2)按下“D”,显示全部清空。
(3)随时可以输入数值,并在LED数码管上实时显示,当键入一个新数值时,原来显示的数字左移一位,并在最右边的一位上显示出新键入的键值,键值为0~9。
(4)按下“*”键,则表示确定键按下,则进行密码对比,如相符则在LED数码管上显示“日日日日日日”以示通过;如不符,则显示“FFFFFF”。
(6)按下“A”键,表示要修改密码的状态。
5.3结果分析
此设计验证了LED板可以按照相应的给定值进行显示的功能基本达到了作为电子密码锁的绝大部分功能,但还有许多不足和需要完善的地方。
5.4本章小结
这次的设计,我熟悉了使用Proteus的技巧,学会了制作电路板的一些技巧,并且熟悉了如何选购使用电子元器件。
在设计中,我学到了如何使用C语言对单片机进行编写程序,熟悉了使用keil软件,并且加深了对单片机的编程技巧。
知道了仿真的的重要性。
并且得到了一些经验,受益匪浅。
总结与体会
设计总结:
1.通过此次试验我对51单片机系统开发的过程有了一定的了解。
2.在这次试验中认真的学习C语言,完成了设计要求和设计指标。
3.我提出的建议是
心得体会:
回顾此次单片机课程设计,至今我仍感慨颇多,从理论到实现,在做设计的这些日子里,可以说是苦多于甜,但是可以学到许多许多东西,同时不仅可以巩固以前所学过的知识,而且学到了很多书本上没有学到过的知识。
51单片机开发的过程有了一定的了解,掌握了系统硬件设计及软件设计的设计原则、思路、步骤。
并通过不断上网查资料、到图书馆借阅图书的方式,进一步熟悉并掌握利用这些工具来进行单片机设计的方法。
通过这次的学习,我真正学到了不少东西,真正体会到了理论联系实际的重要性。
经过这次设计使我能更快更准确的掌握专业方面的理论知识同时,通过实践,又证明了我们所学理论知识的科学性和正确性。
在设计的过程中我也发现了自己的许多不足之处,比如模电知识不扎实,还会犯一些低级的电路错误,还有自己的C语言的编写能力还有待提高,做完后发现自己做的好像有点简单了,不过我相信这只是我的开始,有这个兴趣以后还会继续做一些东西。
所以我准备寒假回去补课,努力学习。
尽快把数电和模电知识补过来。
参考文献
1.郭天祥概念51单片机C语言教程,电子工业出版社,2009.1
2.张毅刚主编. 单片机原理及应用 北京:
高等教育出版社,2010.5.
3.周立功.单片机实验与实践[M].北京:
北京航空航天大学出版社,2004.
附录一
附录二
#include
unsignedintnum=10;//开始让数码管什么都显示
bitset=0;//定义设置密码的位
charcount=-1;//开始让COUNT=-1,方便后面显示数码管
sbitBeep=P1^2;//蜂鸣器
unsignedchartemp;
unsignedcharpws[6]={1,2,3,4,5,6};//原始密码
unsignedcharpwx[6];//按下的数字存储区
bitrightflag;//密码正确标志位
unsignedcharworkbuf[6];
unsignedcharcodetabledu[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40
};//段选码,共阴极
unsignedcharcodetablewe[]={
0xfe,0xfd,0xfb,0xf7,0xef,0xdf
};//位选码
unsignedintkeyscan();
voiddelay(unsignedcharz)//延时,ms级
{
unsignedchary;
for(;z>0;z--)
for(y=120;y>0;y--);
}
voidsetpw()//设置密码函数
{
keyscan();
}
unsignedintkeyscan()//键盘扫描函数
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!
=0xf0)
{
delay(5);//键盘去抖,最好20ms以上,这里用了5ms
temp=P3;
temp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 电子 密码锁 设计 保险柜