基于51单片机的电子密码锁的设计(完整版)资料_第1页
基于51单片机的电子密码锁的设计(完整版)资料_第2页
基于51单片机的电子密码锁的设计(完整版)资料_第3页
基于51单片机的电子密码锁的设计(完整版)资料_第4页
基于51单片机的电子密码锁的设计(完整版)资料_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于51单片机的电子密码锁的设计(完整版)资料(可以直接使用,可编辑优秀版资料,欢迎下载)

目录基于51单片机的电子密码锁的设计(完整版)资料(可以直接使用,可编辑优秀版资料,欢迎下载)1.设计的目的和意义1.1设计的目的………………11.2设计内容…………………11.3设计要求…………………12.硬件电路设计2.1总体方案设计……………12.2硬件电路图………………13.系统软件设计3.1.密码的设定………………23.2.密码的输入………………2………33.4.原程序清单………………33.5.程序流程图………………54.电路调试4.1.调试过程……………………7参考文献………………8

1.设计的目的和意义1.1设计的目的:(二级标题和正文为小四号宋体,行距为固定值20磅)(1).根据要求设计PC机的控制电路和程序(2).熟悉模拟实验线路(3).掌握程序的系统调试1.2设计的内容:(1).密码的设定:在此程序中密码是由我们自己设定的,通过两个按键将三位分别密码保存在20H,21H,22H单元当中。(2).密码的输入:两个按键来完成密码的输入,其原理和密码设定是一样的,不过就是将他们存贮的单元做了改变,将其分别放入10H,11H,12H单元中。当完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。(3).密码的判断与处理:先将设定的密码20H单元的值与后来用户输入的密码10H单元中的值进行比较,如果正确就进行下一单元的比较,不正确则跳转到计数子程序计数。如果计数到三次就跳转到喇叭鸣叫子程序。1.3设计要求:先用两个按键设定好3个初始密码,再采用二个按键实现3个密码的输入功能,当密码输入正确之后,锁就打开,相应的LED灯亮。如果输入的三次的密码不正确,就立即引发报警声。2.硬件电路设计:(3).将P1.3口接到喇叭口.3.系统软件设计:3.1.密码的设定:在此程序中密码是3.2.密码的输入:两个按键来完成密码的输入,其原理和密码设定是一样的,不过就是将他们存贮的单元做了改变,将其分别放入10H,11H,12H单元中。其过程也是灯亮输入密码灯灭停止输入.当完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。先将设定的密码20H单元的值与后来用户输入的密码10H单元中的值进行比较,如果正确就进行下一单元的比较,依次类推.不正确则跳转到计数子程序计数。如果计数到三次就跳转到喇叭鸣叫子程序.org0000hclrp1.2clrp1.4movr7,#03h;设定错误密码的次数mov20h,p1.0;存入第一位密码setbp1.4;置P1.4口灯亮lcallldelay;延时等待输入clrp1.4;输入结束lcallldelaymov21h,p1.1setbp1.4lcallldelayclrp1.4lcallldelaymov22h,p1.0start:setbp1.4lcallldelayclrp1.4lcallldelaymov10h,p1.0;输入第一位密码setbp1.4lcallldelayclrp1.4lcallldelaymov11h,p1.1setbp1.4lcallldelayclrp1.4mov12h,p1.0mova,20h;密码比较字程序cjnea,10h,longmova,21hcjnea,11h,longmova,22hcjnea,12h,longsetbp1.2jmpoverldelay:movr1,#50;延时环节t0:movr2,#200t1:movr3,#125t4:djnzr3,t4djnzr2,t1djnzr1,t0retlong:djnzr7,start;错误密码次数记数程序ljmplong1long1:;警报子程序clrp1.3callDelay3setbp1.3callDelay3ljmpLong1Delay3:movr1,#44djnzR1,$retover:end3.5.程序流程图等待输入等待输入存入三位密码到20H.21H.22H单元.输入三位密码到10H.11H.12H单元P1.2接口控制的灯亮.20H=10H?21H=11H?22H=12H?结束R7=0?引发警报器否否是是否定是是是否否是是是是图1.14.电路调试4.1调试过程通过两个开关输入设定初始密码,三位密码分别送到各子的单元并保存.接下来再通过开关输入密码并保存在相应的单元,再进行密码比较,如果密码正确等亮.如果错误先记数,够了3次就发出警报,不够三次在进行密码输入和原始密码进行比较.

