断电密码不丢失的电子密码锁的设计.doc_第1页
断电密码不丢失的电子密码锁的设计.doc_第2页
断电密码不丢失的电子密码锁的设计.doc_第3页
断电密码不丢失的电子密码锁的设计.doc_第4页
断电密码不丢失的电子密码锁的设计.doc_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

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

文档简介

断电密码不丢失的电子密码锁的设计课程设计说明书一、设计内容及要求设置6位密码,保存在EEPROM内以保证断电后密码不丢失;断电后重新开机,输入六位密码,若正确则指示灯亮,否则联系3次错误输入,则报警。二、设计原始资料单片机原理及应用教程 范立南 2006年 1月单片机原理及应用教程 刘瑞新 2003年07月三、设计完成后提交的文件和图表1计算说明书部分1)方案论证报告打印版或手写版2)程序流程图3)具体程序 2图纸部分:具体电路原理图打印版四、进程安排教学内容 学时 地点资料查阅与学习讨论 1天 单片机实验室分散设计 5天 单片机实验室编写报告 3天 单片机实验室成果验收 1天 单片机实验室 五、主要参考资料电子设计自动化技术基础马建国、孟宪元编 清华大学出版 2004年4月 实用电子系统设计基础 姜威 2008年1月 单片机系统的PROTEUS设计与仿真 张靖武 2007年4月 指导老师成绩答辩小组成绩总成绩摘 要本文以AT89C51单片机为控制核心,结合矩阵键盘、AT24C02掉电存储系统等来完成电子密码锁的设计。单片机接收键入的代码,并与存贮在EEPROM中的密码进行比较,如果密码正确,则驱动电磁执行器开锁;如果密码不正确,则允许操作人员重新输入密码,最多可输入三次;如果三次都不正确,则单片机通过通信线路向智能监控器报警。以固定的格式接收电子锁具发来的报警信息和状态信息,电子锁具对每一组数据重复发送采用大数译码定律纠错,以保证数据接收的准确性。对于错误信息,则马上通过LCD显示器及蜂鸣器发出声报警。系统能完成开锁、超次报警、等功能的密码锁的功能。除上述基本的密码锁功能外,还具有掉电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用。关键词:AT89C51;AT24C02;电子密码锁;矩阵键盘目录摘要 1第1章 绪论3第2章 电路的功能单元设计52.1输入密码正确亮灯机构52.2按键电路设计62.3 AT24C02掉电存储单元的设计72.4设计总体电路图7第3章 软件设计 83.1程序设计83.2 模块介绍93.3 程序流程图9第4章 模拟仿真部分21第5章 心得体会23第6章 参考文献23第1章 绪论单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使密码锁具有很高的安全性、可靠性,应用日益广泛。随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。设计本文时构思了两种方案:一种是用以AT89C51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用以AT89C51为核心的单片机控制方案。其主要具有如下功能:(1)设置8位密码,密码通过键盘输入,若密码正确,则将锁打开。(2)密码可以由用户自己修改设定(只支持8位密码),锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。(3)报警、锁定键盘功能。密码输入错误数码显示器会出现错误提示, 若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。电子密码锁的设计主要由三部分组成:44矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有LED提示灯,报警蜂鸣器等。密码锁设计的关键问题是实现密码的输入、清除、更改、开锁等功能:(1)密码输入功能:按下一个数字键,一个“”就显示在最右边的数码管上,同时将先前输入的所有“”向左移动一位。(2)密码清除功能:当按下清除键时,清除前面输入的所有值,并清除所有显示。(3)密码更改功能:将输入的值作为新的密码。(4)开锁功能:当按下开锁键,系统将输入与密码进行检查核对,如果正确锁打开,否则不打开。主要的设计过程:第一步,用PROTEUS进行硬件电路的设计。第二步,用WAVE进行电子密码锁的程序设计、仿真、软件调试。第三步,用PROTEUS进行模拟软、硬件调试。第2章 系统总体方案设计采用一种是用以AT89S51为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的IO端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图1.1所示。89S51单片机矩阵键盘控制输入错误锁定键盘延时报警控制电路AT24C02掉电存储开锁指示电路串口显示电路图1.1 单片机控制方案单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用此方案。第2章 电路的功能单元设计2.1 输入密码正确亮灯机构通过单片机送给开锁执行机构,亮灯表示开锁,其原理如图3.1所示。 单片机微控制器P1,0置低电平灯亮密码正确?Y返回N当用户输入的密码正确输入的话,单片机便输出开门信号,送到开锁驱动电路,达到开锁的目的。如下图。图3.12.2 按键电路设计由于设计要求使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样的方法。每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。按键的操作面板如图3.2所示。共计数字键10个,功能键2个。 图3.210个数字键用来输入密码,另外2个功能键分别是:清除和确认。确认键的功能是确认输入的密码。面板上还有一个蜂鸣器,其中一个功能是用来指示操作的按键是否在成功的按下;另外一个功能是当用户输入密码错误的次数超过了3次,鸣笛以示报警。2.3 AT24C02掉电存储单元的设计掉电存储单元的作用是在电源断开的时候,存储当前设定的单价信息。AT24C02是ATMEL公司的2KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。其电路如图3.3所示。图3.3 掉电存储电路原理图图中R8、R10是上拉电阻,其作用是减少AT24C02的静态功耗,由于AT24C02的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。在protuse连线如下图:图3.42.4 设计总体电路图如下:第3章 软件设计3.1 程序设计程序设计(Programming)是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件也占有重要的地位。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。所谓“模块”,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。模块程序设计法的主要优点是:(1) 单个模块比起一个完整的程序易编写、调试及修改。(2) 程序的易读性好。(3) 程序的修改可局部化。(4) 模块可以共存,一个模块可以被多个任务在不同条件下调用。(5) 模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。3.2模块介绍该计程计价系统的软件设计分为以下几个模块:3.2.1主程序模块主程序主要完成初始化、设置中断向量、检查有无按键按下、以及调用显示等等。 3.2.2键盘扫描及识别子程序 键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回。3.2.3调电存储服务程序当比较密码的时候,需要读AT24C02程序,将存储在芯片内的数据读到RAM中,然后和输入的密码相比较。当修改密码的时候,需要把输入的密码保存到AT24C02中。3.2.4 显示子程序由于是分屏显示数据,所以就要用到5个显示子程序,分别是:关闭状态显示子程序、开锁状态显示子程序、密码输入及修改状态显示子程序、密码输入错误后的提示子程序。密码在规定的时间内输入错误次数超过3次后的锁定状态显示子程序。3.3 程序流程图3.3.1 主程序流程图如图所示 开始初始化有键按下?调用显示扫描识别按键全部按完?超时?比较密码亮灯开始自动清除3次?锁定NNYYYYNN图4.1主程序流程图3.3.2 源程序代码: 以下8个字节存放8位数码管的段码LED_BIT_1EQU30HLED_BIT_2EQU31HLED_BIT_3EQU32HLED_BIT_4EQU33HLED_BIT_5EQU34HLED_BIT_6EQU35HLED_BIT_7EQU36HLED_BIT_8EQU37H;以下6个字节存放初始密码WORD_1EQU38HWORD_2EQU39HWORD_3EQU 3AHWORD_4EQU3BHWORD_5EQU3CHWORD_6EQU3DH;以下6个字节存放用户输入的6位密码KEY_1EQU3EHKEY_2EQU3FHKEY_3EQU40HKEY_4EQU41HKEY_5EQU42HKEY_6EQU43H;*CNT_AEQU44HCNT_BEQU45HKEY_CNTEQU46H;已输出的密码位数LINEEQU47H;按键行号ROWEQU48H;按键列号VALEQU49H;键值;*;以下为初始化程序,包括数据存储空间初始化,设置初始密码ORG 0000H MOV R5,#3HSJMP STARTORG 000BHLJMP INT_T0START: MOVCNT_A,#00H;程序初始化MOVCNT_B,#00HMOVKEY_CNT,#00HMOVLINE,#00HMOVROW,#00HMOVVAL,#00HSETBP1.0MOVLED_BIT_1,#00H;段码存储区清0MOVLED_BIT_2,#00HMOVLED_BIT_3,#00HMOVLED_BIT_4,#00HMOVLED_BIT_5,#00HMOVLED_BIT_6,#00HMOVLED_BIT_7,#79HMOVLED_BIT_8,#73HMOVKEY_1,#00H;输入密码存储区清0MOVKEY_2,#00HMOVKEY_3,#00HMOVKEY_4,#00HMOVKEY_5,#00HMOVKEY_6,#00HMOVTMOD,#01HMOVTH0,#(65536-700)/256MOVTL0,#(65536-700)MOD256MOVIE,#82H;*SDA EQU P1.7SCK EQU P1.6SNUM EQU 60HSLAW EQU 61HRNUM EQU 62HSLAR EQU 63HCALL LDATAMOV SLAW,#0A0HMOV SNUM,#7MOV R1,51HCALL WRNBLJMP HAHALDATA: MOV R0,#0A1H MOV R0,#50H INC R0 MOV R0,#1 INC R0 MOV R0,#2 INC R0 MOV R0,#3 INC R0 MOV R0,#4 INC R0 MOV R0,#5 INC R0 MOV R0,#6 RET;一下是向eeprom发送n个字节 WRNB: CALL STA MOV A,SLAW INC SLAW CALL WRB CALL ASKC JB F0,WRNBWLP: MOV A,R1 CALL WRB CALL ASKC JB F0,WRNB INC R1 DJNZ SNUM,WLP CALL STP RET;发送一个字节WRB: MOV R0,#8WLP1: RLC A JC WR1 AJMP WR00WLP2: DJNZ R0,WLP1 RETWR1: SETB SDA SETB SCK NOP NOP CLR SCK CLR SDA AJMP WLP2WR00: CLR SDA SETB SCK NOP NOP CLR SCK AJMP WLP2;应答检查 正常应答时F0标志为 0 ,否则F0为 1ASKC: SETB SDA SETB SCK CLR F0 MOV C,SDA JNC EXIT SETB F0EXIT: CLR SCK RET;以下是 起始信号 STA: SETB SDA SETB SCK NOP NOP CLR SDA NOP NOP CLR SCK RET;以下是 终止信号 STP: CLR SDA SETB SCK NOP NOP SETB SDA NOP NOP CLR SDA RET;从at24c02中读出数据HAHA:MOV R1,#50HMOV SLAW,#0A0HMOV SNUM ,#1CALL WRNBMOV SLAR,#0A1HMOV RNUM,#6MOV R1,#38HCALL RDNBLJMP A0;从eeprom读取n个字节RDNB: CALL STA MOV A,SLAR CALL WRB CALL ASKC JB F0,RDNBRNLP:CALL RDB MOV R1,A DJNZ RNUM,FASK CALL NAS CALL STP RETFASK:CALL ASK INC R1 SJMP RNLP;以下是发送应答位 0ASK:CLR SDA SETB SCK NOP NOP CLR SCK SETB SDA RET;以下是非应答位 1NAS: SETB SDA SETB SCK NOP NOP CLR SCK CLR SDA RET;以下是从eeprom读一个字节RDB:MOV R0,#8RLP:SETB SDA SETB SCK MOV C,SDA MOV A,R2 RLC A MOV R2,A CLR SCK DJNZ R0,RLP RETA0:LCALLDISP;*;以下为键盘扫描程序,计算键值并存入VALLSCAN:MOVP3,#0F0H;扫描行码L1:JNBP3.0,L2LCALLDLY_SJNBP3.0,L2MOVLINE,#00HLJMPRSCANL2:JNBP3.1,L3LCALLDLY_SJNBP3.1,L3MOVLINE,#01HLJMPRSCANL3:JNBP3.2,L4LCALLDLY_SJNBP3.2,L4MOVLINE,#02HLJMPRSCANL4:JNBP3.3,A0LCALLDLY_SJNBP3.3,A0MOVLINE,#03HRSCAN:MOVP3,#0FH;扫描列码C1:JNBP3.4,C2MOVROW,#00HLJMPCALCUC2:JNBP3.5,C3MOVROW,#01HLJMPCALCUC3:JNBP3.6,C1MOVROW,#02HCALCU:MOVA,LINE;计算键值MOVB,#03HMULABADDA,ROWMOVVAL,A;*;以下为按键处理程序,对不同的按键作出响应CJNEA,#0AH,J1;是否为CLR键MOVR1,KEY_CNTCJNER1,#00H,J2LCALLALARM_1LJMPSTART J2:LCALLSHIFTR DECKEY_CNTW00:LCALLDISP;等待按键抬起MOVA,P3CJNEA,#0FH,W01LJMPA0W01:MOVA,P3CJNEA,#0F0H,W02LJMPA0W02:SJMPW00J1:MOVA,VALCJNEA,#0BH,J3;判断是否为ENTER键MOVR1,KEY_CNTCJNER1,#06H,J4MOVA,WORD_1;比较密码CJNEA,3EH,J5MOVA,WORD_2CJNEA,3FH,J5MOVA,WORD_3CJNEA,40H,J5MOVA,WORD_4CJNEA,41H,J5MOVA,WORD_5CJNEA,42H,J5MOVA,WORD_6CJNEA,43H,J5CLRP1.0LCALLDLY_LLJMPFINIJ5:DJNZ R5,LOOPLJMP ALARM_2 LOOP: LJMPSTARTJ4:;LCALLALARM_1LJMPSTARTJ3:INCKEY_CNT;按下数字键MOVA,KEY_CNTCJNEA,#07H,K1LCALLALARM_1W10:LCALLDISP;等待按键抬起MOVA,P3CJNEA,#0FH,W11LJMPSTARTW11:MOVA,P3CJNEA,#0F0H,W12LJMPSTARTW12:SJMPW10LJMPSTARTLJMPSTARTK1:LCALLSHIFTLW20:LCALLDISP;等待按键抬起MOVA,P3CJNEA,#0FH,W21LJMPA0W21:MOVA,P3CJNEA,#0F0H,W22LJMPA0W22:SJMPW20LJMPA0ALARM_1:SETBTR0;操作错误报警JBTR0,$RETALARM_2:SETBTR0;密码错误报警JBTR0,$LCALLDLY_LRET;*;定时器中断服务程序,用于声音报警INT_T0:CPLP1.5MOVTH0,#(65536-700)/256MOVTL0,#(65536-700)MOD256INCCNT_AMOVR1,CNT_ACJNE R1,#30,RETUNEMOVCNT_A,#00HINCCNT_BMOVR1,CNT_BCJNER1,#20,RETUNEMOVCNT_A,#00HMOVCNT_B,#00HCLRTR0RETUNE:RETI;*;段码,输入密码左移子程序SHIFTL:MOVLED_BIT_6,LED_BIT_5MOVLED_BIT_5,LED_BIT_4MOVLED_BIT_4,LED_BIT_3MOVLED_BIT_3,LED_BIT_2MOVLED_BIT_2,LED_BIT_1MOVLED_BIT_1,#40HMOVKEY_6,KEY_5MOVKEY_5,KEY_4MOVKEY_4,KEY_3MOVKEY_3,KEY_2MOVKEY_2,KEY_1MOVKEY_1,VALRET;*;段码,输入密码右移子程序SHIFTR:MOVLED_BIT_1,LED_BIT_2MOVLED_BIT_2,LED_BIT_3MOVLED_BIT_3,LED_BIT_4MOVLED_BIT_4,LED_BIT_5MOVLED_BIT_5,LED_BIT_6MOVLED_BIT_6,#00HMOVKEY_1,KEY_2MOVKEY_2,KEY_3MOVKEY_3,KEY_4MOVKEY_4,KEY_5MOVKEY_5,KEY_6MOVKEY_6,#00HRET;*;以下为数码显示子程序DISP:CLRP2.7MOVP0,LED_BIT_8LCALLDLY_SSETBP2.7CLRP2.6MOVP0,LED_BIT_7LCALLDLY_SSETBP2.6CLRP2.5MOVP0,LED_BIT_6LCALLDLY_SSETBP2.5CLRP2.4MOVP0,LED_BIT_5LCALLDLY_SSETBP2.4CLRP2.3MOVP0,LED_BIT_4LCALLDLY_SSETBP2.3CLRP2.2MOVP0,LED_BIT_3LCALLDLY_SSETBP2.2CLRP2.1MOVP0,LED_BIT_2LCALLDLY_SSETBP2.1CLRP2.0MOVP0,LED_BIT_1LCALLDLY_SSETBP2.0RET;*DLY_S:MOVR6,#10D1:MOVR7,#250DJNZR7,$DJNZR6,D1RETDLY_L:MOVR5,#100D2:MOVR6,#100D3:MOVR7,#248DJNZR7,$DJNZR6,D3DJNZR5,D2RETFINI:NOPEND4.4 部分模块仿真在该设计中,利用Proteus软件进行仿真。Proteus是英国Labcenter公司开发的电路分析与仿真软件。运行于Windows操作系统上,可以仿真、分析(SPICE)数字电路、模拟电路、数模混合电路,是目前唯一能实现对51、PIC、AVR、HC11、ARM等处理器的仿真软件。PROTEUS中的整个电路仿真是在ISIS原理图设计模块下延续下来的,原理图中曲线图和电路激励以及直接布置在电路上的探针一起,出现在元件的旁边,任何时候都可以通过按下空格键对电路进行仿真,加快了从编译到仿真的速度,仿真器有独自的应用窗口和用户界面。该软件的特点是:(1)集原理图设计、仿真和PCB设计于一体,真正实现从

温馨提示

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

评论

0/150

提交评论