智能密码锁设计(共26页).doc

上传人:飞****2 文档编号:13561666 上传时间:2022-04-30 格式:DOC 页数:26 大小:1.59MB
返回 下载 相关 举报
智能密码锁设计(共26页).doc_第1页
第1页 / 共26页
智能密码锁设计(共26页).doc_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《智能密码锁设计(共26页).doc》由会员分享,可在线阅读,更多相关《智能密码锁设计(共26页).doc(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上第一章 概述随着人们的生活水平的提高以及安全意识的加强,对安全的要求也就越来越高。自古以来,锁就是把守护门的铁将军,人们对它的要求甚高,既要安全可靠,又要使用方便,这也是制锁者长期以来研制的主题。随着单片机技术的发展,各类电子产品应运而生,智能密码锁就是其中之一。智能密码锁的研制,在20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码来完成解锁过程,由于智能密码锁的密码量极大,不易被破解,避免了因钥匙被仿制而留下的安全隐患。并且可以与机械钥匙配合使用,双重守护,大大提高了其安全性能,因而到现在应用得越来越广泛了。智能密码锁只要记住一组密码

2、,无需携带金属的钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人们所欣赏。智能密码锁的种类繁多,例如:数码锁、指纹锁、磁卡锁,IC卡锁等等,但较实用的还是电子密码锁。电子密码锁是以单片机为核心的智能密码锁系统,适合使用在安全性要求较高的场合。此次关于该种智能密码锁的单片机课程设计内容及要求如下:1.1 设计内容: (1) 密码的设定:此密码是固定在程序存储器ROM中并且保存在24C02 E2PROM中 ,由于其具有接口方便,体积小,数据掉电不丢失等特点,在仪器仪表及工业自动化控制中得到大量的应用。 假设预设的密码为“1234”共4位密码。 (2)密码的输入:采用矩阵按键来完成密码的输入,分

3、为两组,其中拨码开关为功能键,矩阵键盘为数字键。在密码都已经输入完毕并且确认功能键之后,才能完成密码的输入过程。然后进入密码的判断比较处理状态并给出相应的处理过程。 (3)密码错误报警:初始化时,允许按键输入密码,当输入的密码错误3次时,蜂鸣器报警。1.2 扩展内容: (1)密码的修改:在开机显示后,即可通过功能键来实现密码的修改,按下修改功能键,再输入想要修改的密码,在按确认键功能,即可完成密码的修改。 (2)显示清除:在输入数字后,如果想要重新输入密码,按下清除功能键,既能清除当前输入的数字 1.3设计要求: (1)设计方案要合理、正确; (2)系统硬件设计及焊接制作; (3)系统软件设计

4、及调试; (4)系统联调;第2章 系统总体方案设计 本次密码锁采用采用STC90C52作为主控制器,结合矩阵键盘读入密码,LED数码管显示器显示读入密码,LED灯闪烁和蜂鸣器作为开锁成功和报警提示标志。当在键盘读入时,输入密码会依次以输入的数显示在数码管上,当输入的某个数不是你想输入的数时,你可以通过清除功能键来清除当前的输入数,输入4个数后,按下确认键。当输入密码与原设定密码相同时,密码正确,LED指示灯闪烁,在数码管上显示GOOD。当输入密码与固有密码不相同时,LED不会点亮,数码管的第一位会显示当前输入密码错误的次数,当错误次数达到3次时,蜂鸣器长响报警。用户也可以修改当前的密码。2.1

5、系统组成框图 该系统主要以MCS-51单片机为核心,结合具体的电路,组合成一个智能密码锁系统,该系统的其他电路主要包括:密码输入模块、密码检测系统、声光显示电路、数码管显示电路、晶振复位电路八个主要模块。如下图2-1所示。单片机电源电路数码管显示电路 时钟电路蜂鸣器报警电路 图2-1 系统组成框图 复位电路键盘输入电路 2.2单片机系统: 单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。它由单片机、时钟电路、复位电路等组成。为了简化电路、降低成本、提高可靠性,本系统采用STC90C52单片机作为主控制器。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,进

6、行智能密码锁的设计。此次课题用单片机P2口与键盘相连,作输入口,P0口与LED显示器相连,作显示。单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式。2.3矩阵键盘接口模块:此次课程设计采用矩阵式按键,用于密码输入模块。4*4矩阵键盘,4行4列分别与P2口相连,采用行列反转扫描法。设有“09”10个数字密码按键和3个拨码开关作为功能键。3个功能键中包括清除键、密码修改键、确认键,键盘09键按下将会显示10个不同的数字,密码修改键用来修改当前密码。具体详见附录三

7、的按键说明。2.4 LED数码管显示模块:此次课程设计设置4位密码,按键后数码管显示器显示,采用动态显示。P0口送显示数据,P1口显示扫描,根据按键顺序,显示器第一位显示第一次按的密码,第二位显示第二次按的密码,依此类推第4位显示第4次按的密码,按键完成后按确认键后,系统进行密码比较密码对则执行开锁动作,对应的发光二极管亮。2.5开锁提示模块:当输入的密码正确时,LED指示灯会不停闪烁,当输入的密码3次不正确后,蜂鸣器会长叫报警。第3章 硬件电路设计3.1 键盘电路设计3.1.1矩阵式键盘工作原理: 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图3.1所示。在矩

8、阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P2口)就可以构成4*4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,在需要的键数比较多时,采用矩阵法来做键盘。 矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,图3.1中,如果将行线扫描为全0,当按键没有按下时,所有的列线都是高电平,代表无键按下。一旦有键按下,则列线就会被拉低。这样,通过读入列线的状态就可得知是否有键按下了。3.1.3 矩阵式键盘的识别方法:确定矩阵式键盘上何键被按下介绍一种“行扫描法”。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按

