电子密码锁设计(参考范文)_第1页
电子密码锁设计(参考范文)_第2页
电子密码锁设计(参考范文)_第3页
电子密码锁设计(参考范文)_第4页
电子密码锁设计(参考范文)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、北 海 职 业 学 院毕业设计 (论文)20122013学年度 电子信息工程 系(部) 应用电子技术 专业题 目学生姓名学生班级指导教师起止日期2012年10 月 日北海职业学院毕业设计 (论文)任务书系(部) 专业班级 姓名学号 题目:电子密码锁设计主要内容: 一种基于单片机和串行EEPROM的智能密码锁,是密码锁设计中比较简单的一种,其主要功能有键盘输入、LED数码管显示、加密、修改密码、密码检测、错误报警等简单易懂、使用方便、安全性能高等。本设计采用AT89S52单片机为芯片主体,采用AT24C08为掉电存储器的芯片。这种芯片稳定性高,成本低。它是采用AT89S52单片机和AT24C08

2、串行EEPROM,通过AT89S52模拟I2C总线和AT24C08通讯,实现密码锁的功能。基本要求:(由指导教师填写)主要参考书:1.孙涵芳,徐爱卿编著。MCS51/96系列单片机原理及应用(修订版)。北京:北京航空航天大学出版社,1996.42.何立民编著。MCS-51系列单片机应用系统设计(系统配置与接口技术)。北京:北京航空航天大学出版社,1993.8 3杜刚。电路设计与制板Protel应用教程(电子电路设计循序渐进系列教程)。北京:清华大学出版社,2006起止日期:指导教师职务(称)20 年 月 日 北海职业学院学生毕业设计(论文)成绩鉴定表姓 名性 别出生年月系(部)专 业班 级设计

3、(论文)题目电子密码锁设计指导教师对毕业设计(论文)的评语:成绩: 指导教师签字: 年 月 日答辩小组对优秀毕业设计(论文)的评语:成绩: 答辩小组组长签字: 年 月 日综合评定成绩(等级): 系(部)领导签字(盖章): 年 月 日北海职业学院毕业设计(论文)16电子密码锁设计作者:xxx【摘要】随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点,本设计使用ATMEL公司的AT89S52实现一基于单片机的电子密码锁的设计。本文介绍一种基于单片机和串行EEP

4、ROM的智能密码锁,是密码锁设计中比较简单的一种,其主要功能有键盘输入、LED数码管显示、加密、修改密码、密码检测、错误报警等简单易懂、使用方便、安全性能高等。本设计采用AT89S52单片机为芯片主体,采用AT24C08为掉电存储器的芯片。这种芯片稳定性高,成本低。它是采用AT89S52单片机和AT24C08串行EEPROM,通过AT89S52模拟I2C总线和AT24C08通讯,实现密码锁的功能。【关键词】 AT89S52 AT24C08 密码锁 矩阵键盘第一章 引言在日常的生活和工作中, 住宅与部门的安全防范、单位的文件档案、财务报表以及一些个人资料的保存多以加锁的办法来解决。若使用传统的机

5、械式钥匙开锁,人们常需携带多把钥匙, 使用极不方便, 且钥匙丢失后安全性即大打折扣。随着科学技术的不断发展,人们对日常生活中的安全保险器件的要求越来越高。为满足人们对锁的使用要求,增加其安全性,用密码代替钥匙的密码锁应运而生。密码锁具有安全性高、成本低、功耗低、易操作等优点。在安全技术防范领域,具有防盗报警功能的电子密码锁逐渐代替传统的机械式密码锁,克服了机械式密码锁密码量少、安全性能差的缺点,使密码锁无论在技术上还是在性能上都大大提高一步。随着大规模集成电路技术的发展,特别是单片机的问世,出现了带微处理器的智能密码锁,它除具有电子密码锁的功能外,还引入了智能化管理、专家分析系统等功能,从而使

6、密码锁具有很高的安全性、可靠性,应用日益广泛。随着人们对安全的重视和科技的发展,许多电子智能锁(指纹识别、IC卡辨认)已在国内外相继面世。但是这些产品的特点是针对特定的指纹和有效卡,只能适用于保密要求的箱、柜、门等。而且指纹识识别器若在公共场所使用存在容易机械损坏,IC卡还存在容易丢失、损坏等特点。加上其成本较高,一定程度上限制了这类产品的普及和推广。鉴于目前的技术水平与市场的接收程度,电子密码锁是这类电子防盗产品的主流。本次设计使用ATMEL公司的AT89S52实现一基于单片机的电子密码锁的设计第二章 方案论证设计本课题时构思时考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以

