ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:860.31KB ,
资源ID:23211052      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23211052.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于5单片机的动态密码锁设计.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于5单片机的动态密码锁设计.docx

1、基于5单片机的动态密码锁设计基于51单片机的动态密码锁设计摘要:本系统是运用STC89C52单片机为控制核心设计出一个安全系数更加强大的时钟密码锁。如今我们用的电子密码锁大多数是固定的密码,用户可以设置密码,但这样设置的密码是固定的,除非你不停的对它修改。这样的密码锁保密性相对较差,因为如果在你输密码的时候密码被人剽窃啦,你的密码锁就如同虚设了。而本项目所研究的时间密码锁将会帮你完全克服这种问题,当你在输密码的时候,即使被人看到了密码也毫无关系,因为密码是随时间时刻变化的!让我们做到“输自己的密码,让别人去看吧”。关键词:时间密码锁;单片机;动态密码Abstract: This system

2、is used STC89C52 designed a safety coefficient more powerful clock combination lock. Now we use electronic combination lock most is fixed password, users can set their favorite password, but this password is fixed, unless you keep to fix it. This combination lock secrecy, because if relatively poor

3、in when you lose passwords password to be there, you plagiarized the combination lock as brittle. But this project research time combination lock will help you overcome this problem, when you lose passwords, even if be people saw no relationship, because password also password is over time and ever-

4、changing! Let you do lose their password, let others go for it.Key word:Time combination passwordlock; Single chip madine; Dynamic password.1.方案设计1.1理论分析 本项目的设计思路是:将时间模块运用到密码锁上,将时间和密码组合起来产生一个新的密码,因为时间是变化的,所以密码也是不停变化的,这样设计出来的密码锁保密性将会更强。比如现在时间是:2011年3月20日11:23:46调用时间时我们不能简单的固定调用哪几个时间参数,为加强保密性我们还需多设置几个

5、时间的模式给用户选择,比如:A时分模式B分时模式 C日分模式 D分日模式 等给大家选择(这里只是简单的列举列了几个模式,还有很多模式可以选择在这里就不一一列举了)。时间模式的作用是在于调用时间参数,比如时分模式的意思就是调用时间的时位和分位组成一个四位数。除此之外另外使用者还可以自己设一个密码参数如:密码参数:1 2 3 4设置了密码参数和时间调用模式,怎么将选取的时间数据和密码参数结合起来呢,一种最为简单而有效地方法就是把两组数据加起来。但为彰显人性化设计,我们不能简单的将两组数据相加在一起,因为这里牵涉到了四位数的计算,需要考虑计算过程中的进位,这样的计算不仅耗费时间,而且对一些计算水平不

6、好的人来说更是不人性啦,因此我们设计在加数据的时候不需要考虑进位。比如 3+9=12,在这里我们将设置为3+9=2。大大的减少了计算量,使使用者在使用时更加方便,人性化。举个例子:比如现在使用者在设置密码的时候选择 “ B分时模式”,再设置一个密码参数为:“1 2 3 4” 时间就是以上时间“2011年3月20日11:23:46”。那么生成的密码就为“2311+1234”为“3 5 4 5”啦,这样生成的密码在下一分钟就会变化,即使被别人看到密码啦也没关系啦,即使看到密码的人知道你是用的时间密码锁,但不知道你所选的时间选择模式和密码参数也是无济于事的!为防止别人试探你的密码,我们设计了当三次输

7、入密码错误时键盘就会锁定并发出报警声。以上就是本项目时间密码锁的理论部分。1.2芯片选择及理由主控芯片:采用STC89C52单片机,该芯片易控制,价格低廉,且已完全能够达到设计需求。指令处理:采用TTL集成逻辑门芯片74LS00与非门。通过与非门对输入的两路(红外探测,密码输入)外部信号进行处理。达到平行控制电磁锁的开关的效果。实时时钟:采用DS1302时钟芯片,这种芯片具有一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能。主要特点是采用串行数据传输,可以为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32.768Hz晶振。

8、红外探测:采用LM339芯片, LM339电压比较器芯片内部装有四个独立的电压比较器,利用LM339可以方便的组成各种电压比较器电路和振荡器电路。2系统实现2.1硬件设计2.11系统框图STC89C52单片机 主控制器12864LCD液晶显示矩阵键盘DS1302时钟模块继电器控制电磁铁开锁红外检测人体接近电源供电 图2.1系统框图2.1.2功能模块设计(1)时钟模块 图2.2时钟模块电路 上图为DS1302时钟芯片和单片机的连接图,其中DS1302芯片工作本身就需要一个外部晶振,通常为32.768kHz。DS1302芯片的第5、6、7脚接单片机,其中第6脚为数据传输口,数据传输量比较大,易产生