9、键识别方法,如图3-1所示。判断键盘中有无键按下具体步骤如下: (1)先将列线P3.7-P3.4置1110,然后检测行线的状态。如果P3.3-P3.0为1110,则0被按下;如果P3.3-P3.0为1101,则4被按下;如果P3.3-P3.0为1011,则8键被按下,如果P3.3-P3.0为0111,则C键被按下。 (2)以此类推,对键盘进行循环扫描,实现对键盘的读入数据。图3-1 4x4矩阵键盘3.2 液晶显示电路设计3.2.1 LED数码管显示原理:LED发光二极管显示器是一种当外加电压加在发光二极管上可产生可见光的器件它适用于在光线暗的环境中使用。 显示器显示接口按驱动方式可分为静态显示

10、和动态显示,静态显示时,除变更显示数据期间外,各显示器均处于通电显示状态,每个显示器的通电占空比约为100%,静态显示的优点是显示稳定,亮度高,缺点是占用硬件电路多;动态显示时,N个显示器共占用一个显示数据驱动器,每个显示器通电占空比时间为1/N,动态显示的优点是节省硬件电路,缺点是采用软件扫描时占用CPU时间多。对于多位LED显示器,通常都是采用动态扫描的方法进行显示,即逐个地循环点亮各位显示器,这样虽然在任一时刻只有一显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮效果完全一样。 为了实现LED显示器的动态扫描,除了给显示提供段(字形代码)的输入之外,还有对显示器选择

11、位的控制,这就是通常所说的段控和位控。因此,多位LED显示器接口电路需要有两个输出口,其中一个用于输出8条段控线,另一个用于输出位控线,位控线的数目等于显示器的位数。 图3-2 LED数码管显示电路3.3 24C02电路设计24C02是2K字节的串行EEPROM, 内部含有256个8位字节,该器件通过总线操作,并有专门的写保护功能。 串行EEPROM简称I2C总线式串行器件。串行器件不仅占用很少的资源和I/O线,而且体积大大缩小,同时具有工作电源宽、抗干扰能力强、功耗低、数据不易丢失和支持在线编程等特点。如图3-3所示。 图3-3 24C02电路3.4 开锁提示模块 主要有LED灯和蜂鸣器组成