7、本文采用一种是用以AT89S52为核心的单片机控制方案。以AT89S51为核心的单片机控制方案利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理方框图如图21所示。图21单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级。第三章 硬件设计3.1 功能模块3.11开锁电路设计通过单片机送给开锁执行机构,将P3.5置低电平,密码正确指示灯亮,从而达到开锁的目的。其原理如图31所示。图31密码锁开锁示意图3.12按键电路设计由于设计要求使用矩阵键盘

8、,所以本设计就彩行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O口线的数目,在按键比较多的时候,通常采用这样方法。每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有N×M个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法,另一种是速度较快的线反转法。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法

9、是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。按键的操作面板如图32所示。共计数字键10个,功能键4个,键盘上还有2个指示灯和蜂鸣器。图32按键操作面板示意图其中10个数字键用来输入密码,另外4个功能键分别是:A、B、C、D。其中A键的功能是显示密码,B键的功能是确认输入的密码,C键的功能是当输入密码错误的时候,清除前面已经输入的数据,重新输入,D是用来进入修改密码的状态。上面的两个指示灯L1、L2、是用来指示操作的状态:L1是开门指示灯,正常的情况下无显示,当键盘动作且密码正确的时候

10、,灯亮;L2是电源状态指示灯,当接通电源时,指示灯自动点亮,否则,灯灭。面板上还有一个蜂鸣器,其功能是当用户输入密码错误时或密码输入错误次数超过了3次,鸣笛以示报警。3.13显示电路设计本系统设计的显示电路是为了给使用者以提示而设置的,选择四位连体共阳的数码管,本系统的显示采用并行显示的方式,只使用单片机的两个口P0口和P2口,就可以完成单片机的显示功能,显示电路的电路原理图如图33所示,P0口完成段码显示,P2口完成位选功能。电路设定:当密码输入错误次数达到三次以上时,显示”E”,当无输入断电时,则关闭显示,当忘记密码,输错密码,判断密码正确无误时,可通过功能键进行显示更改密码及判断。图33

11、显示器原理图3.14 AT24C08断电存储单元的设计断电存储单元的作用是在电源断开的时候,存储当前设定的信息。AT24C08是ATMEL公司的8KB字节的电可擦除存储芯片,采用两线串行的总线和单片机通讯,电压最低可以到2.5V,额定电流为1mA,静态电流10Ua(5.5V),芯片内的资料可以在断电的情况下保存40年以上,而且采用8脚的DIP封装,使用方便。其电路如图34所示。图34断电存储电路原理图由于AT24C08的数据线和地址线是复用的,采用串口的方式传送数据,所以只用两根线SCL(移位脉冲)和SDA(数据/地址)与单片机传送数据。每当设定一次单价,系统就自动调用存储程序,将单价信息保存

12、在芯片内;当系统重新上电的时候,自动调用读存储器程序,将存储器内的单价等信息,读到缓存单元中,供主程序使用。3.15 总体设计总框图图35总体设计框图3.2 原理图3.3 PCB图第四章 软件设计4.1 程序流程图 图41 主程序流程图 图42 修改密码流程图 图43 键盘程序流程图 图44 24c08程序流程图4.2 程序实现功能. 该主要由三部分组成:4×4矩阵键盘接口电路、密码锁的控制电路、输出八段显示电路。另外系统还有LED提示灯,报警蜂鸣器等,可分为以下几个模块: 垣残壁 (1)主程序模块 主程序主要完成初始化、检查有无按键按下、以及调用显示等等,其流程图如4-1所示。 (

13、2)显示子程序 由于是分屏显示数据,所以就要用到4个显示子程序,分别是:功能键显示密码状态子程序、修改密码显示子程序、判断密码输入正确提示子程序、密码输入错误次数超过3次后的锁定状态显示子程序,其流程图如4-2所示。 (3)键盘扫描及识别子程序 键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序,一旦有按键按下,便转向相应的子程序处理,处理结束再返回,其程序流程图如4-3所示。 (4)调电存储服务程序 当比较密码的时候,需要读AT24C08程序,将存储在芯片内的数据读到RAM中,然后和输入的密码相比较。当修改密码的时候,需要把输入的密码保存到AT24C08中,并实现断电保

14、护,其流程图如4-4所示。 程序及部分说明#include <reg52.h>#include <intrins.h>unsigned char b14=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xff,0xff,0xff;unsigned char c4;unsigned char a4=0xf1,0xf2,0xf4,0xf8,kk8;unsigned char K,Key,ac,i,z,wr,ii; /ac表示数码管显示个数sbit scl = P26; sbit sda = P27; sbit