参考文献目录目录 I基于单片机密码锁的设计 II摘要 IIAbstract II前言 I第1章绪论 11.1课题背景 11.2课题设计目标 1第2章系统方案论证 22.1主控部分的选择 22.2密码输入方式的选择 2第3章系统总体设计和主要芯片介绍 33.1系统总体设计 33.2主要芯片介绍 4AT89S52 4存储芯片AT24C02 5显示器 6第4章硬件设计 84.1键盘输入模块 84.2密码存储模块 94.3复位部分 104.4晶振部分 114.5显示模块 124.6报警部分 124.7开锁部分 13第5章系统软件设计 145.1系统程序流程图 14主程序流程图 14键功能程序流程图 15开锁程序流程图 165.2子程序举例 17开锁子程序 17按键扫描子程序 19密修改码子程序 21结论 24致谢 25参考文献 26附录A 27TESTSOFTWARE 27附录B 29附录C 30附录D 31基于单片机密码锁的设计摘要随着人们生活水平的提高,如何实现家庭防盗这一问题也变得尤为突出,传统的机械锁,由于其构造的简单,安全性能低,无法满足人们的需要。在科学技术不断发展的今天,电子密码防盗锁作为防盗卫士的作用显得日趋重要[1]。本次设计的题目是基于单片机的电子密码锁的设计,系统由AT89S52与低功耗CMOS型E²PROMAT24C02作为主控芯片与数据存储器单元,结合外围的键盘输入、LCD显示、报警、开锁等电路模块。它能完成以下功能:正确输入密码前提下,开锁;错误输入密码情况下,报警;密码可以根据用户需要更改。本密码锁具有设计方法合理,简单易行,成本低,安全实用等特点,具有一定的推广价值。关键词电子密码锁报警液晶显示AT89S52

THEDESIGNELECTRONICCODELOCKBASEDONTHEMCU AbstractWiththedevelopmentofthepeople'slivingstandard,howtoachievethefamilysecurityisbecomingimportantinparticular.Thetraditionalmechanicallockisunabletomeetthepeople'sneedsbecauseofitssimplestructure,lowsecurity.Nowadays,withthecontinuousdevelopmentofthescienceandtechnology,Electronicpasswordanti-theftlockplaysamoreimportantroleasthesecurityguards.ThemainpaperisaboutthedesignelectroniccodelockbasedontheMCU.ThesystemiscomposedwithAT89S52,E²PROMAT24C02,datamemoryelementandtheperipheralcircuitssuchasLCDdisplay,alarmingcircuit.Itcanaccomplishthefollowingfunction:openthelockwithacorrectlypassword,giveanalarmwiththemistakepassword,changethepasswordifthehostwant.Thelockhassomefeatureslikeareasonabledesignmethods,simpletowork,lowcostandsecurity.Italsohassomepromotionvalue.KeywordsElectroniccodelockAlarmLCDdisplayAT89S52前言随着科学技术的不断发展,人们对日常生活的安全保险器件的要就越来越高,电子安全密码锁是基于这一要求的保险器件,其设计概念及应用与常见的保安密码锁有所不同。从系统设计观点看,电子安全密码锁是一个实体域定义的概念,比较机械安全密码锁,具有设计/实现简便,密码装定灵活制造成本低廉等优点,每一位解锁意图码在安全密码锁内部引发的试图解锁动作,可称为安全密码的“解锁事件”一个解锁事件序列包含一系列有序的解锁事件。电子安全密码锁完全匹配时方可逐步开启密码锁。当今智能电子密码锁发展已经到了非常高的境界,由于电子元件特别是单片机应用在这几年得到空前发展,无论功能性,稳定性都比较全面,在保密方面已做到人眼识别,指纹识别,人声识别基本上电影上有的现实也有。在国外发展比较早,所以应用也比较广泛,主要在家庭装较贵重地方,银行,保险柜等应用较多,在国内这方面发展也较快,不管自己开发或是引进都有,在重要地方应用也较多,由于价钱比普通弹子锁较贵,早几年应用较少,现在越来越普及到平常化,未来的发展也会越来越被大众采用,由于它的功能、安全是弹子锁无法相比的。发展前境是非常大的。第1章绪论1.1课题背景随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题[2]。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁[3]。

20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。

