版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录摘要…………………31设计目的……………………42设计要求…………………….53设计内容…………………….63.1、具体硬件电路设计…………….63.1.1、键盘输入模块设………………63.1.2、单片机最小系统设计…………73.1.3、LCD显示模块设计……………73.1.4、声光报警模块设计……………73.2、软件设计……………83.2.1、主程序流程图…………………93.2.2、LCD显示模块流程图…………10总结与致谢……………………11参考文献………………………12附录………………………..13摘要随着科技和人们的生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统机械锁由于构造简单,被撬事件屡见不鲜;电子密码锁在日常生活中的作用越来越明显。本电子密码锁是基于单片机的设计,主要划分为四大模块,由单片机最小系统、矩阵键盘、LCD显示、声光报警模块等组成。单片机最小系统的主要功能是对外部输入的数据进行处理,显示电路将所要操作的步骤显示出来,指导用户使用,报警电路是对输入错误密码时的警告报警。系统能完成开锁、密码输入错误报警、密码删除、密码修改等基本功能。电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的青睐。本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从本设计以单片机AT89C51作为密码锁监控装置的检测和控制核心,分为主机控制和从机执行机构,实现钥匙信息在主机上的初步认证注册、密码信息的加密、钥匙丢失报废等功能。根据51单片机之间的串行通信原理,这便于对密码信息的随机加密和保护。而且采用键盘输入的电子密码锁具有较高的优势。采用数字信号编码和二次调制方式,不仅可以实现多路信息的控制,提高信号传输的抗干扰性,减少错误动作,而且功率消耗低;反应速度快、传输效率高、工作稳定可靠等。软件设计采用自上而下的模块化设计思想,以使系统朝着分布式、小型化方向发展,增强系统的可扩展性和运行的稳定性。测试结果表明,本系统各项功能已达到本设计的所有要求。关键词:解锁;单片机;LCD显示;报警1设计目的随着电子技术和计算机技术的飞速发展,单片机性能不断完善,性能价格比显著提高,技术日趋完善。由于单片机具有体积小、重量轻、价格便宜、功耗低、控制功能强及运算速度快等特点,因而在国民经济建设、军事及家用电器等各个领域均得到了广泛的应用。本设计利用单片机及附加电子元器件实现数据采集和控制算法,来完成某一实际功能,检验并提高同学对整体电路设计和把握能力,了解单片机系统设计流程,以及电路板的实际制作和调试能力。同时也加强对数字电路、单片机和微机原理等课程知识的实际应用能力,也为同类产品的进一步发展奠定理论和实践基础。随着人们生活水平的提高和安全意识的加强,对安全的要求也就越来越高。锁自古以来就是把守护门的铁将军,人们对它要求甚高,既要安全可靠的防盗,又要使用方便,这也是制锁者长期以来研制的主题。随着电子技术的发展,各类电子产品应运而生,电子密码锁就是其中之一。据有关资料介绍,电子密码锁的研究从20世纪30年代就开始了,在一些特殊场所早就有所应用。这种锁是通过键盘输入一组密码完成开锁过程。研究这种锁的初衷,就是为提高锁的安全性。由于电子锁的密钥量(密码量)极大,可以与机械锁配合使用,并且可以避免因钥匙被仿制而留下安全隐患。电子锁只需记住一组密码,无需携带金属钥匙,免除了人们携带金属钥匙的烦恼,而被越来越多的人所欣赏。电子锁的种类繁多,例如数码锁,指纹锁,磁卡锁,IC卡锁,生物锁等。但较实用的还是按键式电子密码锁。20世纪80年代后,随着电子锁专用集成电路的出现,电子锁的体积缩小,可靠性提高,成本较高,是适合使用在安全性要求较高的场合,且需要有电源提供能量,使用还局限在一定范围,难以普及,所以对它的研究一直没有明显进展。在我国电子锁整体水平尚处于国际七十年代左右,电子密码锁的成本还很高,市场上仍以按键电子锁为主,按键式和卡片钥匙式电子锁已引进国际先进水平,现国内有几个厂生产供应市场。但国内自行研制开发的电子锁,其市场结构尚未形成,应用还不广泛。国内的不少企业也引进了世界上先进的技术,发展前景非常可观。希望通过不断的努力,使电子密码锁在我国也能得到广泛应用。2设计要求1、总共可以设置8位密码,每位密码值范围为1~8.2、用户可以自行设定和修改密码。3、按每个密码键时都有声音提示。4、若键入的8位开锁密码不完全正确,则报警5s,以提醒他人注意。5、开锁密码连续错3次要报警1分钟,报警期间输入密码无效,以防窃贼多次试探密码。6、键入的8位开锁密码完全正确才能开锁,开锁时要有1s的提示音。7、电磁锁的电磁线圈每次通电5s,然后恢复初态。8、密码设定完毕后要有提示音。3设计内容本设计的系统总方案设计方框图如图1所示。修改密码修改密码密码错误密码输入数据输入4*4键盘输入模块单片机最小系统LCD显示模块声光报警模块图1系统总设计方框图3.1、具体硬件电路设计3.1.1、键盘输入模块设计:键盘选用4*4矩阵,具有数字键0-9、开锁键、删除键、修改密码键和消除报警键等。4*4键盘输入模块如图2所示。图24*4键盘输入模块电路图3.1.2、单片机最小系统设计:本设计选用STC89C51单片机作为控制核心。STC89C51是具有高性能和低功耗优点的8位可编程控制器,内核具有丰富的指令集和32个通用工作寄存器,可以通过软件编程来实现电子密码锁设计中的各项要求和功能,而且单片机的I/O口也足够使用,硬件电路连接比较简单。单片机最小系统如图3所示[3]。图3单片机最小系统电路图3.1.3、LCD显示模块设计:LCD显示模块选用LCD1602作为主液晶显示器。此液晶显示屏能输入两行的字母或数字,功能比较简单,通用性强。本次设计中要显示输入密码的数据值和各功能的提示,使用LCD1602液晶来作为显示模块比较直观形象。LCD显示模块如图4所示。图4LCD显示模块电路图3.1.4、声光报警模块设计:采用声和光两种方式的双重效果进行报警,如果错误密码输入次数超过三次则报警灯闪烁而且蜂鸣器会报警,这样就能多角度进行密码错误报警。声光报警模块如图5所示。图5声光报警模块电路图3.2、软件设计3.2.1、主程序流程图:主程序主要完成LCD初始化、检查有无按键按下、以及调用显示、密码修改程序等等。主程序流程图如图6所示。否否否开始系统初始化进入Welcome界面开锁键按下开锁子程序密码正确第二次输入密码修改密码键按下否输入新密码二次输入新密码输入相同设置新密码成功返回Welcome界面密码正确第三次输入密码密码正确启动声光报警复位键按下是否是否是是是否是等待否图6主程序流程图3.2.2、LCD显示模块流程图:本系统使用LCD1602实现显示,参照LCD1602的使用手册进行初始化和程序编写就可以显示,即在程序编写中添加LCD1602的驱动程序。这里的驱动程序主要包括:初始化函数、设置显示坐标、写字符函数及写字符串函数。在时钟界面时显示时间的运行,在密码锁界面时主要显示提示信息和输入的密码,当然,当输入密码数字时,输出不是显示数字,而是用“*”显示代替。LCD1602的部分读写控制时序程序如图7所示。开始开始设置显示模式延时程序关闭显示延时程序清屏程序延时程序开显示延时设置第一行显示位显示第一行内容设置第二行显示位显示第二行内容图7LCD显示模块流程图总结与致谢这一次做的电子密码锁及LCD显示。原理看似简单,但过程让我深深感受到再简单的电路图,理论与实际也会有一定的差入。在参考书原理图的基础上经过了个人的改进,让功能更完善,特别是程序的调试,花的时间最多,也是最难的一个地方。通过本次设计,培养了创新意识和综合素质,更好地掌握了电子产品设计与制作的工艺和流程,提高个人基本能力、实验及设计能力和独立工作能力,基本知识更加牢固,会看图、会测量、会查资料在设计的过程和设计说明书的撰写过程中,老师给予了我热心的帮助和大力的支持,给我提了诸多的宝贵意见,拓宽了我的思路。在此我向老师致以崇高的敬意和衷心的感谢!
参考文献[1]李朝青,单片机原理及接口技术(简明修订版)[M].北京:北京航空航天大学出版社,1998[2]李全利.单片机原理及接口技术[M].高等教育出版社,2003[3]PROTEL99SE电路设计与制板[M].械工业出版社,2007[4]StevenF.Barrett.DaneilJ.Pack.EmbeddedSystem[M].北京:电子工业出版社,2006[5]周立功.LPC900系列Flash单片机应用技术[J].北京航空航天大学出版社,2004[6]黄智伟.全国大学生电子设计竞赛训练教程[M].北京:电子工业出版社,2005
附录一:系统设计总原理图附录二:系统设计程序/*头文件*/#include<reg52.h>#include<intrins.h>#defineulongunsignedlong#defineuintunsignedint#defineucharunsignedchar#definescan_key_portP1/*定义矩阵按键端口*/#definelcd_data_portP0/*定义LCD控制端口*/ucharcodemun_to_char[]={"0123456789ABCDEF"};/*定义数字跟ASCII码的关系*/uchartemp,num,flag,sum=0,r;ucharcodetable1[]="Welcome!(^_^)";ucharcodetable2[]="0123456789ABCDEF";/*定义数字跟ASCII码的关系*/ucharcodetable3[]="*********";ucharcodetable4[]="Codeiswrong!";ucharcodetable5[]="Youareright!";ucharcodetable6[]="Thesecondtime!";ucharcodetable7[]="Thelasttime!";ucharcodetable8[]="Inputnewcode:";ucharcodetable9[]="Modifyright!!!";ucharcodetable10[]="Password:";ucharcodetable11[]="Wuzirong";ucharcodetable12[]="Calling....";ucharcodetable13[]="";ucharcodetable14[]="Inputagain:";ucharcodetable15[]="Modifyerror!!!";ucharinit_pswd[8]={1,2,3,4,5,6,7,8};//初始化密码ucharpswd[8]={0};sbitlcdrs=P1^7;/*定义LCD控制端口*/sbitlcdrw=P1^6;/*定义LCD控制端口*/sbitlcden=P2^4;/*定义LCD控制端口*/sbitSpeaker_port=P2^7;/*喇叭控制端口*//*****************************************子函数声明*/voiddelay(uintz);voidinit();//初始化子函数voidwrite_com(ucharcom);//写指令子函数voidwrite_data(uchardat1);//写数据子函数voidkeyscan();voidmima();voidmima1();voiddelete();voiddelay_1ms(ucharx);/************************************************液晶驱动*//*********************//*喇叭发声简单程序*/voidSpeaker_output(){ uchari; for(i=0;i<100;i++){ Speaker_port=0; delay_1ms(0.5); Speaker_port=1; delay_1ms(1); }}voidSpeaker_output2(){ uchari; for(i=0;i<50;i++){ Speaker_port=0; delay_1ms(1); Speaker_port=1; delay_1ms(1); }}voidSpeaker_output3(){ uchari; for(i=0;i<100;i++) { Speaker_port=0; delay_1ms(1); Speaker_port=1; delay_1ms(2); }}/*1MS为单位的延时程序*/voiddelay_1ms(ucharx){ucharj;while(x--){for(j=0;j<125;j++);}}voidinit(){ lcden=0; write_com(0x38); write_com(0x0e); write_com(0x06); write_com(0x01); write_com(0x80);}voidwrite_com(ucharcom) //写指令{ lcdrs=0; lcdrw=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;}voidwrite_data(uchardat1){ lcdrs=1; lcdrw=0; P0=dat1; delay(5); lcden=1; delay(5); lcden=0;}voiddelay(uintz){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidkeyscan(){ucharsccode,recode,out;scan_key_port=0xf0;/*发全"0"的行扫描码,列线输入*/if((scan_key_port&0xf0)!=0xf0)/*若有键按下*/{delay_1ms(2);/*延时去抖动*/if((scan_key_port&0xf0)!=0xf0)/*若有键按下*/{sccode=0xfe;/*逐行扫描初值*/while((sccode&0x10)!=0){scan_key_port=sccode;/*输出行扫描码*/if((scan_key_port&0xf0)!=0xf0)/*本行有键按下*/{recode=(scan_key_port&0xf0)|0x0f; scan_key_port=0xff;/*释放按键扫描端口*/ out=((~sccode)+(~recode)); switch(out) { case~0xe7:num=0;flag=1;Speaker_output();/*喇叭发出声音*/break; case~0xd7:num=1;flag=1;Speaker_output();/*喇叭发出声音*/break; case~0xb7:num=2;flag=1;Speaker_output();/*喇叭发出声音*/break; case~0x77:num=3;flag=1;Speaker_output();/*喇叭发出声音*/break; case~0xeb:num=4;flag=1;Speaker_output();/*喇叭发出声音*/break; case~0xdb:num=5;flag=1;Speaker_output();/*喇叭发出声音*/break; case~0xbb:num=6;flag=1;Speaker_output();/*喇叭发出声音*/break; case~0x7b:num=7;flag=1;Speaker_output();/*喇叭发出声音*/break; case~0xed:num=8;flag=1;Speaker_output();/*喇叭发出声音*/break; case~0xdd:num=9;flag=1;Speaker_output();/*喇叭发出声音*/break; } switch(out) { case~0xbd:num=10;flag=1;break; case~0x7d:num=11;flag=1;break; case~0xee:num=12;flag=1;break; case~0xde:num=13;flag=1;break; case~0xbe:num=14;flag=1;break; case~0x7e:num=15;flag=1;break; } }elsesccode=(sccode<<1)|0x01;/*行扫描左移一位*/}}} } /**********************主程序*****************************/voidmain(){ ucharm=0,w=0;init(); for(r=0;r<15;r++) { delay_1ms(2); write_data(table1[r]); }write_com(0x80+0x40);for(r=0;r<15;r++) { delay_1ms(2); write_data(table11[r]); }write_com(0x0c); do { keyscan(); } while(num!=15);mima();while((pswd[m]==init_pswd[m])&m<8)//密码比较{ m++;}if(m>=8)//密码正确{ delay(200);Speaker_output3();/*喇叭发出声音*/ keyscan();while(flag==1&&num==13); mima1();}else//密码有误{ m=0; write_com(0x80+0x40); for(r=0;r<14;r++) { delay_1ms(5); write_data(table4[r]); } delay(1000); init(); for(r=0;r<16;r++) { delay(20); write_data(table6[r]); } delay(1000);mima(); while((pswd[m]==init_pswd[m])&m<8)//再次比较 { m++; } if(m>=8) { mima1(); } else { m=0; write_com(0x80+0x40); for(r=0;r<14;r++) { delay_1ms(5); write_data(table4[r]); Speaker_output2();/*喇叭发出声音*/ } delay(1000); init(); for(r=0;r<14;r++) { delay(20); write_data(table7[r]); } delay(1000); mima(); while((pswd[m]==init_pswd[m])&m<8)//第三次比较 { m++; } if(m>=8) { mima1(); } else { init(); write_com(0x80+0x40); for(r=0;r<14;r++) { delay_1ms(100); write_data(table12[r]);Speaker_output3();/*喇叭发出声音*/keyscan(); if(flag==1&&num==13) {delay(100); break; } else{} } for(r=0;r<120;r++) { delay_1ms(100); Speaker_output3();/*喇叭发出声音*/ keyscan(); if(flag==1&&num==13) {delay(100); break; } else{} } write_com(0x0c); } } }}voidmima(){ ucharw=0;//局部变量很重要 init(); for(r=0;r<9;r++) { delay(20); write_data(table10[r]); } do { flag=0; keyscan(); write_com(0x80+9+w); if(flag==1&&num<=9) { pswd[w]=num; write_data(table3[w]); w++; if(w==8) write_com(0x0c); } if(flag==1&&num==14) //14则删除误输入的密码,即返回上一步. { w--; if(w==255) w=w+1; write_com(0x80+9+w); write_data(table13[w+1]); if(flag==1&&num<=9) { pswd[w]=num; write_data(table3[w]); } }} while(w<=7);}/********************输入初始密码正确后,密码修改*********************************************/voidmima1(){ ucharf=0,n=0,d=0; if(sum==0) { write_com(0x80+0x40); for(r=0;r<14;r++) { delay(20); write_data(table5[r]); } delay(2000); do { num=16; keyscan(); }while(num!=13); if(flag==1&&num==13) { init(); for(r=0;r<15;r++) { delay(20); write_data(table8[r]); } write_com(0x0c); write_com(0x80+0x40+n); write_com(0x0e); }//////////////////////////第一次输入修改密码//////////////////////////////// do{ num=16; keyscan(); write_com(0x80+0x40+n); if(flag==1&&num<=9) { init_pswd[n]=num; write_data(table3[n]); n++; if(n==8) write_com(0x0c); } if(flag==1&&num==14) { n--; if(n==255) n=n+1; write_com(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 春夜喜雨听评课记录
- 12份数学听评课记录
- 大一思想政治课件
- 1025t锅炉原理课程设计
- 专题五 职业生活中的道德与法律规范
- 《财务分析工商》课件
- 《旅游资源学绪论》课件
- 《诸子散文》课件
- 世界粮食日珍惜节约粮食主题127
- 《湖南凤凰垮桥事故》课件
- 急诊科上墙制度(一)
- 环境检测实验室分析人员绩效考核方案
- 大学生劳动教育(高职版)智慧树知到期末考试答案章节答案2024年深圳职业技术大学
- 路基土石方数量计算表
- 2023人教版新教材高中物理必修第三册同步练习-全书综合测评
- 月主题活动幼儿园主题活动记录表
- (完整)20以内加减法练习题50题一套及答案【必刷】
- 健美操智慧树知到期末考试答案章节答案2024年临沂大学
- 江苏开放大学本科物流管理专业060180物流信息管理期末试卷
- 后勤人员考试试题及答案
- HG/T 4339-2024 机械设备用涂料(正式版)
评论
0/150
提交评论