![电子密码锁的设计与实现[1].doc_第1页](http://file.renrendoc.com/FileRoot1/2020-1/15/4dc4abd0-08b3-43f6-9e5a-114b058180a7/4dc4abd0-08b3-43f6-9e5a-114b058180a71.gif)
![电子密码锁的设计与实现[1].doc_第2页](http://file.renrendoc.com/FileRoot1/2020-1/15/4dc4abd0-08b3-43f6-9e5a-114b058180a7/4dc4abd0-08b3-43f6-9e5a-114b058180a72.gif)
![电子密码锁的设计与实现[1].doc_第3页](http://file.renrendoc.com/FileRoot1/2020-1/15/4dc4abd0-08b3-43f6-9e5a-114b058180a7/4dc4abd0-08b3-43f6-9e5a-114b058180a73.gif)
![电子密码锁的设计与实现[1].doc_第4页](http://file.renrendoc.com/FileRoot1/2020-1/15/4dc4abd0-08b3-43f6-9e5a-114b058180a7/4dc4abd0-08b3-43f6-9e5a-114b058180a74.gif)
![电子密码锁的设计与实现[1].doc_第5页](http://file.renrendoc.com/FileRoot1/2020-1/15/4dc4abd0-08b3-43f6-9e5a-114b058180a7/4dc4abd0-08b3-43f6-9e5a-114b058180a75.gif)
已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈阳理工大学创新实践周课程设计 目 录 1 背景与意义.12 功能设计.23 总体方案设计.34 电路原理图设计.5 4.1 键盘电路设计.5 4.2 数码管显示电路设计. 6 4.3 开锁电路设计.75 程序设计.9 5.1 基本设计思路.9 5.2 各子程序设计.96 软件仿真结果.157 硬件制作与调试.178 结论.19参考文献.19 电子密码锁的设计与实现1 背景与意义随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格比显著提高,技术日趋完善。由于单片机具有体积小、重量轻、价格便宜、功耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用电器等各个领域均得到了广泛的应用。本设计利用单片机及附加电子元器件实现数据采集和控制算法,来完成某一实际功能,检验并提高学生对整体电路设计和把握能力,了解单片机系统设计流程,以及电路板的实际制作和调试能力。随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。目前,在西方发达国家,电子密码锁技术相对先进,种类齐全,电子密码锁已被广泛应用于智能门禁系统中,通过多种更加安全,更加可靠的技术实现大门的管理。在我国电子锁整体水平尚处于国际上七八十年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用。2 功能设计 1 完成相应C语言程序的编写。定义相关函数,具体包括延时函数、中断函数、扫描函数、数码管显示函数和主函数等。 2 在Keil环境下编译程序,生成.hex文件,要求程序编译正确,原理清楚。 3 设计电子密码锁原理图,尽量有一定复杂度和难度,要求设计简洁、易懂。 4 在Protues环境下完成电路原理图的绘制与仿真。要求正确绘制电路图,完成其参数的定义与元器件的连接,注意为单片机加载.hex文件,其他包括键盘扫描电路,数码管显示电路和开锁电路的设计等等。系统上电后,要求正确仿真,即输入所需求的四位密码,系统正确运行,模拟开锁。分析仿真结果,并为硬件的制作打下基础。 5 硬件制作与调试。要求自己选用相关元件,选用电路板等实现硬件的制作。完成后,自己调试运行,要求接入12V直流电源,输入四位密码,完成开锁的模拟实现过程。找出相关问题,并进行改进。 6 结果分析。总体完成后,对整个系统进行总结,分析优点与缺点,撰写、完善实验报告,得出实验结论。 3 总体方案设计 开始设计的时候,考虑到两个设计方案,分别如下:方案一:采用数字电路控制。其原理方框图如图1所示。图1 数字密码锁电路方案采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置UPS电源是为了防止因为停电造成的密码锁电路失效,使用户免遭麻烦。密码锁电路包含:键盘输入、密码修改、密码检测、开锁电路、执行电路、报警电路、键盘输入次数锁定电路。方案二:采用一种是用以AT89C52为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,不但能实现基本的密码锁功能,还能添加调电存储、声光提示甚至添加遥控控制功能。其原理如图2所示。AT89C52单片机矩阵键盘控制 开锁控制电路数码管显示电路 指示电路 电源接入图2 单片机控制方案通过比较以上两种方案,单片机方案有较大的活动空间,不但能实现所要求的功能而且能在很大的程度上扩展功能,而且还可以方便的对系统进行升级,所以我们采用后一种方案。本方案采用一种是用以AT89C52为核心的单片机控制方案。利用单片机灵活的编程设计和丰富的I/O端口,及其控制的准确性,实现基本的密码锁功能。初步设计思路如下:输入密码用矩形键盘,包括数字键和功能键。数码管显示输入的四位密码密码,用四位共阳极数码管发光显示数码,从而控制各位显示器进行显示。用发光二极管代替开锁的电路,发光表示开锁。打开电源后,显示器显示“0000”,设原始密码为“6666”,只要输入此密码便可开门。按“0”键,清除显示器为“0000”。软件的设计主要包括键盘键值的读取、数码管显示程序、密码比较程序、中断程序和延时程序等。4 电路原理图设计 4.1 键盘电路设计使用矩阵键盘,所以本设计就采用行列式键盘,同时也能减少键盘与单片机接口时所占用的I/O线的数目,在按键比较多的时候,通常采用这样方法。其原理如图3。 图3 矩阵键盘每一条水平(行线)与垂直线(列线)的交叉处不相通,而是通过一个按键来连通,利用这种行列式矩阵结构只需要N条行线和M条列线,即可组成具有NM个按键的键盘。在这种行列式矩阵键盘非键盘编码的单片机系统中,键盘处理程序首先执行等待按键并确认有无按键按下的程序段。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度较快的线反转法。对照图3所示的44键盘,说明逐行扫描法和线反转法工作原理。1 扫描原理:即把每个键都分成水平和垂直的两端接入,比如说扫描码是从垂直的入,那就代表那一行所接收到的扫描码是同一个bit,而读入扫描码的则是水平,扫描的动作是先输入扫描码,再去读取输入的值,经过比对之后就可知道是哪个键被按下。 比如说扫描码送入01111111,前面的0111是代表此时扫描第一行P1.0列,而后面的1111是让读取的4行接脚先设为VDD,若此时第一行的第三列按键被按下,那读取的结果就会变成01111101(注意1111变成1101),其中LSB的第三个bit会由1变成0,这是因为这个按键被按下之后,会被垂直的扫描码电位short,而把读取的LSB的bit电位拉到0,此即为扫描原理。 由于这种按键是机械式的开关,当按键被按下时,键会震动一小段时间才稳定,为了避免让系统误判为多次输入同一按键, 我们必须在侦测到有按键被按下,就Delay一小段时间,使键盘以达稳定状态,再去判读所按下的键,就可以让键盘的输入稳定。2 线反转法原理:先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为低电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下使通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。本设计中采用键盘逐行扫描法。4.2 数码管显示电路设计本系统设计的显示电路是为了给使用者以提示而设置的。本系统的显示采用串行显示的方式,使用单片机的串行口,就可以完成单片机的显示功能。并使用四位共阳极数码管作为输入密码的显示,很直观、清晰。显示电路的电路原理图如图4所示。 图4 数码管显示电路4.3 开锁电路设计在本次设计中,基于节省材料的原则,暂时用LED发光管代替电磁锁(在实际设计中,则用一个继电器代替电子锁模拟开锁过程),发光管亮,表示开锁;灭,表示没有开锁。电路图如5所示。发光管发光,即表示密码输入正确,表示开锁;密码输入错误,则LED发光管不亮。 图5 开锁电路5 程序设计 5.1 基本设计思路电子密码锁工作的主要过程是由数码管开始输入密码,通过键盘输入密码,同时数码管显示密码输入情况,按下确认键后判断密码的正确性,作出开锁或其他处理。 密码的设定是一个很重要的部分,在此程序中密码是固定的“6666”,采用四位密码。用C语言编写程序代码,具体设计包括头文件及其相关定义、键盘扫描子程序、 数码管显示子程序、中断程序、延时程序以及主程序设计等。编写完毕后,用Keil软件进行编译,生成.hex文件。相关的一些关键子程序设计如下。 5.2 各子程序设计 1 头文件即相关定义 #include #define uint unsigned int #define uchar unsigned char sbit P17=P17; sbit P16=P16; sbit P15=P15; sbit P14=P14; sbit dian=P30; uint count=0,num=0,k,keyword=6666;Uchartable =0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; 2 键盘扫描子程序 uint keyscan() uchar temp, keynum; P1=0xff; P17=0;/*扫描第一行* temp=P1; temp&=0x0f; if(temp!=0x0f) delay(10); temp=P1; temp&=0x0f; if(temp!=0x0f) temp=P1; temp&=0x0f; switch(temp) case 0x0e:keynum=0;break; case 0x0d:keynum=1;break; case 0x0b:keynum=2;break; case 0x07:keynum=3;break; while(temp!=0x0f) temp=P1; temp&=0x0f; P1=0xff; P16=0;/*扫描第二行* temp=P1; temp&=0x0f; if(temp!=0x0f) delay(10); temp=P1; temp&=0x0f; if(temp!=0x0f) temp=P1; temp&=0x0f; switch(temp) case 0x0e:keynum=4;break; case 0x0d:keynum=5;break; case 0x0b:keynum=6;break; case 0x07:keynum=7;break; while(temp!=0x0f) temp=P1; temp&=0x0f; P1=0xff; P15=0;/*扫描第三行* temp=P1; temp&=0x0f; if(temp!=0x0f) delay(10); temp=P1; temp&=0x0f; if(temp!=0x0f) temp=P1; temp&=0x0f; switch(temp) case 0x0e:keynum=8;break; case 0x0d:keynum=9;break; case 0x0b:keynum=10;break; case 0x07:keynum=11;break; while(temp!=0x0f) temp=P1; temp&=0x0f; return keynum;3 数码管显示子程序void Display(uint num) uint ge,shi,bai,qian; qian=num/1000; P0=tableqian; P2=0xfe; delay(10); P2=0xff; bai=num%1000/100; P0=tablebai; P2=0xfd; delay(10); P2=0xff; shi=num%100/10; P0=tableshi; P2=0xfb; delay(10); P2=0xff; ge=num%10; P0=tablege; P2=0xf7; delay(10); P2=0xff;void Init(void) EA=1;/开总中断 EX1=1;/开外部中断0 IT1=0;/设置为电平触发方式4 中断程序void Init1() interrupt 2 count=keyscan(); num=num*10+count; if(num9999) num=0; if(num= keyword) dian=1; delay(5000); dian=0; 5 延时程序void delay(uint i) uint j; for(;i0;i-) for(j=0;j125;j+);6 主程序 void main(void) uint i,count1; Init(); dian=0; while(1) count=keyscan(); /调用键盘扫描子程序 Display(num); 6 软件仿真结果本次调试采用Protues软件仿真。首先设计电子密码锁的源程序,源程序经过编译后,生成的目标文件经过仿真调试。完成后可以进行相关调试与仿真。1 系统上电后,初始状态如图所示,显示四位“0”。 图6 初始状态2 使用按键,输入密码“6666”后,数码管显示如图所示。 图 7 数码管显示所输入的密码 输入四位密码“6666”后,因为密码正确输入,所以用来代替电磁锁的LED发光管D1会发光并持续一段时间,表明密码输入正确,正确开锁。如图8所示: 图 8 密码正确开锁7 硬件制作与调试 Ptotues仿真正确后,可以选购材料进行硬件的制作。可以选用万用电路板为载体,选用相关电阻、电容、与门电路、芯片等进行制作,注意精确完成单片机程序的烧录。焊接过程一定要细心、耐心。电子密码锁在实物硬件制作中,就可以抛去先前仿真中使用的作为开锁仿真的发光LED灯,选用一个内部具有微电继电器的锁芯结构来代替,生动真实的模拟开锁的过程。本次电路焊接较为复杂,鉴于经验缺乏,焊接出来的电路较为凌乱,以后需要不断改进,但是基本实现了所有功能。具体硬件电路如下图所示: 图9 硬件电路输入密码“6666”后,开锁电路控制的锁芯结构会自动弹出,演示开锁
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外出招商活动策划方案(3篇)
- led射灯施工方案(3篇)
- 美睫活动策划方案(3篇)
- 镇江活动策划方案价格评估(3篇)
- 湘乡水井施工方案(3篇)
- 江西室内活动会议策划方案(3篇)
- 田径少儿考试题库及答案
- 北京市门头沟区2023-2024学年八年级下学期期末考试英语考题及答案
- 北京市门头沟区2023-2024学年八年级上学期期末考试数学题目及答案
- 心理扭曲测试题目及答案
- 压力管道安全培训
- 公司安全员培训课件
- 《高中生职业生涯规划指导》课件
- 政务服务智能化:DeepSeek在政务系统中的场景化落地
- 培训师自我评价
- 中国儿童严重过敏反应诊断与治疗建议
- 炉窑安全管理制度
- Excel必知必会第一期
- KW分布式光伏电站技术方案
- 私募基金管理人-廉洁从业管理制度
- 大学《Python程序设计》试题及答案
评论
0/150
提交评论