目前,在西方发达国家,密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我国密码锁整体水平尚处于国际上70年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用。1.2课题设计目标本设计采用AT89C51单片机为主控芯片,结合外围电路,通过软件程序组成电子密码锁系统,能够实现:1.正确输入密码前提下,开锁并有正确提示;2.错误输入密码情况下,蜂鸣器报警并短暂锁定键盘;3.密码可以根据用户需要更改。4.为防止误操作,更改密码需有两次确认。5.输出密码错误三次锁死键盘。6.密码掉电保存功能。第2章系统方案论证2.1主控部分的选择方案一:采用数字电路控制用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,将密码保存在JK触发器中,与输入密码通过比较器比较,判断结果是否相符合[4]。采用数字电路设计的方案好处就是设计简单,但控制的准确性和灵活性差,故不采用。方案二:采用以单片机为核心的控制方案选用单片机作为系统的核心部件,实现控制与处理的功能。单片机具有资源丰富、速度快、编程容易等优点。利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接液晶显示(LCD),键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标,因此综合考虑,本系统采用方案二。2.2密码输入方式的选择方案一:指纹输入识别指纹识别技术主要涉及四个功能:读取指纹图像、提取特征、保存数据和比对。通过指纹读取设备读取到人体指纹的图像,然后要对原始图像进行初步的处理,使之更清晰,再通过指纹辨识软件建立指纹的特征数据。软件从指纹上找到被称为“节点”(minutiae)的数据点,即指纹纹路的分叉、终止或打圈处的坐标位置,这些点同时具有七种以上的唯一性特征。通常手指上平均具有70个节点,所以这种方法会产生大约490个数据。这些数据,通常称为模板。通过计算机模糊比较的方法,把两个指纹的模板进行比较,计算出它们的相似程度,最终得到两个指纹的匹配结果,从而判断输入结果的正确与否[5]。考虑到本方案软硬件太过复杂,而且成本也高,故不采用。方案二:矩阵键盘输入识别由各按键组成的矩阵键盘每条行线和列线都对应一条I/O口线,键位设在行线和列线的交叉点,当一个键按下就会有某一条行线与某一条列线接触,只要确定接触的是哪两条线,即哪两个I/O口线,就可以确定哪一个键被触动。行线设计成上拉口线,初始时被置高电位,列线悬空,初始置低。通过不断读行线口线,或者中断方式触发键位扫描。当发现有键按下,将列线逐一置低,其他列线置高,读行线口线。当某条列线置低时,某条行线也被拉低,则确定这两条线的交点处的按钮被按下。每个按键都可通过程序赋予功能,从而完成密码识别[6]。本方案简单易行,故采用。

