基于单片机的智能电子密码锁Word格式.docx
《基于单片机的智能电子密码锁Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能电子密码锁Word格式.docx(40页珍藏版)》请在冰豆网上搜索。
Abstract
ElectronicCodeLockisapasswordinputthroughthecontrolcircuit,orchip,thuscontrollingtheclosedmechanicalswitchtocompletethelock,closedthetaskofelectronicproducts.Itisofmanytypes,haveasimplecircuitproducts,butalsothehighercostchip-basedproducts.Nowthewidelyusedelectroniccodelockisachipatthecore,achievedthroughprogramming.Performanceandsafetyhavegreatlyexceededthemechanicallock,thefollowingfeatures:
1.Privacyisgood,codingquantityisfargreaterthanthespringlock.Randomunlockingsuccessrateisalmostzero.
2.Passwordvariable.Userscanalwayschangethepassword,topreventpasswordtheft,butalsoavoidsthelockbecauseofstaffturnoverErShianddrawingdown.
3.Errorinputprotection.Whenyouenteryourpasswordwrongseveraltimes,thealarmsystemstartedautomatically.
4.E-lockoperationissimple,aschoolthatwill.
Keywords;
MCULEDdigitaltubematrixkeypadlock
目录
1概述1
1.1引言1
1.2电子密码锁的背景2
1.3电子锁设计的意义和本设计的特点2
2系统模块电路的设计4
2.1系统总设计结构图4
2.2AT89C51单片机4
2.2.1引脚介绍4
2.2.2最小系统8
2.3键盘模块10
2.4显示模块11
2.5开锁模块12
2.6报警模块13
3系统的软件设计15
3.1系统软件设计思路15
3.2系统软件设计流程图16
4系统的仿真17
4.1仿真软件介绍17
4.1.1Proteus介绍17
4.1.2Keiluvision4与Proteus联调18
4.2仿真过程19
整个软件设计的思路:
19
总结23
参考文献24
致谢25
附录1系统电路图26
附录2程序清单27
main.c27
io.c34
func.c40
timer.c42
def.h44
1概述
1.1引言
随着社会物质财富的日益增长,如何实现家庭防盗这一问题也变的尤其的突出,而锁自古以来就是把守门户的铁将军,人们对它要求甚高,即要安全可靠地防盗,又要使用方便。
目前普遍使用的机械锁结构简单、使用方便、价格便宜。
但在使用过程中暴露了很多缺点:
(1)机械锁是靠金属制成的钥匙上的不同齿形与锁芯的配合来工作的。
所以很多钥匙可以互开,保密性差,安全性低。
(2)钥匙一旦丢失,无论谁捡到都可以将锁打开。
(3)机械锁的材料大多为黄铜,质地较软容易损坏。
(4)机械锁钥匙易于复制,不适于诸如宾馆等公共场所使用。
所以机械锁已难以满足当前社会和人们的要求。
出于安全、方便的需要。
随着人们生活水平的提高,电子密码防盗作为防盗卫士的作用日趋重要。
电子密码锁用密码代替钥匙,不但省去了佩戴钥匙的烦恼,也从根本上解决了普通门锁保密性差的缺点。
如果采用6位密码,则密码组合可达到
,每增加1位,密码组合就增加10倍。
从而提高了密码锁的安全系数。
密码锁被广泛应用保险柜、保险箱、文件柜、防磁防火柜、防盗门、银库门、仓库门、车门、民用门等。
目前市场上普遍所见的电子密码锁的密码很容易被窥探和多次试探,而丢失密码,使密码锁失去其安全性。
该电子密码锁利用单片机作为主控核心,单片机(AT89C51)所具有的特殊功能使得电子密码锁的保密性能大大加强,这样就可以有效的防止多次试探密码的可能性。
随着单片机和其它智能芯片的进一步开发防盗锁将实现智能化,这将是锁的安全性能大大提高。
本系统实现密码一次输入的提示功能,若密码输入不正确将发出“嘀嘀”的报警声,引起他人警觉。
若密码输入正确将发出“叮咚”的门铃声。
本系统使用的单片机所具有强大的功能能够实现智能控制用来完成密码的输入、判断和比较从而执行相应的开锁显示或报警等功能。
其性能和安全性已大大超过了机械锁。
其特点如下:
(1)保密性好,编码量多,远远大于弹子锁。
(2)密码可变,用户可以随时更改密码,防止密码被盗,同时也可以避免因人员的更替而使锁的密级下降。
(3)误码输入保护,当输入密码多次错误时,报警系统自动启动。
(4)无活动零件,不会磨损,寿命长。
(5)使用灵活性好,不像机械锁必须佩带钥匙才能开锁。
(6)电子密码锁操作简单易行,一学即会。
1.2电子密码锁的背景
随着社会科技的进步,锁已发展到了密码锁、磁性锁、电子锁、激光锁、声控锁等等。
在传统钥匙的基础上,加了一组或多组密码,不同声音,不同磁场,不同声波,不同光束光波,不同图像。
(如指纹、眼底视网膜等)来控制锁的开启。
从而大大提高了锁的安全性,使不法之徒无从下手,人们也就能对自身财产安全有了更多的保障。
当今安全信息系统应用越来越广泛,特别在保护机密、维护隐私和财产保护方面起到重大作用,而基于电子密码锁的安全系统是其中的组成部分,因此研究它具有重大的现实意义。
1.3电子锁设计的意义和本设计的特点
单片机,亦称单片微电脑或单片微型计算机。
它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。
微计算机(单片机)在这种情况下诞生了,它为我们改变了什么?
纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。
以前没有单片机时,这些东西也能做,但是只能使用复杂的模拟电路,然而这样做出来的产品不仅体积大,而且成本高,并且由于长期使用,元器件不断老化,控制的精度自然也会达不到标准。
在单片机产生后,我们就将控制这些东西变为智能化了,我们只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。
这样产品的体积变小了,成本也降低了,长期使用也不会担心精度达不到了,且容易升级改善。
电子锁可以在日常生活和现代办公中,住宅与办公室的安全防范、单位的文件档案、财务报表以及一些个人资料的保存等多种场合使用。
大大提高了主人物资的安全性,安全可以代替老式机械锁。
目前使用的密码锁种类繁多,各具特色。
本文从经济实用的角度出发,采用AT89C51单机,研制了一款具有防盗自动报警功能的电子密码锁。
该密码锁设计方法合理,简单易行,成本低,符合住宅、办公室用锁要求,具有一定的推广价值。
(1)系统设置6位密码,密码通过键盘输入,若密码正确,则将锁打开。
(2)密码由用户自己设定,在开锁状态下,用户可自行修改密码。
(3)具有自动报警功能,若密码输入错误3次,由蜂鸣器发出报警声,保证了系统的安全性。
系统工作时,用户通过按键输入6位密码,单片机将输入密码与设定密码进行比较,若密码正确,则发出开锁信号,将锁打开,系统不报警;
若密码不正确,则有相应的指示灯闪动,并要求重新输入密码,重新输入密码的次数不能超过3次,若3次输入的密码都不正确,则发出报警信号。
2系统模块电路的设计
2.1系统总设计结构图
图2.1系统结构图
本设计以AT89C51为主控芯片,主要由以下几个部分组成:
复位电路、时钟电路、键盘部分、显示部分、报警部分等组成,下面将对以上几个部分一一介绍。
2.2AT89C51单片机
2.2.1引脚介绍
AT89C51是一个低功耗,高性能CMOS8位单片机,片内含4kBytes的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。
AT89C51具有如下特点:
40个引脚,4kBytesFlash片内程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,片内时钟振荡器。
图2.2AT89C51引脚
此外,AT89C51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
其主要功能特性:
兼容MCS-51指令系统4k可反复擦写(>
1000次)FlashROM
32个双向I/O口4.5-5.5V工作电压
2个16位可编程定时/计数器时钟频率0-33MHz
全双工UART串行中断口线128x8bit内部RAM
2个外部中断源低功耗空闲和省电模式
中断唤醒省电模式3级加密
软件设置空闲和省电功能双数据寄存器指针
可以看出AT89C51提供以下标准功能:
4K字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个数据指针,两个16位定时器/计数器,一个5向量两级中断结构,一个全双工串行通信口,以及片内振荡器和时钟。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式时停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式是在RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到一个硬件复位。
AT89C51引脚功能说明:
VCC:
电源电压
GND:
地
P0口:
P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端口。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:
P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号校验期间,P1接收低8位地址。
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流I。
在访问8位地址的外部数据存储器(如执行:
MOVX@Ri指令)时,P2口线上的内(也即特殊功能寄存器,在整个访问期间不改变。
Flash编程或校验时,P2也接收高位地址和其它控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/O口。
P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端口时,被外部拉低的P3口将用上拉电阻输出电流I。
P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,P3口的第二功能如下表(表2.1)
表2.1P3口的第二功能
端口功能
第二功能
端口引脚
RXD(P3.0)
串行输入口
T0(P3.4)
定时/计数器0外部输入
TXD(P3.1)
串行输出口
T1(P3.5)
定时/计数器1外部输入
INT0(P3.2)
外中断0
WR(P3.6)
外部数据存储器写选通
INT1(P3.3)
外中断1
RD(P3.7)
外部数据存储器读选通
RST:
复位输入。
当振荡工作时,RST引脚出现两个机器周期上高电平将使单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不再访问外部存储器,ALE仍以时钟振荡频率的1/6输出的正脉冲信号,因此它可对外输出时钟或用于定时目地,要注意的是:
当访问外部数据存储器时将跳过一个ALE脉冲。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置禁位后,只有一条MOVX和MOVC指令ALE才会被激活。
此外,该引脚伎被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,高有两次有效的PSEN信号。
EA/VPP:
外部访问允许。
欲使CPU访问外部程序存储器(地址0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V的编程电压VPP。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:
振荡器反相放大器的输出端。
2.2.2最小系统
图2.3单片机最小系统
单片机的最小化系统或者称为最小应用系统是指单片机能正常工作所必须的外围元件,是用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路.我们采用的是AT89C51芯片,它内部自带4K的FLASH程序存储器,一般情况下,这4K的存储空间足够我们使用,所以我们将AT89C51芯片的第31脚固定接高电平(PCB画板时已经接死),所以我们只用芯片内部的4K程序存储器。
单片机的时钟电路有一个12M的晶振和两个30P的小电容组成,它们决定了单片机的工作时间精度为1微秒。
复位电路由22UF的电容和1K的电阻及IN4148二极管组成,以前教科书上常推荐用10UF电容和10K电阻组成复位电路,这里我们根据实际经验选用22UF的电容和1K的电阻,其好处是在满足单片机可靠复位的前提下降低了复位引脚的对地阻抗,可以显著增强单片机复位电路的抗干扰能力。
二极管的作用是起快速泄放电容电量的功能,满足短时间多次复位都能成功
晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的放大或缩小后就成了电脑中各种不同的总线频率。
以声卡为例,要实现对模拟信号44.1kHz或48kHz的采样,频率发生器就必须提供一个44.1kHz或48kHz的时钟频率。
如果需要对这两种音频同时支持的话,声卡就需要有两颗晶振。
但是现在的娱乐级声卡为了降低成本,通常都采用SCR将输出的采样频率固定在48kHz,但是SRC会对音质带来损害,而且现在的娱乐级声卡都没有很好地解决这个问题。
现在应用最广泛的是石英晶体振荡器。
石英晶体振荡器是一种高精度和高稳定度的振荡器,石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可以取代LC谐振回路的晶体谐振元件。
石英晶体振荡器广泛的应用在电视机、影碟机、录像机、无线通讯设备、电子钟表、单片机、数字仪器仪表等电子设备中。
石英晶体振荡器为数据处理设备产生时钟信号和为特定系统提供基准信号。
在单片机中为其提供时钟频率。
石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:
从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。
其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。
只要在晶体振子板极上施加交变电压,就会使晶片产生机械变形振动,此现象即所谓逆压电效应。
当外加电压频率等于晶体谐振器的固有频率时,就会发生压电谐振,从而导致机械变形的振幅突然增大。
图2.4晶振电路原理图
复位电路:
由电容串联电阻构成,由图并结合"
电容电压不能突变"
的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.
图2.5复位电路原理图
2.3键盘模块
由于本设计所用到的按键数量较多而不适合用独立按键式键盘。
采用的是矩阵式按键键盘,它由行线和列线组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。
本设计中使用的这个4*3键盘不但能完成密码的输入还能作特别功能键使用,比如清空显示功能等。
键盘的每个按键功能在程序设计中设置。
当确认有按键按下后,下一步就要识别哪一个按键按下。
对键的识别通常有两种方法:
一种是常用的逐行扫描法;
另一种是速度较快的线反转法。
首先辨别键盘中有无按键按下,由单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。
方法是:
向列线输出全扫描字00H,把全部列线置为低电平,然后将行线的电平状态读入累加器A中。
如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。
图2.6按键键盘
共计数字键10个,功能键2个,用4×
3组成0-9数字键、确认键Enter及修改键CCC,10个数字键用来输入密码,另外2个功能键分别是:
CCC、Enter.其中CCC键的功能是当输入密码错误的时候,清除前面已经输入的数据,重新输入。
Enter键的功能是确认输入的密码。
2.4显示模块
图2.7七段数码管
七段LED显示器由7个发光二极管组成,其中7个长条形的发光管排列成“日”字形,如上图所示,由七个发光二极管组成的七段显示器。
如再加一个贺点形的发光管在显示器的右下角作为显示小数点用,则组成八段LED显示器。
它能显示各种数字及部份英文字母。
LED显示器有两种不同的形式:
一种是8个发光二极管的阳极都连在一起的,称之为共阳LED显示器;
另一种是8个发光二极管的阴极都连在一起的,称之为共阴LED显示器。
如图2.8所示:
图2.8LED数码显示器
共阴和共阳结构的LED显示器各笔划段名和安排位置是相同的。
当二极管导通时,相应的笔划段发亮,由发亮的笔划段组合而显示的各种字符。
8个笔划段hgfedcba对应于一个字节(8位)的D7D6D5D4D3D2D1D0,于是用8位二进制码就可以表示欲显示字符的字形代码。
在单片机系统中,通常用LED数码显示器来显示各种数字或符号。
由于它具有显示清晰、亮度高、使用电压低、寿命长的特点,因此使用非常广泛。
2.5开锁模块
本设计所用的开锁部分由电机(Motor)来实现,这种电机有两根引线,更换两根引线的极性,电机换向。
该驱动电路要求能进行正反转和停止控制。
图2.9开锁电路
上电时由软件辅助完成初始化,使P1.0为低电平"
0"
,三极管不导通,若密码输入正确,P1.0输出高电平"
1"
,三极管导通,电机转动,锁打开。
2.6报警模块
报警电平由P1.1控制,上电后同样是由软件完成初始化为"
状态。
在3次输入密码错误的情况下,由P1.1输出高电平,三极管Q1导通,由喇叭报警,蜂鸣器发出连续的响声,约30S。
密码错误输入达3次后,由P1.0输出"
,开锁信号封锁。
同时定时器开始计时,30S后才能再次输入密码尝试开锁。
图2.10报警电路
3系统的软件设计
3.1系统软件设计思路
密码锁的软件设计可分为以下几个部分:
主程序、密码初始化子程序、键盘输入子程序、密码检查子程序、密码错误报警子程序、T0定时中断服务子程序和延时子程序组成。
(1)密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:
(2)密码输入功能:
按下一个数字键,一个“-”就显示在数码管上。
(3)密码清除功能:
当按下清除键时,清除前面输入的所有值,并清除所有显示。
(4)密码更改功能:
将输入的值作为新的密码。
(5)开锁功能:
当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。
主要的设计过程:
第一步,用Proteus进行硬件电路的设计。
第二步,用Keil软件进行电子密码锁的程序设计、仿真、软件调试。
第三步,用PROTEUS进行模拟软、硬件调试,仿真。
3.2系统软件设计流程图
图3.1软件设计流程图
4系统的仿真
4.1仿真软件介绍
4.1.1Proteus介绍
由于计算机技术的飞速发展,