智能门禁系统详细设计概要_第1页
智能门禁系统详细设计概要_第2页
智能门禁系统详细设计概要_第3页
智能门禁系统详细设计概要_第4页
智能门禁系统详细设计概要_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/智能门禁系统摘要:智能门禁系统接受凌阳十六位单片机作为系统限制核心,利用其强大的语音识别功能,不仅实现了语音播放功能,完成了语音提示的要求,而且实现了语音限制门禁系统;利用其内置的Flash闪存,实现了密码的断电爱惜。除此而外,在键盘输入方面,强大的功能选择键满意了系统的要求;16*2液晶显示器的选择使操作要求清晰明白。此套智能门禁系统猛烈体现了其人性化的一面。关键词:智能门禁系统、语音识别、凌阳十六位单片机。引言家用防盗门早已经进入到千家万户,但防盗门的操作麻烦给用户带来了许多不便,当今市场迫切须要一种既平安又便利的门禁系统,鉴于此,我们的“智能门禁系统”——带语音识别、液晶显示功能的电子密码锁便应运而生。为了向大家介绍此智能门禁系统,我们将从以下几个方面介绍:系统的制作意义。系统的制作早期构想及其实现方案简介。系统功能最终实现及演示。系统硬件部分原理介绍。系统软件部分设计实现。对系统的自我评价。(存在及要解决的问题)制作心得和体会。参考文献。附录(一):凌阳单片机最小系统。附录(二):凌阳单片机下电子密码锁程序实现。附录(三):器件列表。1.系统的制作意义现在人们生活水平提高了,平安防范,是人们考虑的首要问题。而锁是解决平安问题的重要产品。目前市场上的电子锁产品功能不全,性能和平安性不高,且造价高。低质量的电子锁,给用户的财产平安造成很大威逼,同时,由于功能的不健全,给用户的运用带来了确定麻烦。故我们试图研制一种智能化、多功能、更人性化的门禁系统。我们研制的带语音识别功能电子限制密码锁,不仅给用户带来了平安的保障,便利的享受,而且此电子锁的语音识别功能更加体现了他人性化的一面,此种类型的电子密码锁将成为将来社会的供求亮点。2.系统的制作早期构想及其实现方案简介1.早期构想预期实现功能如下:(1)、键盘简化及编码方式的改进;键盘简化及编码方式的改进:一般数字键密码锁虽然有运用简洁的特点,但是键盘暴露在外,易受破坏,或者保密性不高;此外,键盘数量的简化又同时增加了运用的难度,用户运用不便利。大家可能见到过一些进口的温限制器(如日本RKCINSTRUMENTINC.生产的REX_C700温控器)的面板设计为:温度测量只用4位LED数码管显示,输入设定值显示也用4位LED。综合以上因素考虑,我们实行四按键的形式,输入键分为加、减、左、右移动键,按下加法键(减法键)确定一位密码的值,然后运用左右移动键移向下一位密码,再一次运用加、减键确定此位密码的值。(备注:这部分虽然没有实现,但我们的16位键盘设置更加体现了系统功能的强大性)(2)、语音识别系统限制;语音识别功能,语音限制门禁开关。(3)、语音提示功能;(4)、自动实现报警;当门禁系统输入密码错误过多时,自动报警(5)、断电密码爱惜;出现断电、多次错误密码输入时的处理(6)、限时开门系统;(这部分功能我们没能实现,很是缺憾)(7)、液晶显示功能;在初期设计电路时,我们支配实行51单片机作为我们的限制核心,然而,语音识别功能、语音提示功能、密码断电爱惜功能须要我们外扩集成芯片才能满意系统要求。其功能实现原理方框图如下:在此种条件下我们用51单片机做出了一个简洁的系统,基本实现了电子密码锁的键盘输入和液晶显示功能。详细电路图如下:其软件编程实现程序见附录(一):其实现功能如下:设置密码,断电不爱惜;输入密码,和系统原有密码或者设置新密码比较;液晶显示功能;报警功能;明显,这个“最小系统”的制作无法满意我们预期的功能实现,假如接受外扩集成芯片的做法,不仅从技术上,还是从经济方面考虑都不是一个明智的选择。鉴于此,我们接受凌阳单片机作为我们的限制电路核心,凌阳十六位单片机不仅内置32kFlash(闪存),而且集成了语音识别模块,从根本上,凌阳单片机满意了系统的基本要求,详细功能实现以及电路设计在以下详细介绍。3.系统功能最终实现及演示此系统现阶段包括以下几个模块:1)、键盘输入密码此系统接受4*4按键输入模式,密码初始设置为4位,(从软件上很简洁实现更多位数的密码操作,为操作演示计,我们接受4位)。各个按键功能的定义如下:0~9数字健指定为密码设置健(仅且只有他们能够作为密码值)A——确认健(按下此键,即比较输入密码值正确如否)B——取消键(按下此键,即取消上一次操作)C——开启语音功能键(按下此键,再次输入密码,就可以开启语音限制功能)D——关闭语音功能键(按下次键,就可以关闭语音限制功能)E——修改密码键(按下次键,再次输入密码,通过验证后,连续输入两次新的密码就可以设置新的密码)F——更改语音限制口令(按下次键,再次输入密码,通过验证后,即可进入语音口令修改程序操作)2)、语音限制输入进入语音限制功能后,先进行语音限制训练操作(训练过后此操作可跳过),训练成功后,方可进行语音限制,并且时时可以关闭语音功能。此外,语音口令还可以时时修改,再次进行语音限制训练操作即可。3)、密码修改操作此系统的密码设置存在Flash中,断电不丢失,密码修改后,系统原密码作废,新的密码生效,并存入Flash中。4)、语音提示操作对应于每一种操作,系统均赐予确定的语音提示。如:“请输入密码”、“密码错误”等。5)、液晶显示功能对应于每一种操作,系统均赐予确定的显示提示,便利操作。6)、液晶背光功能实现为了实现液晶背光功能,我们设计了一下三种电路:超声波探测电路、光敏传感电路、按键触发电路,在光线好的状况下,液晶不背光显示,光线差时,有按键或探测到有人接近时背光显示。7)、系统执行机构系统执行机构我单片机I/O口输出限制的继电器。8)、报警蜂鸣器9)、电源信号指示灯10)、限制信号指示灯4.系统硬件部分原理介绍此系统硬件部分电路核心部分为凌阳单片机及其外围电路(包括语音识别、输出电路),外围电路有:键盘输入、液晶显示、执行机构电路,此外,为了实现液晶显示器的背光功能,我们接受了超声波探测电路、光敏传感电路、输出延时电路等。电路总体设计模块方框图如下:液晶显示提示功能的实现液晶显示提示功能的实现键盘输入电路限制液晶显示背光功能限制液晶显示背光功能凌阳十六位单片机凌阳十六位单片机限制系统语音输出语音输入电路语音输出语音输入电路执行、报警机构执行、报警机构超声波探测电路、光敏传感电路、输出延时电路、键盘按键检测。15V、5V电源部分超声波探测电路、光敏传感电路、输出延时电路、键盘按键检测。15V、5V电源部分为了详细介绍我们的电路功能模块,我们将在下面分块介绍本系统的各个功能模块:电源部分:电源信号灯:凌阳十六位单片机限制电路:见附录(一)被限制的继电器:限制信号灯:蜂鸣器:键盘输入部分:液晶显示部分:背光功能限制模块基本方框图如下:1)、超声波探测放射部分:(含波形)2)、超声波探测接收放大电路:3)、光敏传感检测电路:4)、输入信号延迟电路:5.系统软件部分设计实现1、软件设计操作平台简介:(µ'nSP®IDE)µ'nSP®IDE工作界面如下:2、此系统功能困难,但软件设计较为简洁,程序功能实现简介图如下:起先起先系统初始化系统初始化键盘扫描键盘扫描FEDCBA数字键FEDCBA数字键取消更改语音口令关闭语音功能开启语音功能设置新的密码检验密码正确与否输入四位数字则为密码,否则跳到功能键上取消更改语音口令关闭语音功能开启语音功能设置新的密码检验密码正确与否输入四位数字则为密码,否则跳到功能键上返回依据返回依据液晶显示提示进行操作,输入四位密码后按确认键。密码正确执行相应操作;密码错误超过三次报警密码正确执行相应操作;密码错误超过三次报警对操作程序的说明以及要求:干脆输入密码开门;输入四位密码后按确认键,比较密码,密码正确表开启门禁系统,并有“门已经打开,请进”的提示余音。设置新的密码;按下B键后,输入原密码,确认后输入新的密码,确认后再次输入新的密码,检验正确后,密码修改成功,原密码作废。开启语音功能;按下C键,输入密码确认后,进入语音识别模式。假如是第一次进入语音识别模式,须要进行语音识别训练,训练两遍正确后,完成训练操作,此时语音识别功能实时监测。在语音识别实时监测的同时,我们的键盘扫描并没有停止,也就是说我们的键盘输入等级高于语音识别模式,在任何状况下键盘输入都是有效的。关闭语音识别功能;按下D键,不须要输入密码即可关闭语音识别功能,要想开启此项功能,必需按下C键开启语音识别功能。更改语音口令;按下E键,进入语音识别口令修改模块,输入密码确认后,进入语音口令修改训练模块,依据语音提示以及液晶显示很便利的就可以成功更改语音口令。取消键;按下F键,即可取消全部操作,回到系统初始化后的界面。主程序见附录(二):6.对系统的自我评价 在总体上,我们对这个系统的设计还是比较满意的,但是,虽然我们对这个项目投入了大量的时间和精力,由于学问有限,我们在许多方面有许多的不足之处。 以下我将从硬件和软件两个方面来阐述这个系统的各个部分:硬件部分:1.我们认为,我们做得比较成功的地方就是通过超声波探测、光敏传感以及延时电路的组成实现了液晶显示器的背光功能 2.此外,我们的液晶显示和键盘电路特别简洁。 3.缺憾的是,超声波探测精度不高,精确性有待改进。软件部分:一提的是,在整个系统设计过程中,语音限制和语音输出提示始终是我们软件设计的重点,同时也是我们的亮点,体现了我们设计系统人性化的一面。键盘扫描和液晶驱动工程中,我们详尽地应用了科学的软件设计思想,使程序简洁,有效。此外,我们的主程序设计,结构显明,条理清晰。但是,美中不足的是,我们在开启语音功能时,系统时钟不断变更,所以造成键盘扫描的不成熟,此处有待改进。7.系统设计过程中的实践体验 通过对该系统的设计,我们不仅收获颇丰,而且体会也颇深。过这次设计,我们深深体会到,理论指导着实践,但实践才是最终的目标。我们在设计过程中,往往遇到这样的状况,设计的电路从理论上毫无差错,但实现起来却是困难重重。只有在不断的摸索中才能找到界却问题的方法。们深深体会到团体合作,在项目制作过程中特别重要,好的合作精神需要我们时时刻刻牢记在心。在任何时候,科技离不开创新,在设计项目的同时,我们须要抛弃成见,独树一帜,敢于实现。在这一点上,我认为我们做得比较成功。在设计系统初始,我们接受51系列单片机,而语音功能却只能外扩专用芯片,实现起来比较困难,最终我们大胆接受凌阳单片机一举解决语音限制问题。制作过程中,齐明老师在技术上赐予极大的帮助和支持。在此,感谢齐明老师对我们电子制作的指导! 总之,这次活动给我们带来了无穷的收获和乐趣,感谢学校和老师给我们供应了一个熬炼的大舞台。8.参考文献《凌阳十六位单片机应用教程》《MCS-51单片机应用设计》《元器件手册》9.附录附录(一):凌阳单片机最小系统:附录(二):凌阳单片机下电子锁程序实现:#include"bsrsd.h"#defineHaveKey1#defineNoKey0#defineNAME_ID 0x100#defineRSP_AGAIN 1#defineRSP_NOVOICE 2#defineRSP_NAMEDIFF 3#defineRSP_CMDDIFF 4#defineRSP_STAR 5#defineRSP_NOISY 6//宏定义#defineHaveKey1#defineNoKey0//全程变量externvoidClearWatchDog();intPlayFlag=0;unsignedintKey_Value;unsignedintKeyDownTimes;//保存按键次数//按键标识/*****************************************************************************************************///函数声明voidClear_Password();unsignedintF_Affirm_New_Password();unsignedintF_Affirm_Password();voidSave_New_Pwd_To_Flash();voidLCD_SHOW(charSentence[]);voidPlayRespond(intResult);intTrainWord(intWordID,intRespondID);//全局变量定义externPwd_Init[1];unsignedintPassword[4];unsignedintPassword_Temp[4];unsignedintKey_Flag=0;unsignedintKey_Num=0;unsignedintTrained=0;/****************************************************************************************************/main(){ intres,timeCnt=0,random_no=0,Error_No=0,NoKey_Times=10; inti; int/*****************************************************************************************************/ //变量定义 unsignedState=1,Voice_State=0; //这个变量用于推断目前除在哪中输入状态中 //1:一般开门状态 2:更改密码,输入原密码状态 3:更改密码,第一次输入新密码状态 //4:更改密码,其次次输入新密码状态5:进入语音系统时输入密码状态6:进入语音系统重新训练 //输入密码验证/*****************************************************************************************************/ Protect_Clock(); InitIO();//键盘 KeyDownTimes=0; Key_Flag=NoKey; ClearWatchDog(); BSR_DeleteSDGroup(0); //初始化存储器RAM LCD_INIT(); INIT_GONGNENG(); Clear_Password(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?..."); if(F_FlashRead(Pwd_Init)) { F_FlashErase(0xfe00); for(i=0;i<4;i++) { F_FlashWrite1Word(0xfe00+i,i); } F_FlashWrite1Word(Pwd_Init,0); } while(1) { ClearWatchDog(); Protect_Clock(); InitIO();//键盘 if(Voice_State) { Protect_Clock_fast(); } else { Protect_Clock(); } F_Key_Scan(); while(Key_Flag==HaveKey) //有按键按下 { Key_Value=F_Get_Key(); if(Voice_State==0) { while(NoKey_Times!=0) { F_Key_Scan(); if(Key_Flag==NoKey) NoKey_Times--; elseNoKey_Times=10; } NoKey_Times=10; } LCD_LIGHT_OPEN(); //打开背光功能 Key_Flag=NoKey; switch(Key_Value) //推断键值 { //0~9表示输入的是密码,将等待下一个键的输入 case0:case1:case2:case3:case4:case5:case6:case7:case8:case9: if(Key_Num==0) { LCD_CLEAR(); LCD_SHOW("Password:"); SET_Address2(); } if(Key_Num<4) { Password[Key_Num++]=Key_Value; //保存输入的键值,已输入按键数加一 LCD_ADD(Key_Value+'0'); //屏幕上显示一个*号 DELAY(); } if(Key_Num>4) { Key_Num++; LCD_ADD('*'); DELAY(); } break; case10://6:进入语音系统重新训练输入密码验证 LCD_CLEAR(); LCD_SHOW("Trainthevoice!"); SET_Address2(); LCD_SHOW("CheckyouID:"); PlayRespond(6); //语音提示****"请输入密码(6)"!·!!!!! Protect_Clock(); State=6; Key_Num=0; break; case11://确认键 //输入新密码时的两个状态处理方式有所不同 if(State== 3) { if(Key_Num==4) { LCD_CLEAR(); LCD_SHOW("PleaseAgain!"); SET_Address2(); LCD_SHOW("InputnewPWD:"); PlayRespond(8); //语音提示*****“请再次输入新密码(7)“!·!!!!! Protect_Clock(); for(i=0;i<4;i++) /*把这个密码存到临时变量Password_Temp中*/ { Password_Temp[i]=Password[i]; } Pass=0; Key_Num=0; State=4; break; } else { LCD_CLEAR(); LCD_SHOW("4bitPSW!"); SET_Address2(); LCD_SHOW("PleaseAgain!"); PlayRespond(7); //语音提示*****“密码错误(3)”!·!!!!! Protect_Clock(); LCD_CLEAR(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?..."); Key_Num=0; State=1; break; } } elseif(State==4) {Pass=0; Pass=F_Affirm_New_Password(); } //其次遍输入密码时的验证 else {Pass=0; Pass=F_Affirm_Password(); }//验证密码 if(Pass==1) //密码正确 { //推断目前状态,确定这个正确的密码是用来干吗的 Pass=0; Error_No=0; LCD_LIGHT_OFF(); switch(State) { case1: DOOR_OPEN();/*开门*/ LIGHT_OPEN(); LCD_CLEAR(); LCD_SHOW("DOOROPENED"); PlayRespond(12); //语音提示*****“主子您好,门已经开了(!·!!!!! Protect_Clock(); SET_Address2(); LCD_SHOW("BestWishes!"); DOOR_OFF(); LIGHT_OFF(); LCD_CLEAR(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?..."); Key_Num=0; State=1; break; case2: LCD_CLEAR(); LCD_SHOW("Passwordright!"); SET_Address2(); LCD_SHOW("Newpassword:"); PlayRespond(8); //语音提示*****请输入新密码!·!!!!! Protect_Clock(); State=3; break; case4: Save_New_Pwd_To_Flash(); //保存新密码 LCD_CLEAR(); LCD_SHOW("Successfully!"); SET_Address2(); LCD_SHOW("RemenberTheNew"); PlayRespond(9); //语音提示*****密码修改成功,要记住哦!·!!!!! Protect_Clock(); LCD_CLEAR(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?..."); State=1; break; case5: if(Trained) { Voice_State=1; } else { while(TrainWord(NAME_ID,0)!=0); BSR_InitRecognizer(BSR_MIC); //辨识器初始化 Protect_Clock(); //******爱惜时钟************************ BSR_EnableCPUIndicator();//启动实时监控 PlayRespond(RSP_STAR); //*******播放起先辨识的提示音 Protect_Clock(); //******爱惜时钟************************ Trained=1; Voice_State=1; } LCD_CLEAR(); LCD_SHOW("Voiceon"); SET_Address2(); LCD_SHOW("Rememberit!"); PlayRespond(13); //语音提示*****语音功能已经开启!·!!!!! Protect_Clock(); LCD_CLEAR(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?..."); State=1; break; case6://重新输入起先语音训练 Trained=0; if(Trained) { Voice_State=1; } else { BSR_DeleteSDGroup(0); //初始化存储器RAM while(TrainWord(NAME_ID,0)!=0); BSR_InitRecognizer(BSR_MIC); //辨识器初始化 BSR_EnableCPUIndicator();//启动实时监控 PlayRespond(RSP_STAR); //播放起先辨识的提示音 Protect_Clock(); Trained=1; Voice_State=1; } LCD_CLEAR(); LCD_SHOW("VoiceTrained!"); SET_Address2(); LCD_SHOW("Rememberit!"); PlayRespond(9); //语音提示*****语音密码修改成功!·!!!!! Protect_Clock(); InitIO();//键盘 KeyDownTimes=0; Key_Flag=NoKey; //BSR_DeleteSDGroup(0); //初始化存储器RAM LCD_INIT(); INIT_GONGNENG(); LCD_CLEAR(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?..."); State=1; break; default: break; } //Switch(State) Clear_Password(); Key_Num=0; break; } //if(pass==1) else { Error_No++; if(Error_No<3) { LCD_CLEAR(); LCD_SHOW("errorpwd"); SET_Address2(); LCD_SHOW("Rememberit!"); PlayRespond(7); //语音提示*****密码错误!·!!!!! Protect_Clock(); LCD_CLEAR(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?.."); } else { LCD_CLEAR(); LCD_SHOW("errorpwd"); SET_Address2(); LCD_SHOW("Rememberit!"); ALARM(); PlayRespond(10); //语音提示*****我要报警了!!!!·!!!!! Protect_Clock(); LCD_CLEAR(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?.."); } Clear_Password(); Key_Num=0; State=1; break; } case12://取消键 LCD_CLEAR(); LCD_SHOW("Cancel"); SET_Address2(); LCD_SHOW("Doitagain!"); Clear_Password(); LCD_CLEAR(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?.."); Key_Num=0; State=1; break; case13://更改键 LCD_CLEAR(); LCD_SHOW("Modifypasswd!"); SET_Address2(); LCD_SHOW("CheckyouID:"); PlayRespond(6); //语音提示****"请输入密码"!·!!!!! Protect_Clock(); State=2; break; case14://进入语音 LCD_CLEAR(); LCD_SHOW("Openvoice!"); SET_Address2(); LCD_SHOW("CheckyouID:"); PlayRespond(6); //语音提示****"请输入密码"!·!!!!! Protect_Clock(); State=5; break; case15://关闭语音 LCD_CLEAR(); LCD_SHOW("VOICEOFF"); SET_Address2(); LCD_SHOW("Rememberit!"); Voice_State=0; PlayRespond(11); //语音提示****"语音功能关闭!·!!!!! Protect_Clock(); LCD_CLEAR(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?.."); break; default : break; }//和switch(KeyValue)相对应}//和while(有键按下)if(Voice_State){ Protect_Clock_fast(); res=ProtectA_BSR_GetResult(); Protect_Clock(); if(res>0) //识别出叮嘱 { switch(res) { caseNAME_ID://触发叮嘱响应 DOOR_OPEN();/*开门*/ LIGHT_OPEN(); LCD_CLEAR(); LCD_SHOW("DOOROPENED"); PlayRespond(12); //语音提示*****“主子您好,门已经开了!·!!!!! Protect_Clock(); SET_Address2(); LCD_SHOW("BestWishes!"); DOOR_OFF(); LIGHT_OFF(); LCD_CLEAR(); LCD_SHOW("Welcome!"); SET_Address2(); LCD_SHOW("A?B?C?D?E?F?..."); Key_Num=0;//**********? State=1;//********? break; } } }//if(Voice_state=1)}//while(1)}//main()///////////////////////////////////////////////voidClear_Password(){ inti; for(i=0;i<4;i++) { Password[i]=0; Password_Temp[i]=0; } Key_Num=0;}/////////////////////////////////////////////////unsignedintF_Affirm_New_Password(){ inti; for(i=0;i<4;i++) if(Password[i]!=Password_Temp[i]) {return0;} return1;}///////////////////////////////////////////////////unsignedintF_Affirm_Password(){ inti; unsignedtemp; for(i=0;i<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论