9、干扰,所以我们接一个10K的上拉电阻来保持它的稳定性。(2)12854液晶模块图2.3液晶显示电路本系统采用12864LCD液晶显示,我们将编好了的控制程序写入单片机后,通过单片机控制液晶屏,液晶屏会进行时间的实时显示,和密码输入提示。提供密码重设,等附加显示功能,并且配合外设的矩阵键盘使用。(3)矩阵键盘 图2.4矩阵键盘电路为了提供时间的设定和密码输入功能,我们采用44的矩阵键盘(matrix keyboard)来控制实现。有10个09数字、确认键、返回键、左移键和右移键。通过主控芯片单片机驱动矩阵键盘,并配合着12864液晶屏的使用。做到了即时输入即时显示。这些功能键已经完全可以满足整个

10、系统的功能实现。(4)红外对管探测人体接近电路 图2.5红外对管电路 考虑到本项目所设计的时间密码锁会用在房间的门上,所以单独为其设计了一套红外探测自动开门系统,将这套系统和时间密码锁配合使用,使其在实际使用中更加人性化。将这套红外探测系统安装在门的靠房间的一面,当房屋里的人要出去时只要他靠近门达到红外探测距离,门就会自动开,使其更加人性化。(5)门控制电路 图2.6门控制电路此模块是由输入指令信号处理电路,继电器(electric relay)驱动电路和开关门电路三部分组成。其中指令信号包括红外探测信号,及从单片机的I/O口发出的控制信号。当门外有人输入密码正确时单片机就会给一路信号驱动继电

11、器来控制开门。当门内有人要出去是,红外探测同样就会发出信号开门。这两路信号有通过与非门进行处理,使其能够并行控制开锁电路。实际操作调试中,运用12V的电磁铁作为锁芯,测试效果理想。(6)电源电路 图2.7电源电路主要使用的是L7805稳压芯片,我们购买的蓄电池输出的12V电压,而我们设计的电路大部分都只需要5V的供电电压,如主控模块,单片机5V供电,继电器驱动模块5V供电,红外探测模块,5V供电,各个芯片的工作电压也都是5V的。因此利用稳压电路进行稳压,从而对各个模块的正常工作进行供电意义重大。实际测试中,我们用万用表经过多次测量,输出的电压为5V+0.2V。符合设计标准。2.2 软件设计2.

12、21软件流程图图2.8软件流程图2.22作品部分源程序(1)界面函数因本作品涉及到12864的多界面切换显示,所以在编程过程中我们把每个界面单独编成一个子函数然后在主函数中循环调用。以下是各个界面子函数程序:void welcome()/*欢迎界面*/ uchar i; i=0; lcdpos(3,1); while(welcome1i!=0) wdata(welcome1i); delay(100); i+; i=0; lcdpos(2,2); while(welcome2i!=0) wdata(welcome2i); delay(100); i+; i=0; lcdpos(3,3); wh

13、ile(welcome3i!=0) wdata(welcome3i); delay(100); i+; i=0; lcdpos(2,4); while(welcome4i!=0) wdata(welcome4i); delay(100); i+; lcdpos(9,4);/消光标uchar interface1()/*界面1,首界面,请求输入密码*/ uchar a; uchar key=0; uchar i=0; uchar identify=0;/返回标识 uchar mima4; wcom(0x01);/清屏 lcdpos(1,3); i=0; while(table3i!=0) wda