12、,当密码输入正确时,D1闪烁。当密码连续三次输入错误时,蜂鸣器长响报警。如图3-4所示。图3-4 开锁提示电路第4章 软件设计4.1 软件总体设计 软件的设计主要包括:主程序、延时函数、密码修改模块、矩阵键盘扫描、数码管显示函数、密码比较函数、声光控制模块。主程序主要完成系统初始化、检查有无按键按下、按键处理、密码比较等等。主程序模块如图4-2所示: 主程序读数显示清除密码修改密码确认密码键盘扫描键码转换 图4-2 主程序模块4.2 各子程序的设计4.2.1 延时程序模块:void delay( unsigned int x) /延时 int i,j; for(i=0;ix;i+) for(j

13、=0;j120;j+); 4.2.2键盘扫描模块:uchar keyboard() /键盘扫描 uchar cord_h,cord_l;/行列值中间变量 P2=0x0f; /行线输出全为1 cord_h=P2&0x0f; /读入行线值 if(cord_h!=0x0f) /先检测有无按键按下 delay(20); /去抖 if(P2&0x0f)!=0x0f) cord_h=P2&0x0f; /读入行线值 P2=cord_h|0xf0; /输出当前行线值 cord_l=P2&0xf0; /读入列线值 while(P2&0xf0)!=0xf0);/等待松开并输出 return(cord_h+cord

14、_l);/键盘最后组合码值 return(0xff); /返回该值4.2.3键码转换模块:zhuanhuan(uchar i) switch(i) case 0xee: return(0);break;case 0xde: return(1);break;case 0xbe: return(2);break;case 0x7e: return(3);break;case 0xed: return(4);break;case 0xdd: return(5);break;case 0xbd: return(6);break; case 0x7d: return(7);break;case 0xeb

15、: return(8);break;case 0xdb: return(9);break;case 0xbb: return(10);break;case 0x7b: return(11);break;case 0xe7: return(12);break;case 0xd7: return(13);break;case 0xb7: return(14);break;case 0x77: return(15);break;case 0xff: return(16);break;default:break;4.2.4密码修改模块:void xiugaimima() /修改密码 f_modify=

16、1; for(i_set=0;i_set4;i_set+) P1=0xf0; P0=led14; i_set=3; f_ok=0; err_sum=0; err_ctr=0; c=0; w=0; 4.2.5读数清除模块:void qingchuxianshi() /清除显示 for(i_set=0;i_set4;i_set+) if(f_modify) mimai_set=0; else P1=0xf0; P0=led14; err_sum=0; i_set=3; q=0; w=0; f_ok=0; 4.2.6密码确认模块:void querenmima() /确认密码 if(!f_modif

17、y) if(err_sum!=0) err_sum=0; err_ctr+; P1=led_bit0; P0=lederr_ctr; delay(2000); if(err_ctr=3) err_ctr=0; cuowu=0; delay(1000); cuowu=1; else delay(1); P1=led_bit0; P0=led11; delay(1); P1=led_bit1; P0=led10; delay(1); P1=led_bit2; P0=led10; delay(1); P1=led_bit3; P0=led12; delay(1); zhengque=1; err_s

18、um=0; err_ctr=0; else f_modify=0; for(i_set=0;i_set4;i_set+) P1=0xf0; P0=led14; i_set=3; f_ok=0; c=1;4.2.7读数模块:void dushuxianshi() /读数 if(f_modify) /修改密码 mimai_set=key; P1=led_bite; P0=ledkey; e+; else if(key!=mimai_set) /相等则保持不变,不等则加1 err_sum+; else err_sum=err_sum+0; P1=led_bitw; P0=ledkey; w+; q=