15、P35 = P35;sbit P34 = P34;/ 延时子程序 void delay(unsigned char pp)/延迟时间等于pp*1ms while(pp-) unsigned char j;for(j=0;j<126;j+); /j进行的内部循环,1次延迟8us,延迟1ms void delayNOP()_nop_();_nop_();_nop_();_nop_();/开始位 void start() sda = 1; delayNOP(); scl = 1; delayNOP(); sda = 0; delayNOP(); / 停止位 void stop() sda =

16、0; delayNOP(); scl = 1; delayNOP(); sda = 1; delayNOP(); /应答/ void respons () unsigned char i; scl=1; delayNOP(); while(sda=1)&&(i<250)i+; scl=0; delayNOP();/总线初始化/void init() sda=1; delayNOP(); scl=1; delayNOP(); /写字节/void write_byte(unsigned char date) unsigned char i,temp; temp=date; f

17、or(i=0;i<8;i+) temp=temp<<1; scl=0; delayNOP(); sda=CY; delayNOP(); scl=1; delayNOP(); scl=0; delayNOP(); sda=1; delayNOP(); /读字节/unsigned char read_byte() unsigned char i,j,k; scl=0; delayNOP(); sda=1; delayNOP(); for(i=0;i<8;i+) scl=1; delayNOP(); if(sda=1) j=1; else j=0; k=(k<<1

18、)|j; scl=0; delayNOP(); return k; /写地址/void write_add(unsigned char address,unsigned char date) start(); write_byte(0xa0); respons(); write_byte(address); respons(); write_byte(date); respons(); stop(); /读地址/unsigned char read_add(unsigned char address) unsigned char date; start(); write_byte(0xa0);

19、 respons(); write_byte(address); respons(); start(); write_byte(0xa1); respons(); date=read_byte(); stop(); return date;/功能/void fun1()/功能键显示密码 for(z=0;z<ac;z+) P0=cz; P2=read_add(wr+); c3=c2; c2=c1; c1=c0; c0=read_add(i+); void fun2()/判断密码 if(P0=read_add(i)!=(P0=ci)&&(P2=read_add(i)!=(P2

20、=ai) P34=0; delay(100); P34=1; ii+; else P35=0; void fun3()/删除功能键 for(K=10;K<11;K+) c0=c1; c1=c2; c2=c3; c3=bK; void fun4()/更改密码确认键 if(P35=0) write_add(i,c0); write_add(wr,a0); delay(10); write_add(i+1,c1); write_add(wr,a1); delay(10); write_add(i+2,c2); write_add(wr,a2); delay(10); write_add(i+3

21、,c3); write_add(wr,a3); delay(10); /显示/void display() unsigned char i; for(i=0;i<ac;i+) /为了让4个数码管轮流亮一遍过去 P0=ci;P2=ai; delay(1); /按键/unsigned char Keycan(void) /按键扫描程序 P1.0-P1.3为行线 P1.4-P1.7为列线 unsigned char rcode, ccode; P1 = 0xF0; / 发全0行扫描码,列线输入 if(P1&0xF0) != 0xF0) / 若有键按下 delay(1); / 延时去抖动

22、 if(P1&0xF0) != 0xF0) rcode = 0xFE; / 逐行扫描初值 while(rcode&0x10) != 0) P1 = rcode; / 输出行扫描码 if(P1&0xF0) != 0xF0) / 本行有键按下 ccode = (P1&0xF0)|0x0F; while(P1&0xF0) != 0xF0); /等待键释放 return (rcode) + (ccode); / 返回键编码 else rcode = (rcode<<1)|0x01; / 行扫描码左移一位 return 0; / 无键按下,返回值为0v

23、oid KeyDeal(unsigned char Key) if(Key!=0) switch(Key) case 0x11: K=0; break;case 0x21: K=1; break; case 0x41: K=2; break;case 0x81: K=3; break;case 0x12: K=4; break;case 0x22: K=5; break;case 0x42: K=6; break;case 0x82: K=7; break;case 0x14: K=8; break;case 0x24: K=9; break;case 0x44: K=10,fun1(); break;case 0x84: K=11,fun2(); break;case 0x18: K=12,fun3(); break; case 0x28: K=13,fun4(); break;default: break; if(K<=9) c3=c2;c2=c1;c1=c0;c0=bK;ac+;if(ac>4)ac=4; void main() init(); / 24C08初始化while(1) /键盘及显示 Ke

温馨提示

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

评论

0/150

提交评论