第3章系统总体设计和主要芯片介绍3.1系统总体设计本设计主要由单片机、矩阵键盘、液晶显示器和密码存储等部分组成。其中矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可。系统整体框图如图3-1所示。显示模块键盘输入模块显示模块键盘输入模块AT89S52报警电路复位电路报警电路复位电路开锁电路密码存储模块开锁电路密码存储模块图3-1系统结构框图各模块功能如下:1.键盘输入模块:分为密码输入按键与几个功能按键,用于完成密码锁输入功能。2.显示模块:用于完成对系统状态显示及操作提示功能。3.复位电路:完成系统的复位。4.报警电路:用于完成输错密码时候的警报功能。5.密码存储模块:用于完成掉电存储功能,使修改的密码断电后仍能保存。6.开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及开锁提示。3.2主要芯片介绍AT89S52AT89S52单片机是一个低功耗,高性能CMOS8位单片机,片内含8KBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案[7]。AT89C51具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89C51可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。AT89S52的管脚分布如图3-2所示。图3-2AT89S52芯片管脚P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P3口作为AT89S52的一些特殊功能管脚备选功能,P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)AT89S52主要特性如表3-1所示。表3-1AT89S52主要特性兼容MCS-51指令系统8k可反复擦写(>1000次)ISPFlashROM32个双向I/O口4.5-5.5V工作电压3个16位可编程定时/计数器时钟频率0-33MHz全双工UART串行中断口线256x8bit内部RAM2个外部中断源低功耗空闲和省电模式中断唤醒省电模式3级加密位看门狗(WDT)电路软件设置空闲和省电功能灵活的ISP字节和分页编程双数据寄存器指针存储芯片AT24C02AT24C02是美国Atmel公司的低功耗CMOS型E²PROM,内含256×8位存储空间,具有工作电压宽(2.5~5.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)、抗干扰能力强、数据不易丢失、体积小等特点。而且他是采用了I²C总线式进行数据读写的串行器件,占用很少的资源和I/O线,并且支持在线编程,进行数据实时的存取十分方便。AT24C02中带有的片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。I2C总线是一种用于IC器件之间连接的二线制总线。他通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件。AT24C02正是运用了I²C规程,使用主/从机双向通信,主机(通常为单片机)和从机(AT24C02)均可工作于接收器和发送器状态。主机产生串行时钟信号(通过SCL引脚)并发出控制字,控制总线的传送方向,并产生开始和停止的条件。无论是主机还是从机,接收到一个字节后必须发出一个确认信号ACK。AT24C02的控制字由8位二进制数构成,在开始信号发出以后,主机便会发出控制字,以选择从机并控制总线传送的方向。管脚描述:SCL为串行时钟:串行时钟输入管脚用于产生器件所有数据发送或接收的时钟这是一个输入管脚。SDL为串行数据/地址:双向串行数据/地址管脚用于器件所有数据的发送或接收SDL,是一个开漏输出管脚可与其它开漏输出或集电极开路输出进行线或。A0、A1、A2为器件地址输入端:当使用24C02时最大可级联8个器件,如果只有一个24C02被总线寻址,这三个地址输入脚A0、A1、A2可悬空或连接到Vss。WP为写保护:如果WP管脚连接到Vcc所有的内容都被写保护只能读当WP,管脚连接到Vss或悬空,允许器件进行正常的读/写操作[8]。管脚图如图3-3所示。图3-3AT24C02引脚图LCD1602显示器现在的字符型液晶模块已经是单片机应用设计中最常用的信息显示器件了。1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点。1602型LCD可以显示2行16个字符,有8位数据总线D0~D7和RS,R/W,EN三个控制端口,工作电压为5V,并且具有字符对比度调节和背光功能。接口信号说明:1602型LCD的接口信号说明如表3-2所示。表3-21602型LCD的接口信号说明第1脚VSS电源地第9脚D2双向数据线第2脚VDD+5V电源第10脚D3双向数据线第3脚VEE液晶显示偏压信号第11脚D4双向数据线第4脚RS数据/命令选择端第12脚D5双向数据线第5脚R/W读/写选择端第13脚D6双向数据线第6脚E使能端第14脚D7双向数据线第7脚D0双向数据线第15脚BLA背光源正极第8脚D1双向数据线第16脚BLK背光源负极主要技术参数:1602型LCD的主要技术参数如表3-3所示。表3-31602型LCD的主要技术参数显示容量16×2个字符芯片工作电压4.5~5.5V工作电流2.0mA(5.0V)模块最佳工作电压5.0V字符尺寸2.95×4.35(WXH)mm基本操作程序:读状态:令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×4矩阵键盘,显示部分选择字符型液晶显示LCD1602,密码存储部分选用AT24C02芯片来完成。其原理图如图4-1所示。图4-1电路原理图4.1键盘输入模块由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵式按键键盘,它由行和列组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个4×4键盘不但能完成密码的输入还能作特别功能键使用。键盘的每个按键功能在程序设计中设置。它与单片机的连接如图4-2所示。图4-2键盘输入模块4.2密码存储模块图4-3所示AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在AT89S52试验开发板上它们都接地,第5脚和第8脚分别为正、负电源。第8脚SDL为串行数据输入/输出,数据通过这条双向I²C总线串行传送,在AT89S52试验开发板上和单片机的P3.6连接。第6脚SCL为串行时钟输入线,在AT89S52试验开发板上和单片机的P3.7连接。SDL和SCL都需要和正电源间各接一个5.1K的电阻上拉。第6脚接P3.5。AT24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的写入时间,一次操作可写入多达8个字节的数据。图4-3密码存储电路4.3复位部分单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。在接通电源瞬间,电容C2上的电压很小,复位下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态,由于电容C2足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。其电路如图4-4所示。图4-4复位电路4.4晶振部分AT89S52引脚XTAL1和XTAL2与晶体振荡器及电容C2、C3按图4-5所示方式连接。晶振、电容C2/C3及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C2、C3的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C2、C3取值范围在5~30pF之间。根据实际情况,本设计中采用12MHZ作为系统的外部晶振。电容取值为30pF。其电路图如图4-5所示。图4-5晶振电路4.5显示模块显示部分由液晶显示器LCD1602取代普通的数码管完成。开锁时,按下键盘上的开锁按键后,利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*。当密码输入完成时,按下确认键,如果输入的密码正确的话,LCD显示“DOOROPEN”,单片机其中P2.0引脚会输出低电平,使三极管T2导通,电磁铁吸合,继电器开关跳转,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“CODEWRONG”,P2.0输出的是高电平,电子密码锁不能打开。通过LCD显示屏,可以清楚地判断出密码锁所处的状态。电路图如图4-6所示。图4-6显示电路4.6报警部分报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,“叮”声,每按一下,发声一次,密码正确时,响两声并开锁,当密码输入错误时,单片机的P2.1引脚为低电平,三极管T3导通蜂鸣器发出噪声报警。如图4-7所示。图4-7报警电路4.7开锁部分开锁控制电路的功能是当输入正确的密码后将锁打开。系统使用单片机其中一引脚线发出信号,经三极管放大后,由继电器驱动电磁阀动作将锁打开。用户通过键盘任意设置密码,并储存在E2PROM中作为锁码指令。只有用户操作键盘时,单片机的电源端才能得到3V电源,否则,单片机处于节电工作方式。开锁步骤如下:首先按下键盘上的开锁按键,然后利用键盘上的数字键0-9输入密码,最后按下确认键。当用户输入密码后,单片机自动识别密码,如果密码不符,则报警。只有当密码正确,单片机才能使继电器处于开锁状态。具体电路如图4-8所示。图4-8开锁电路第5章系统软件设计5.1系统程序流程图主程序流程图主程序设计流程图如图5-1所示。开始开始初始化初始化修改开锁修改开锁密码正确密码正确输入旧密码输入旧密码 N原密码相同Y原密码相同开锁出错报警NN Y开锁出错报警设新密码设新密码返回返回图5-1主程序流程图键功能程序流程图键功能程序流程图如图5-2所示。键功能程序键功能程序键值=0~9?键值=开锁?键值=确认?键值=设置?返回密码输入程序确认程序设置程序开锁程序 Y N Y N Y N Y N图5-2键功能流程图开锁程序流程图开锁程序流程图如图5-3所示。LCD初始化LCD初始化按开锁键按开锁键输入密码输入密码确认程序开锁确认程序开锁N输入密码正确?N输入密码正确?报警程序报警程序 开锁成功返回 Y 开锁成功返回图5-3开锁流程图5.2子程序举例开锁子程序 if(N==6) { if(ReInputEn==0) //重置密码功能未开启 { for(i=0;i<6;) { if(CurrentPassword[i]==InputData[i]) { i++; } else { ErrorCont++; if(ErrorCont==3) //错误输入计数达三次时,报警并锁定键盘 { write_1602com(er); for(i=0;i<16;i++) { write_1602dat(Error[i]); } do Alam_KeyUnable(); while(1); } else { TR0=1; //开启定时 key_disable=1; //锁定键盘 pass=0; break; } } } if(i==6) { CorrectCont++; if(CorrectCont==1) //正确输入计数,当只有一次正确输入时,开锁, { //DisplayListChar(0,1,LockOpen); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(LockOpen[j]); } TwoAlam(); //操作成功提示音 KEY=0; //开锁 pass=1; //置正确标志位 TR0=1; //开启定时 open_led=0; //开锁指示灯亮 for(j=0;j<6;j++) //将输入清除 { InputData[i]=0; } } else //当两次正确输入时,开启重置密码功能 { //DisplayListChar(0,1,SetNew); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(SetNew[j]); } TwoAlam(); //操作成功提示 ReInputEn=1; //允许重置密码输入 CorrectCont=0; //正确计数器清零 } } 按键扫描子程序//==============将按键值编码为数值=========================unsignedcharcoding(unsignedcharm) { unsignedchark; switch(m) { case(0x18):k=1;break; case(0x28):k=2;break; case(0x48):k=3;break; case(0x88):k='A';break; case(0x14):k=4;break; case(0x24):k=5;break; case(0x44):k=6;break; case(0x84):k='B';break; case(0x12):k=7;break; case(0x22):k=8;break; case(0x42):k=9;break; case(0x82):k='C';break; case(0x11):k='*';break; case(0x21):k=0;break; case(0x41):k='#';break; case(0x81):k='D';break; } return(k);}//====================按键检测并返回按键值==========================unsignedcharkeynum(void){ unsignedcharrow,col,i; P1=0xf0; if((P1&0xf0)!=0xf0) { Delay5Ms();Delay5Ms(); if((P1&0xf0)!=0xf0) { row=P1^0xf0;//确定行线 i=0; P1=a[i]; //精确定位 while(i<4) { if((P1&0xf0)!=0xf0) { col=~(P1&0xff); //确定列线 break;//已定位后提前退出 } else { i++; P1=a[i]; } } } else { return0; } while((P1&0xf0)!=0xf0); return(row|col); //行线与列线组合后返回 } elsereturn0; //无键按下时返回0}密修改码子程序//========================重置密码=================================voidResetPassword(void){ unsignedchari; unsignedcharj; if(pass==0) { pass=0; DisplayChar(); ThreeAlam(); } else { if(ReInputEn==1) { if(N==6) { ReInputCont++; if(ReInputCont==2) { for(i=0;i<6;) { if(TempPassword[i]==InputData[i])//将两次输入的新密码作对比 i++; else { //DisplayListChar(0,1,Error); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(Error[j]); } ThreeAlam(); //错误提示 pass=0; ReInputEn=0; //关闭重置功能, ReInputCont=0; DisplayChar(); break; } } if(i==6) { //DisplayListChar(0,1,ResetOK); write_1602com(er); for(j=0;j<16;j++) { write_1602dat(ResetOK[j]); } TwoAlam(); //操作成功提示 WrToROM(TempPassword,0,6); //将新密码写入24C02存储 ReInputEn=0; } ReInputCont=0; CorrectCont=0; } else { OneAlam(); //DisplayListChar(0,1,again); //显示再次输入一次 write_1602com(er); for(j=0;j<16;j++) { write_1602dat(again[j]); } for(i=0;i<6;i++) { TempPassword[i]=InputData[i];//将第一次输入的数据暂存起来 } } N=0; //输入数据位数计数器清零 } } }}

结论在着手本次毕业设计时,通过查阅网络与图书馆搜集到的资料,再加上指导老师指点,结合生活中对密码锁的功能特性要求,设计出了这一套电子密码锁系统的主要硬件结构和软件结构,基本完成了课题的要求。不过由于了解的专业知识尚浅,对课题的研究经验的不足,使得在技术的解决与运用上显得粗糙了一些,特别是功能按键的设定。所幸该系统能基本上完成一个电子密码锁应有的功能特性:开锁提示,输错报警,密码修改,掉电存储。本系统用的是6位密码输入,有106种密码输入方案,相较于机械锁具,防盗能力已经相当不俗。这个系统软硬件设计简单,易于开发,成本较低,安全可靠,操作方便。本次设计的电子密码锁是以手动键盘输入密码的,通过这几个月对电子密码锁的研究学习,发觉这种密码输入方式可以进行改革。在越来越高科技化的今天,遥控控制显的愈发重要,今后的电子密码锁应该具有以红外技术或无线电技术为辅助的密码按键输入远程交互技术,这样就能远程输入密码完成操作。也可以放弃传统的按键输入密码模式,借助传感器技术运用声控来实现密码输入,又或者人脸识别技术,还有一种就是用户指纹输入方式,这些都可以使开锁的时间更短更方便。电子密码锁产业将向静态功耗更低,外围电路更简化,可提供的功能或控制口更多,更人性化高科技化的方向发展。通过本次毕业设计的锻炼,我学到了很多有关电子密码锁的设计方法与工作原理,巩固了单片机知识。期间也碰到不少问题,比如如何去模拟实现开锁这一功能,解决办法是找了个微型电磁继电器作为锁具,其内部电磁开关特性符合开锁的现象。再到后来的焊接工作,由于粗心大意,焊接出错的情况不在少数,往往在调试的时候才得以发现,特别是4×4矩阵键盘的焊接,改了不下10次。系统调试时碰到过按键不灵敏的问题。后来增加了键盘列位置上的电阻,增加了电平,效果得到改善。慢工出细活,过程是很重要的,只有耐心细心努力地去把握过程,才能得到可喜的结果。

致谢在这大学的最后一页里,我要感谢的人很多,首先要感谢我的指导老师***老师,在整个毕业设计过程中,王老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,心点拨、热忱鼓励。王老师一丝不苟的作风,严谨求实的态度,踏踏实实的精神,深深地感动了我,当我遇到难题无从下手时,王老师总能给予我中肯的意见,我从心底里感谢他。还要感谢的是我们各课任课老师,没有你们的谆谆教诲,就没有我们学有所长的今天。当然,还要感谢寝室的兄弟们在我完成论文的过程中给予我的帮助和鼓励,也是他们陪我度过这四年的生活。最后要感谢的就是我的父母,谢谢你们对我的支持。现在即将挥别我的学校、老师、同学,还有我四年的大学生活,虽然依依不舍,但是对未来的路,我充满了信心。最后,感谢在大学期间认识我和我认识的所有人,有你们伴随,才有我大学生活的丰富多彩,绚丽多姿!参考文献[1]叶启明.单片机制作的新第型安全密码锁[J].家庭电子.2000,六期[2]郭海英.基于单片机的电子安全密码锁的设计[J].现代电子技术.2005,第三期[3]李明喜.新型电子密码锁的设计[J].机电产品开发与创新.2004,第八期[4]董继成.一种新型安全的单片机密码锁[J].电子技术.2004,第三期[5]电子世界.2001,第六期[6]李明喜.新型电子密码锁的设计[J].机电产品开发与创新.2004,第五期[7]瞿贵荣.实用电子密码锁[J].家庭电子.2000,第三期[8]杨茂涛.一种电子密码锁的实现[J].福建电脑.2004,第九期[9]张俊谟.单片机中级教程—原理与应用[M].北京:北京航空航天大学出版社[10]肖洪兵.跟我学用单片机[M].北京:北京航空航天大学出版社[11]Richard:“Park.ElectronicPassword-lockDesign”

附录ATESTSOFTWAREThe8051testsoftwareconceptisstraightforward.ItwasdesignedtobeamodularseriesofsmalltestprogramseachexercisingaspecificpartoftheDUT.Sinceeachtestwasstandalone,theywereloadedindependentlyofeachotherforexecutionontheDUT.Thisensuredthatonlythedesiredportionofthe8051DUTwasexercisedduringthetestandhelpedpinpointlocationoferrorsthatoccurduringtesting.AlltestprogramsresidedonthecontrollerPCuntilloadedviatheserialinterfacetotheDUTcomputer.Inthisway,individualtestscouldhavebeenmodifiedatanytimewithoutthenecessityofburningPROMs.Additionaltestscouldhavealsobeendevelopedandaddedwithoutimpactingtheoveralltestdesign.Theonlypermanentcode,whichwasresidentontheDUT,wasthebootcodeandserialcodeloaderroutinesthatestablishedcommunicationsbetweenthecontrollerPCandtheDUT.Alltestprogramsimplemented:•AnexternalUniversalAsynchronousReceiveandTransmitdevice(UART)fortransmissionoferrorinformationandcommunicationtocontrollercomputer.•Anexternalreal-timeclockfordataerrortag.•Awatchdogroutinedesignedtoprovidevisualverificationof8051healthandrestarttestcodeifnecessary.•A"foul-up"routinetoresetprogramcounterifitwandersoutofcodespace.•Anexternaltelemetrydatastoragememorytoprovidebackupofdataintheeventofaninterruptionindatatransmission.Thebriefdescriptionofeachofthesoftwaretestsusedisgivenbelow.Itshouldbenotedthatforeachtest,thereturnedtelemetry(includingtimetag)wassenttoboththetestcontrollerandthetelemetrymemory,givingthehighestreliabilitythatalldataiscaptured.Interrupt–Thistestused4of6availableinterruptvectors(Serial,External,Timer0Overflow,andTimer1Overflow)totriggerroutinesthatsequentiallymodifiedavalueintheaccumulatorwhichwasperiodicallycomparedtoaknownvalue.Unexpectedvaluesweretransmittedwithregisterinformation.Logic–Thistestperformedaseriesoflogicandmathcomputationsandprovidedthreetypesoferroridentifications:1)addition/subtraction,2)logicand3)multiplication/division.Allmiscomparesofcomputationsandexpectedresultsweretransmittedwithotherrelevantregisterinformation.Memory–ThistestloadedinternaldatamemoryatlocationsD:0x20throughD:0xff(orD:0x20throughD:0x080fortheCULPRiTDUT),indirectly,withan0x55pattern.Compareswereperformedcontinuouslyandmiscompareswerecorrectedwhileerrorinformationandregistervaluesweretransmitted.ProgramCounter-Theprogramcounterwasusedtocontinuouslyfetchconstantsatvariousoffsetsinthecode.Constantswerecomparedwithknownvaluesandmiscomparesweretransmittedalongwithrelevantregisterinformation.Registers–Thistestloadedeachoffour(0,1,2,3)banksofgeneral-purposeregisterswitheither0xAA(forbanks0and2)or0x55(forbanks1and3).ThepatternwasalternatedinordertotesttheProgramStatusWord(PSW)specialfunctionregister,whichcontrolsgeneral-purposeregisterbankselection.General-purposeregisterbankswerethencomparedwiththeirexpectedvalues.Allmiscompareswerecorrectedanderrorinformationwastransmitted.SpecialFunctionRegisters(SFR)–Thistestusedlearnedstaticvaluesof12out21availableSFRsandthenconstantlycomparedthelearnedvaluewiththecurrentone.Miscompareswerereloadedwithlearnedvalueanderrorinformationwastransmitted.Stack–Thistestperformedarithmeticbypushingandpoppingoperandsonthestack.Unexpectedresultswereattributedtoerrorsonthestackortothestackpointeritselfandweretransmittedwithrelevantregisterinformation.附录B总电路原理图:

