您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 多功能电子密码锁设计报告-精品
电子系统设计报告系部:物理与机电工程学院实验项目:多功能密码锁专业班级:学号:学生姓名:同组成员:指导教师:完成时间:2011-06-19报告成绩:评阅意见:评阅教师日期电子密码锁一、设计任务与要求1、采用STC89C52单片机为主控芯片,结合外围电路,通过软件程序实现多功能电子密码锁功能;2、在没输入密码时显示万年历,并可调;3、通过按键来确定输入密码,实现密码锁功能,正确输入密码后有开锁提示;二、方案设计与论证方案一:采用数字电路控制用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,将密码保存在JK触发器中,与输入密码通过比较器比较,判断结果是否相符合[4]。采用数字电路设计的方案好处就是设计简单,但控制的准确性和灵活性差,故不采用。方案二:采用以单片机为核心的控制方案选用单片机作为系统的核心部件,实现控制与处理的功能。单片机具有资源丰富、速度快、编程容易等优点。利用单片机内部的随机存储器(RAM)和只读存储器(ROM)及其引脚资源,外接液晶显示(LCD),键盘输入等实现数据的处理传输和显示功能,基本上能实现设计指标。因此综合考虑,本系统采用方案二。三、硬件电路设计本设计主要由单片机、矩阵键盘、独立按键、液晶显示器等部分组成。其中矩阵键盘用于输入数字密码,独立按键用于实现可调万年历。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比,从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可。系统整体框图如图3-1所示。图3-1系统结构框图各模块功能如下:1.键盘输入模块:分为密码输入按键与几个功能按键,用于完成密码锁输入功能。2.显示模块:用于完成对系统状态显示及操作提示功能。3.复位电路:完成系统的复位。4.独立键盘:用于完成可调万年历功能。6.开锁电路:应用继电器及发光二极管模拟开锁,完成开锁及开锁提示。(一)、各个模块设计:1、复位电路模块:该电路上电单片机自动复位,按下按键手动复位。2、晶振电路模块:STC89C52显示模块开锁电路独立按键复位电路键盘输入模块3、开关电路模块:4、矩阵键盘电路模块:用P1口组成4*4的矩阵键盘,各键的定义一次为:0、1、2、3、4、5、6、7、8、9、*、#、enetr(程序中设计只有该键按下才能进行密码输入等操作)、del(当密码按错时可以按下该键删除)、unclock(解锁键,即三次密码都错了只能按下它进行解锁)。5、独立按键模块:Tiao是位功能选择,通过选择位来决定万年历的调整,+1、-1是调节功能键。5、液晶1602显示电路模块:6、继电器电路模块:6、原理图7、PCB图四、软件设计总程序流程图如下:开始初始化Tiao按下否?Enter按下否?NY第几次按下?“+”功能键按下否“-”功能键按下否3秒到否NNYYYNYNY位选择被调数加一被调数减一输入密码密码输入错误?OK!YN显示调后万年历第八次按下结束N键功能程序流程图如下图所示:YNYNYNYN键功能程序键值=0~9?键值=开锁?键值=确认?键值=设置?返回密码输入程序确认程序设置程序开锁程序开锁程序流程图如下图所示:Y开锁流程图开锁LCD初始化输入密码按开锁键报警程序确认程序输入密码正确?开锁成功返回N程序清单见附录六、仿真过程与仿真结果上电初始状态仿真图:按下独立按键Tiao后,选择位功能仿真图如下:调整完时间之后:请输入密码,程序实时扫描矩阵键盘的输入:密码输入正确的仿真效果图,继电器处于工作状态:密码输入正确后3秒钟跳回时间显示:密码输入出错时仿真效果图:六、安装与调试经过腐蚀制板、焊接元件,再上电调试各模块电路都能按照仿真里的正常工作。初始上电的时候LCD1602上电显示:设置正常其他状态都能正常显示4*4矩阵键盘各功能键正常工作,密码键正常输入独立按键各功能键能正常工作开锁驱动电路(8550驱动继电器)有开锁信号时继电器正常动作七、结论与心得八、参考文献[1]叶启明.单片机制作的新型安全密码锁[J].家庭电子.2000,第六期:24-27[2]郭海英.基于单片机的电子安全密码锁的设计[J].现代电子技术.2005,第三期:57-58[3]李明喜.新型电子密码锁的设计[J].机电产品开发与创新.2004,第八期:77-79[4]祖龙起.刘仁杰.孙乃凌.一种新颖的电子密码锁[J].电子世界.2001,第六期:88-90[5]李明喜.新型电子密码锁的设计[J].机电产品开发与创新.2004,第五期:22-28[6]长沙太阳人电子有限公司通用型1602液晶PDF资料.[7]周立功单片机开发网.附1:程序清单如下:#includereg52.h#definelcdP2#defineucharunsignedchar#defineuintunsignedint#defineno_key20//无按键时的返回值sbitrs=P3^0;sbitrw=P3^1;//lcd数据命令选择端sbite=P3^2;//lcd使能信号端sbitkey1=P3^3;sbitkey2=P3^4;sbitkey3=P3^5;sbitkey=P3^7;//开锁信号控制端sbitenter=P1^3;//该键按下后才能进行输入密码等操作ucharconflag,keyflag=3;ucharjz=20;//键值变量uchartemp1;//用此变量来存储键盘扫描的返回值,以便判断是否有键按下ucharcodetable0[6]={3,0,3,0,3,0};//初始密码ucharcodetable9[6]={3,1,3,1,3,1};//初始密码ucharcodetable1[]=2011-05-07w-6;ucharcodetable2[]=Time-03:03:00;ucharcodetable3[]=Enterplease:;ucharcodetable4[]=OK!;ucharcodetable6[]=ERRO!;ucharcodetable7[]=Enteragain:;ucharcodetable8[]=LOCKED!;ucharcodetable10[]=UNLOCKED!;ucharcodetable11[]=Can'topen!;unsignedcharm;ucharnum,t0,keynum,hour,min,sec,year,month,day,week;uchartable5[6];//定义输入密码值存储数组/****************************************函数名称:delay**函数功能:软件延时,时间为z毫秒**入口参数:z延时控制值,值越大,延时越长**出口参数:无***************************************/voiddelay(uintz){uintx,y;for(x=z;x0;x--)for(y=110;y0;y--);}/****************************************函数名称:write_com**函数功能:1602写命令函数,可以用此函数写不同的指令**入口参数:com**出口参数:无***************************************/voidwrite_com(ucharcom){rs=0;rw=0;e=0;P2=com;delay(5);e=1;delay(5);e=0;}/****************************************函数名称:write_date**函数功能:1602写数据函数,可以用此函数写不同的数据,程序对应的硬件1602的数据口为P2口**入口参数:date**出口参数:无***************************************/voidwrite_date(uchardate){rs=1;rw=0;e=0;P2=date;delay(5);e=1;delay(5);e=0;}/*显示位*/voidwrite_week(uchardte){ucharshi,ge;shi=dte/10;ge=dte%10;write_com(0x80+13);write_date(0x30+ge);}voidwrite_clock(ucharadd,uchardat){ucharfirst,second;second=dat/10;first=dat%10;write_com(0x80+0x40+add);write_date(0x30+second);write_com(0x80+0x40+add+1);write_date(0x30+first);}voidwrite_nyr(ucharadd,uchardte){ucharshi,ge;shi=dte/10;ge=dte%10;write_com(0x80+add);delay(5);write_date(0x30+shi);write_com(0x80+add+1);delay(5);write_date(0x30+ge);}/****************************************函数名称:init**函数功能:初始化函数**入口参数:无**出口参数:无***************************************/voidinit(){ucharhour=3,min=3,year=11,month=5,day=7,week=6;ucharnum;e=0;write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口write_com(0x0c);//开显示,不显示光标write_com(0x06);//当读或写一个字符后地址指针加1,且光标加1write_com(0x01);//显示清屏:数据指针、所有显示清0write_com(0x80);//设置数据地址指针for(num=0;num15;num++){write_date(table1[num]);//LCD显示初始设置时间;delay(5);}write_com(0x80+0x40);for(num=0;num14;num++){write_date(table2[num]);//LCD显示初始设置时间;delay(5);}/*定时器初始化*/TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1){if(key1==0)//时钟设置//key1按下{delay(5);if(key1==0)//key1真的按下了{keynum++;while(!key1)//去键抖TR0=0;//时钟暂停if(keynum==1)//key1按下第一次{write_com(0x80+0x40+13);write_com(0x0f);}if(keynum==2)//key1按下第二次{write_com(0x80+0x40+10);}if(keynum==3)//key1按下第三次{write_com(0x80+0x40+7);}if(keynum==4)//key1按下第三次{write_com(0x80+13);}if(keynum==5)//key1按下第三次{write_com(0x80+9);}if(keynum==6)//key1按下第三次{write_com(0x80+6);}if(keynum==7)//key1按下第三次{write_com(0x80+3);}if(keynum==8)//key1按下第四次{keynum=0;//按键次数清零write_com(0x0c);TR0=1;//继续运行时钟}}}/*按键加*/if(keynum!=0){if(key2==0)
本文标题:多功能电子密码锁设计报告-精品
链接地址:https://www.777doc.com/doc-5897910 .html