19、1; if(i_set-=0) i_set=3; f_ok=1; /输入完成 w=0; c=1; 第5章 系统调试单片机应用系统的调试,包括硬件调试和软件调试两部分,软件调试是设计一个很重要的环节。硬件调试和软件调试并不能完全分开,许多软件错误都是在硬件调试过程中被发现和纠正的。 5.1系统使用方法说明: LED在显示初始化程序后显示“- - - - ”,然后输入密码,如果密码正确,则显示GOOD,当错误3次后,蜂鸣器报警。在输入密码正确的前提下,可以修改密码。 按键示意图如下图5-1所示。键盘通过扫描函数,返回相应的扫键值。 | 0 | 1 | 2 | 3 | | 4 | 5 | 6 | 7

20、 | | 8 | 9 | a | b | | c | d | e | f | 图5-1 按键示意图 1 清除键2 修改密码键3 确认键 图5-2 功能键5.2初始化实物图: 系统在开机后显示“- - - -”图5-3 开机初始化界面5.3密码输入错误实物图 当输入密码错误时,会在第一位显示输入密码错误的次数,当次数等于3次时,蜂鸣器会报警。 图5-5 密码输入错误显示5.5密码输入正确实物图 当用户输入密码正确,并且按下确认功能键后,会在数码管上显示GOOD,并且指示灯亮。图5-6 密码输入正确显示 设计总结当从老师手中接到题目的那一刻,我就暗暗庆幸,感觉这个题目还好比较好做,因为思路的话还是

21、比较清晰。我想,好的思路是成功的一半。老师说要求我们有所创新,作为密码锁系统,创新确实感觉有点难想。可是有挑战才会激发我的兴趣。所以我回寝室我就开始着手弄起来。因为之前也稍微玩过51单片机吧,还算有点基础,上手还比较快。这么些天来,我发现写程序,需要一个良好的逻辑思维。刚开始指导老师强调需要写程序之前一定要画程序框图,可是我以前就没养成这个习惯,这次也不另外。到后面,程序越来越长了,思路还真心有点转不过来。比如一个按键处理程序。这不同的情况下,需要对不同的按键进行相应的处理,如果没有详细细致的考虑,很容易遗落一些细节或者某种情况欠考虑,虽然这样有什么检查不到错误,但很有可能会使得程序出现出死循

22、环后者进入未知情况而发生乱跳,其后果是不堪设想的。程序一长的话很难检查出错误,因为这是思路上出的错,软件也无能无力。其次,在创新方面,我也算是绞尽脑汁,想象力很重要,创新是一个名族进步的灵魂。有了好创意才会有做出令人们满意的产品。本设计的创新扩展主要包括密码的修改、密码的找回、和密码的键入。本着从人性化的角度着想,这些功能的加入,增加了密码锁的安全性,字母和数字的组合大大提高了密码的安全指数,另外用*显示密码也防止了他人的别有用心而盗取密码。密码的修改有效预防了密码因一成不变的不安全而担忧,同时用户可以选择自己觉得既好记又安全的密码。密码的找回更是如此,避免了用户因密码遗失或者忘记的悲剧。这些

23、功能的设计体现了以人为本的特性,产品是设计给用户来使用的,只有尽最大努力满足用户的需求的才是好产品!另外一方面,在设计过程中,自己也是受益匪浅,实践出真知,这句话足以体现本次实习的收获。虽然理论也是实际的基础,书到用时方恨少,实际起来可就跟理论不是那么一套。情况复杂都变,让人应接不暇。只用从实际出发,遵循事物发展的规律。透过现象看到事物的本质,才能分析解决问题。在设计过程中,通过查阅大量有关资料,与同学交流经验和自学,并向老师请教等方式,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己对以后工作能力的信心,相信会对今后

24、的学习工作生活有较为深远意义的影响。而且此类实习大大提高了动手的能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太完善,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我受益终身。对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。天外有天,人外有人。挫折是一份财富,经历是一份拥有。最后衷感谢各位老师对我的指导和谆谆教诲,我也在努力的积蓄着力量,尽自己的微薄之力回报母校的培育之恩,争取自己的人生对社会产生更多积极价值。参考文献1 许立