14、ta(table3i); i+; lcdpos(2,4); for(i=0;i4;) lcdpos(1,1); timeshow(); /显示时间 a=keyscan();/键盘扫描 if(a=12)/返回键设置 i=4; key=2; identify=1;/返回标识设定 if(a=0) lcdpos(2+i,4); wdata(*); mimai=a; i+; if(identify=0) /没有返回键按下,执行密码判断语句 xuanze();/判定密码模式 if(mima0=deal(codon0,time0) / if(mima1=deal(codon1,time1) / 密码判断 i

15、f(mima2=deal(codon2,time2)/ if(mima3=deal(codon3,time3)/ key=1; return(key);uchar interface2()/*界面2密码正确,选择选项*/ uchar temp; uchar i; wcom(0x01); i=0; lcdpos(1,1); while(table4i!=0) wdata(table4i); i+; i=0; lcdpos(1,2); while(table5i!=0) wdata(table5i); i+; i=0; lcdpos(1,3); while(table6i!=0) wdata(ta

16、ble6i); i+; lcdpos(9,4); temp=keyscan(); while(temp!=1&temp!=2&temp!=3&temp!=12)/各选项及返回键选择 temp=keyscan(); return(temp);void interface3()/*界面3开门*/ uchar i; i=0; lcdpos(3,2); while(table7i!=0) wdata(table7i); i+; lcdpos(9,4); open=0; /开继电器 delay(5000); /开门延迟 open=1;void t_change();/申明时间修改初始化函数void in

17、terface4()/*界面4时间修改界面*/ uchar tim6; uchar a; uchar c,d; uchar i=0,j,k; t_change(); a=keyscan(); lcdpos(2,2); while(a!=11&a!=12)/确定、返回键判断 a=keyscan(); if(a=10) wcom(0x10); if(a=15) wcom(0x14); if(a=0&a=9) wdata(tablea); i+; if(i=2) wcom(0x14); i=0; if(a=11)/确定键执行修改 ;返回键跳过修改 lcdpos(4,2); i=rdata();/在1

18、2854中读数据 j=rdata();/在12854中读数据 k=rdata();/在12854中读数据 c=j-0x30; d=k-0x30; tim1=c*16+d; lcdpos(6,2); i=rdata(); j=rdata(); k=rdata(); c=j-0x30; d=k-0x30; tim2=c*16+d; lcdpos(2,4); i=rdata(); j=rdata(); k=rdata(); c=j-0x30; d=k-0x30; tim3=c*16+d; lcdpos(4,4); i=rdata(); j=rdata(); k=rdata(); c=j-0x30;

19、d=k-0x30; tim4=c*16+d; lcdpos(6,4); i=rdata(); j=rdata(); k=rdata(); c=j-0x30; d=k-0x30; tim5=c*16+d; write_ds(0x8e,0x00); write_ds(0x80,tim5); write_ds(0x82,tim4); write_ds(0x84,tim3); write_ds(0x86,tim2); write_ds(0x88,tim1); write_ds(0x8e,0x80); uchar interface5()/*界面5,密码修改*/ uchar i; uchar a; uc

20、har identify=0; i=0; lcdpos(1,1); while(table11i!=0) wdata(table11i); i+; i=0; lcdpos(1,2); while(table13i!=0) wdata(table13i); i+; i=0; lcdpos(1,3); while(table14i!=0) wdata(table14i); i+; i=0; lcdpos(1,4); while(table12i!=0) wdata(table12i); i+; lcdpos(7,1); a=keyscan(); while(a!=1&a!=2&a!=3&a!=4&

21、a!=12)/修改密码模式 if(a!=12) a=keyscan(); mimams=a; if(a=12) identify=1; if(identify!=1) wdata(tablemimams); lcdpos(6,4); for(i=0;i4;) /修改密码参数 a=keyscan(); if(0=a&a=9) wdata(tablea); codoni=a; i+; lcdpos(9,4); while(keyscan()!=11);/确认键 return(mimams); (2)主函数部分void main() uchar temp=0; uchar sign=0;/错误密码输

22、入次数标记 uchar i=0; uchar key; lcd_init(); /液晶初始化 welcome();欢迎界面 delay(1000); init1302();/DS1302初始化 while(1)/主循环 key=interface1();/界面1 if(key=1)/密码正确进入下一步菜单 temp=interface2();/界面2 if(temp=1)/ 开门判断 wcom(0x01); interface3();/界面3 if(temp=2) /改时间判断 wcom(0x01); interface4();/界面4 if(temp=3)/修改密码判断 interface5

23、();/界面5 sign=0;/错误密码输入次数清除 if(key=0)/密码输入错误处理 error();/密码错误处理函数 sign+; if(sign=3)/三次密码输入错误就报警 sign=0; wcom(0x01); i=0; lcdpos(4,1); while(table10i!=0) wdata(table10i); i+; i=0; lcdpos(1,3); while(table15i!=0) wdata(table15i); i+; lcdpos(9,4); fm=0; delay(10000); fm=1; wcom(0x01); 3附录 图3.1作品全景图1 图3.2作品全景图2

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1