附录C元器件清单:序号元件名称型号与规格单位数量1电阻4.7K个610K个12三极管8550个23发光二极管LED个24晶振12M个15电容10uf个122pf个26按键个177芯片AT24C02片1AT89S52片18蜂鸣器5V个19继电器5V个110液晶显示器1602块111实验板块1

基于单片机的电子密码锁设计摘要为了提高个人资料、部门文件档案的保密性和安全性,设计了一种应用AT89C52单片机设计的密码锁。用户可以自行写入文档、设置密码,并可以防止尝试去破译密码。硬件设计采用键盘输入的电子密码锁具有较高的优势,软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。测试结果表明,本系统各项功能已达到本设计的所有要求。关键词:密码锁;延时输入;防止暴力破解DesignofelectronictricklockbasedonsinglechipdeviceAbstractInordertoimprovethesecurityandsafetyofpersonaldata,thispaperintroducedanewdesigningmethodofelectroniccipherlocksbytheuseofAT89C52single-chipprocessor.Itcanbesetupsomeciphercode,savedfilesandpreventfromdecodedthecode.Thesoftwaredesignadoptionthedesignthoughtfromtoptobottom,tomakethesystemtowardweardistributetypeturntothedirectiondevelopmentofsmall,strengthenthesystemandcanexpandthestabilityandcirculateTesttheresultenunciation,variousfunctionsofthissystemarealreadyallrequestofthisdesign.Keywords:tricklock;delayinput;unencryptable目录TOC\o"1-3"\u摘要 1Abstract 1目录 2第1章单片机应用课程设计的目的和意义 3第2章单片机的基本原理 4第3章系统的硬件电路设计 83.1系统的整体设计框架 83.2单元电路的设计 8 8 93.3整体电路 10第4章系统的软件设计 114.1系统软件设计思路 114.2系统软件设计流程图 114.3软件中的功能函数 124.4软件设计中状态标志位 134.5软件调试 13第5章结论和展望 14第6章心得体会 16参考文献 19附录 20第1章单片机应用课程设计的目的和意义在日常的生活和工作中,住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁极不方便,安全性也得不到保证。[1]基于单片机的密码锁在许多行业有着广泛的应用,而文档加密是其中最基本,也是最具有代表性的一个例子。通过本次课程设计可以灵活运用单片机的基础知识,依据课程设计内容,能够完成从硬件电路图设计,到软件编程及系统调试实现系统功能,完成课程设计,加深对单片机基础知识的理解,并灵活运用,将各门知识综合应用。本次课程设计还可以通过上网查询器件资料,培养对新知识新技术的独立的学习能力和应用能力。在这次课程设计中,我们运用到了很多一切所学的知识和一些很有用的软件和工具,如AltiumDesigner制图、Keil软件、STC-ISP等。通过完成一个文档加密系统设计,从硬件设计到软件设计,增强分析问题、解决问题的能力,为日后的毕业设计及科研工作奠定良好的基础。第2章单片机的基本原理AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。1.主要特性:·与MCS-51兼容·4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年·全静态工作:0Hz-24Hz·三级程序存储器锁定·128*8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路2.管脚说明:VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论