25、梓.微型计算机原理及应用M.机械工业出版社.20022 刘乐善.微型计算机接口技术及应用M.华中理工大学出版社.2000 3 邹逢兴.计算机硬件技术基础试验教程M.高等教育出版社.20004 周佩玲.16位微型计算机原理接口及其应用M.中国科学技术大学出版社.2000 5 吴秀清.微型计算机原理与接口技术M.中国科学技术出版社.20016 邓亚平.微型计算机接口技术M.清华大学出版社.20017 王迎旭.单片机原理与应用M.机械工业出版社.20018 周航慈.单片机应用程序设计技术M.北京航空航天大学出版社. 20029 谢宜仁.单片机实用技术问答M.人民邮电出版社.2002附录1 硬件原理图

26、附录2 源程序清单#include#include#define uchar unsigned charsbit ENTER=P32; /确认键sbit CLEAR=P30; /清除键sbit MODIFY=P31; /修改键sbit zhengque=P17; /密码正确 灯亮sbit cuowu=P37; /密码错误3次 蜂鸣叫 f_rdkey=0,f_modify=0,f_ok=0; /没读键,没修改,没输入完成void delay(unsigned int i);/延时uchar keyboard(); /键盘扫描void dushuxianshi();void qingchuxian

27、shi(); /清除void xiugaimima(); /修改void querenmima(); /确认void xianshi(); /显示zhuanhuan(uchar i); /将得到的键码转换为键值uchar code led=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0x90,0xa1,0xff,0xbf;uchar mima=4,3,2,1;uchar code led_bit=0xfe,0xfd,0xfb,0xf7;uchar key,keyy,i_set=3,err_sum=0,err_ctr=0,w=0,

28、e=0,q=1,c=0;void main() P1=0xf0; P0=led14; while(1) if(!f_rdkey)/读键 f_rdkey=0; keyy=keyboard(); key=zhuanhuan(keyy); if(!f_ok&(key=0&key=9) dushuxianshi(); if(q=1)&(CLEAR=0) /清除 qingchuxianshi(); if(c=1)&(MODIFY=0) /修改 xiugaimima(); if(f_ok=1)&(ENTER=0) /确认 querenmima(); void delay( unsigned int x)

29、/延时 int i,j; for(i=0;ix;i+) for(j=0;j120;j+); uchar keyboard() /键盘扫描 uchar cord_h,cord_l;/行列值中间变量 P2=0x0f; /行线输出全为1 cord_h=P2&0x0f; /读入行线值 if(cord_h!=0x0f) /先检测有无按键按下 delay(20); /去抖 if(P2&0x0f)!=0x0f) cord_h=P2&0x0f; /读入行线值 P2=cord_h|0xf0; /输出当前行线值 cord_l=P2&0xf0; /读入列线值 while(P2&0xf0)!=0xf0);/等待松开并

30、输出 return(cord_h+cord_l);/键盘最后组合码值 return(0xff); /返回该值zhuanhuan(uchar i) switch(i) case 0xee: return(0);break;case 0xde: return(1);break;case 0xbe: return(2);break;case 0x7e: return(3);break;case 0xed: return(4);break;case 0xdd: return(5);break;case 0xbd: return(6);break; case 0x7d: return(7);break;

31、case 0xeb: return(8);break;case 0xdb: return(9);break;case 0xbb: return(10);break;case 0x7b: return(11);break;case 0xe7: return(12);break;case 0xd7: return(13);break;case 0xb7: return(14);break;case 0x77: return(15);break;case 0xff: return(16);break;default:break;void dushuxianshi() /读数 if(f_modify) /修改密码 mimai_set=key; P1=led_bite; P0=ledkey; e+; else if(key!=mimai_set) /相等则保持不变,不等则加1 err_sum+; else err_sum=err_sum+0; P1=led_bitw; P0=ledkey; w+; q=1; if(i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com