《4智能门禁系统.doc》由会员分享,可在线阅读,更多相关《4智能门禁系统.doc(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、哈尔滨工业大学2004年本科生科技创新活动获奖作品汇编智能门禁系统郭德胜 李建军 王伟波指导教师:齐明摘 要:智能门禁系统采用凌阳十六位单片机作为系统控制核心,利用其强大的语音识别功能,不仅实现了语音播放功能,完成了语音提示的要求,而且实现了语音控制门禁系统;利用其内置的Flash闪存,实现了密码的断电保护。除此而外,在键盘输入方面,强大的功能选择键满足了系统的要求;16*2液晶显示器的选择使操作要求清晰明了。此套智能门禁系统强烈体现了其人性化的一面。关键词:智能门禁系统、语音识别、凌阳十六位单片机。引言家用防盗门早已经进入到千家万户,但防盗门的操作麻烦给用户带来了许多不便,当今市场迫切需要一
2、种既安全又方便的门禁系统,鉴于此,我们的“智能门禁系统”带语音识别、液晶显示功能的电子密码锁便应运而生。为了向大家介绍此智能门禁系统,我们将从以下几个方面介绍:1、 系统的制作意义。2、 系统的制作早期构想及其实现方案简介。3、 系统功能最终实现及演示。4、 系统硬件部分原理介绍。5、 系统软件部分设计实现。6、 对系统的自我评价。(存在及要解决的问题)7、 制作心得和体会。8、 参考文献。9、 附录(一):凌阳单片机最小系统。10、 附录(二):凌阳单片机下电子密码锁程序实现。11、 附录(三):器件列表。1系统的制作意义现在人们生活水平提高了,安全防范,是人们考虑的首要问题。而锁是解决安全
3、问题的重要产品。目前市场上的电子锁产品功能不全,性能和安全性不高,且造价高。低质量的电子锁,给用户的财产安全造成很大威胁,同时,由于功能的不健全,给用户的使用带来了一定麻烦。故我们试图研制一种智能化、多功能、更人性化的门禁系统。我们研制的带语音识别功能电子控制密码锁,不仅给用户带来了安全的保障,方便的享受,而且此电子锁的语音识别功能更加体现了他人性化的一面,此种类型的电子密码锁将成为未来社会的供求亮点。2系统的制作早期构想及其实现方案简介1早期构想预期实现功能如下:(1)、键盘简化及编码方式的改进;键盘简化及编码方式的改进:普通数字键密码锁虽然有使用简单的特点,但是键盘暴露在外,易受破坏,或者
4、保密性不高;此外,键盘数量的简化又同时增加了使用的难度,用户使用不方便。大家可能见到过一些进口的温控制器(如日本RKCINSTRUMENT INC.生产的REX_C700温控器)的面板设计为:温度测量只用4位LED数码管显示,输入设定值显示也用4位LED。综合以上因素考虑,我们采取四按键的形式,输入键分为加、减、左、右移动键,按下加法键(减法键)确定一位密码的值,然后使用左右移动键移向下一位密码,再一次使用加、减键确定此位密码的值。 (备注:这部分虽然没有实现,但我们的16位键盘设置更加体现了系统功能的强大性)(2)、语音识别系统控制;语音识别功能,语音控制门禁开关。(3)、语音提示功能;(4
5、)、自动实现报警;当门禁系统输入密码错误过多时,自动报警(5)、断电密码保护;出现断电、多次错误密码输入时的处理(6)、限时开门系统;(这部分功能我们没能实现,很是遗憾)(7)、液晶显示功能;在初期设计电路时,我们计划采取51单片机作为我们的控制核心,然而,语音识别功能、语音提示功能、密码断电保护功能需要我们外扩集成芯片才能满足系统要求。其功能实现原理方框图如下:在此种条件下我们用51单片机做出了一个简单的系统,基本实现了电子密码锁的键盘输入和液晶显示功能。具体电路图如下:其软件编程实现程序见附录(一):其实现功能如下:1、 设置密码,断电不保护;2、 输入密码,与系统原有密码或者设置新密码比
6、较;3、 液晶显示功能;4、 报警功能;显然,这个“最小系统”的制作无法满足我们预期的功能实现,如果采用外扩集成芯片的做法,不仅从技术上,还是从经济方面考虑都不是一个明智的选择。鉴于此,我们采用凌阳单片机作为我们的控制电路核心,凌阳十六位单片机不仅内置32kFlash(闪存),而且集成了语音识别模块,从根本上,凌阳单片机满足了系统的基本要求,具体功能实现以及电路设计在以下详细介绍。3系统功能最终实现及演示此系统现阶段包括以下几个模块:1)、键盘输入密码此系统采用4*4按键输入模式,密码初始设置为4位,(从软件上很容易实现更多位数的密码操作,为操作演示计,我们采用4位)。各个按键功能的定义如下:
7、1、 09数字健指定为密码设置健(仅且只有他们能够作为密码值)2、 A确认健(按下此键,即比较输入密码值正确如否)3、 B取消键(按下此键,即取消上一次操作)4、 C开启语音功能键(按下此键,再次输入密码,就可以开启语音控制功能)5、 D关闭语音功能键(按下次键,就可以关闭语音控制功能)6、 E修改密码键(按下次键,再次输入密码,通过验证后,连续输入两次新的密码就可以设置新的密码)7、 F更改语音控制口令(按下次键,再次输入密码,通过验证后,即可进入语音口令修改程序操作)2)、语音控制输入进入语音控制功能后,先进行语音控制训练操作(训练过后此操作可跳过),训练成功后,方可进行语音控制,并且时时
8、可以关闭语音功能。此外,语音口令还可以时时修改,再次进行语音控制训练操作即可。3)、密码修改操作此系统的密码设置存在Flash中,断电不丢失,密码修改后,系统原密码作废,新的密码生效,并存入Flash中。4)、语音提示操作对应于每一种操作,系统均给予一定的语音提示。如:“请输入密码”、“密码错误”等。5)、液晶显示功能对应于每一种操作,系统均给予一定的显示提示,方便操作。6)、液晶背光功能实现为了实现液晶背光功能,我们设计了一下三种电路:超声波探测电路、光敏传感电路、按键触发电路,在光线好的情况下,液晶不背光显示,光线差时,有按键或探测到有人接近时背光显示。7)、系统执行机构系统执行机构我单片
9、机I/O口输出控制的继电器。8)、报警蜂鸣器9)、电源信号指示灯10)、控制信号指示灯4系统硬件部分原理介绍此系统硬件部分电路核心部分为凌阳单片机及其外围电路(包括语音识别、输出电路),外围电路有:键盘输入、液晶显示、执行机构电路,此外,为了实现液晶显示器的背光功能,我们采用了超声波探测电路、光敏传感电路、输出延时电路等。电路总体设计模块方框图如下:液晶显示提示功能的实现键盘输入电路控制液晶显示背光功能凌阳十六位单片机控制系统语音输出语音输入电路执行、报警机构超声波探测电路、光敏传感电路、输出延时电路、键盘按键检测。15V、5V电源部分为了详细介绍我们的电路功能模块,我们将在下面分块介绍本系统
10、的各个功能模块:1、 电源部分:2、 电源信号灯:3、 凌阳十六位单片机控制电路:见附录(一) 4、 被控制的继电器:5、 控制信号灯:6、 蜂鸣器:7、 键盘输入部分:8、 液晶显示部分:9、 背光功能控制模块基本方框图如下:1)、超声波探测发射部分:(含波形)2)、超声波探测接收放大电路:3)、光敏传感检测电路:4)、输入信号延迟电路:5系统软件部分设计实现1、软件设计操作平台简介:(nSP IDE)nSP IDE工作界面如下:2、此系统功能复杂,但软件设计较为简单,程序功能实现简介图如下:开始系统初始化键盘扫描FEDCBA数字键取消更改语音口令关闭语音功能开启语音功能设置新的密码检验密码
11、正确与否输入四位数字则为密码,否则跳到功能键上返回按照液晶显示提示进行操作,输入四位密码后按确认键。密码正确执行相应操作;密码错误超过三次报警对操作程序的解释以及要求:1、 直接输入密码开门;输入四位密码后按确认键,比较密码,密码正确表开启门禁系统,并有“门已经打开,请进”的提示余音。2、 设置新的密码;按下B键后,输入原密码,确认后输入新的密码,确认后再次输入新的密码,检验正确后,密码修改成功,原密码作废。3、 开启语音功能;按下C键,输入密码确认后,进入语音识别模式。如果是第一次进入语音识别模式,需要进行语音识别训练,训练两遍正确后,完成训练操作,此时语音识别功能实时监测。在语音识别实时监
12、测的同时,我们的键盘扫描并没有停止,也就是说我们的键盘输入等级高于语音识别模式,在任何情况下键盘输入都是有效的。4、 关闭语音识别功能;按下D键,不需要输入密码即可关闭语音识别功能,要想开启此项功能,必须按下C键开启语音识别功能。5、 更改语音口令;按下E键,进入语音识别口令修改模块,输入密码确认后,进入语音口令修改训练模块,根据语音提示以及液晶显示很方便的就可以成功更改语音口令。6、 取消键;按下F键,即可取消所有操作,回到系统初始化后的界面。主程序见附录(二):6对系统的自我评价在总体上,我们对这个系统的设计还是比较满意的,但是,虽然我们对这个项目投入了大量的时间和精力,由于知识有限,我们
13、在很多方面有很多的不足之处。以下我将从硬件和软件两个方面来阐述这个系统的各个部分:硬件部分:1我们认为,我们做得比较成功的地方就是通过超声波探测、光敏传感以及延时电路的组成实现了液晶显示器的背光功能 2此外,我们的液晶显示和键盘电路十分简洁。 3遗憾的是,超声波探测精度不高,准确性有待改进。软件部分:1 一提的是,在整个系统设计过程中,语音控制和语音输出提示一直是我们软件设计的重点,同时也是我们的亮点,体现了我们设计系统人性化的一面。2 键盘扫描和液晶驱动工程中,我们详尽地应用了科学的软件设计思想,使程序简洁,有效。3 此外,我们的主程序设计,结构鲜明,条理清晰。4 但是,美中不足的是,我们在
14、开启语音功能时,系统时钟不断变化,所以造成键盘扫描的不成熟,此处有待改进。7系统设计过程中的实践体验通过对该系统的设计,我们不仅收获颇丰,而且体会也颇深。1 过这次设计,我们深深体会到,理论指导着实践,但实践才是最终的目标。我们在设计过程中,往往遇到这样的情况,设计的电路从理论上毫无差错,但实现起来却是困难重重。只有在不断的摸索中才能找到界却问题的方法。2 们深深体会到团体合作,在项目制作过程中十分重要,好的合作精神需要我们时时刻刻牢记在心。3 在任何时候,科技离不开创新,在设计项目的同时,我们需要抛弃成见,标新立异,敢于实现。在这一点上,我认为我们做得比较成功。在设计系统初始,我们采用51系
15、列单片机,而语音功能却只能外扩专用芯片,实现起来比较困难,最后我们大胆采用凌阳单片机一举解决语音控制问题。制作过程中,齐明老师在技术上给予极大的帮助和支持。在此,感谢齐明老师对我们电子制作的指导!总之,这次活动给我们带来了无穷的收获和乐趣,感谢学校和老师给我们提供了一个锻炼的大舞台。8参考文献凌阳十六位单片机应用教程MCS-51 单片机应用设计元器件手册9附录附录(一):凌阳单片机最小系统:附录(二):凌阳单片机下电子锁程序实现:#include bsrsd.h#define HaveKey 1#define NoKey 0#define NAME_ID 0x100#define RSP_AG
16、AIN1#define RSP_NOVOICE2#define RSP_NAMEDIFF3#define RSP_CMDDIFF4#define RSP_STAR 5#define RSP_NOISY6/宏定义#define HaveKey 1#define NoKey 0/.全程变量.extern void ClearWatchDog();int PlayFlag = 0;unsigned int Key_Value;unsigned int KeyDownTimes; /保存按键次数 /按键标识 /*/函数声明void Clear_Password();unsigned int F_Aff
17、irm_New_Password();unsigned int F_Affirm_Password();void Save_New_Pwd_To_Flash();void LCD_SHOW(char Sentence);void PlayRespond(int Result);int TrainWord(int WordID, int RespondID);/全局变量定义extern Pwd_Init1;unsigned int Password4;unsigned int Password_Temp4;unsigned int Key_Flag=0;unsigned int Key_Num=
18、0;unsigned int Trained=0;/*/main()int res, timeCnt = 0, random_no = 0,Error_No=0,NoKey_Times=10;int i;int Pass=0;/*/变量定义unsigned State=1,Voice_State=0;/这个变量用于判断目前除在哪中输入状态中/1:普通开门状态2:更改密码,输入原密码状态3:更改密码,第一次输入新密码状态 /4:更改密码,第二次输入新密码状态 5:进入语音系统时输入密码状态 6:进入语音系统重新训练/ 输入密码验证/*/Protect_Clock();InitIO();/键盘Ke
19、yDownTimes = 0; Key_Flag = NoKey; ClearWatchDog();BSR_DeleteSDGroup(0);/ 初始化存储器RAMLCD_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;i4;i+)F_FlashWrite1Word(0xfe00+i,i);F_FlashWrite1Word(Pwd_Ini
20、t,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-; else NoKey_Times=10; NoKey
21、_Times=10;LCD_LIGHT_OPEN();/打开背光功能 Key_Flag = NoKey; switch(Key_Value)/判断键值/09表示输入的是密码,将等待下一个键的输入case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9:if(Key_Num = 0)LCD_CLEAR();LCD_SHOW(Password:);SET_Address2();if(Key_Num 4) Key_Num +; LCD_ADD(*); DELAY();break;case 10:/6:
22、进入语音系统重新训练输入密码验证LCD_CLEAR();LCD_SHOW(Train the voice!);SET_Address2();LCD_SHOW(Check you ID:);PlayRespond(6);/语音提示*请输入密码-(6)!Protect_Clock();State=6;Key_Num =0;break;case 11:/确认键/输入新密码时的两个状态处理方式有所不同if(State =3)if(Key_Num = 4)LCD_CLEAR();LCD_SHOW(Please Again!);SET_Address2();LCD_SHOW(Input new PWD:)
23、;PlayRespond(8);/语音提示*“请再次输入新密码-(7)“!Protect_Clock();for(i = 0;i4;i+)/*把这个密码存到临时变量Password_Temp中*/Password_Tempi=Passwordi;Pass=0;Key_Num =0;State = 4;break;elseLCD_CLEAR();LCD_SHOW(4 bit PSW!);SET_Address2();LCD_SHOW(Please Again!);PlayRespond(7);/语音提示*“密码错误-(3)”!Protect_Clock();LCD_CLEAR();LCD_SHO
24、W(Welcome!);SET_Address2();LCD_SHOW(A?B?C?D?E?F?.);Key_Num =0;State = 1;break;else if(State = 4)Pass=0;Pass = F_Affirm_New_Password();/第二遍输入密码时的验证elsePass=0;Pass = F_Affirm_Password(); /验证密码if(Pass = 1)/密码正确/判断目前状态,确定这个正确的密码是用来干吗的Pass = 0;Error_No=0;LCD_LIGHT_OFF();switch(State)case 1:DOOR_OPEN();/*
25、开门*/LIGHT_OPEN();LCD_CLEAR();LCD_SHOW(DOOR OPENED);PlayRespond(12);/语音提示*“主人您好,门已经开了(!Protect_Clock();SET_Address2();LCD_SHOW(Best Wishes!);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;case 2:LCD_CLEAR();LCD_SHOW(Password righ
26、t!);SET_Address2();LCD_SHOW(New password:);PlayRespond(8);/语音提示*请输入新密码!Protect_Clock();State = 3;break;case 4:Save_New_Pwd_To_Flash();/ 保存新密码LCD_CLEAR();LCD_SHOW(Successfully!);SET_Address2();LCD_SHOW(Remenber The New);PlayRespond(9);/语音提示*密码修改成功,要记住哦!Protect_Clock();LCD_CLEAR();LCD_SHOW(Welcome!);S
27、ET_Address2();LCD_SHOW(A?B?C?D?E?F?.);State = 1;break;case 5:if(Trained)Voice_State=1;elsewhile(TrainWord(NAME_ID,0) != 0) ; BSR_InitRecognizer(BSR_MIC); /辨识器初始化Protect_Clock();/*保护时钟*BSR_EnableCPUIndicator(); /启动实时监控PlayRespond(RSP_STAR); /*播放开始辨识的提示音Protect_Clock();/*保护时钟*Trained = 1;Voice_State=1
28、;LCD_CLEAR();LCD_SHOW(Voice on);SET_Address2();LCD_SHOW(Remember it!);PlayRespond(13);/语音提示*语音功能已经开启!Protect_Clock();LCD_CLEAR();LCD_SHOW(Welcome!);SET_Address2();LCD_SHOW(A?B?C?D?E?F?.);State=1;break;case 6:/重新输入开始语音训练Trained=0;if(Trained)Voice_State=1;elseBSR_DeleteSDGroup(0);/ 初始化存储器RAMwhile(Trai
29、nWord(NAME_ID,0) != 0) ; BSR_InitRecognizer(BSR_MIC); /辨识器初始化BSR_EnableCPUIndicator(); /启动实时监控PlayRespond(RSP_STAR); /播放开始辨识的提示音Protect_Clock();Trained = 1;Voice_State=1;LCD_CLEAR();LCD_SHOW(Voice Trained!);SET_Address2();LCD_SHOW(Remember it!);PlayRespond(9);/语音提示*语音密码修改成功!Protect_Clock();InitIO();
30、/键盘KeyDownTimes = 0; Key_Flag = NoKey; /BSR_DeleteSDGroup(0);/ 初始化存储器RAMLCD_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)elseError_No+;if(Error_No3) LCD_CLEAR(); LCD_
31、SHOW(error pwd); SET_Address2(); LCD_SHOW(Remember it!);PlayRespond(7);/语音提示*密码错误!Protect_Clock(); LCD_CLEAR(); LCD_SHOW(Welcome!); SET_Address2(); LCD_SHOW(A?B?C?D?E?F?.);else LCD_CLEAR(); LCD_SHOW(error pwd); SET_Address2(); LCD_SHOW(Remember it!); ALARM(); PlayRespond(10);/语音提示*我要报警了! Protect_Clo
32、ck(); LCD_CLEAR(); LCD_SHOW(Welcome!); SET_Address2(); LCD_SHOW(A?B?C?D?E?F?.);Clear_Password();Key_Num=0;State = 1;break;case 12:/取消键LCD_CLEAR();LCD_SHOW(Cancel);SET_Address2();LCD_SHOW(Do it again!);Clear_Password();LCD_CLEAR(); LCD_SHOW(Welcome!);SET_Address2();LCD_SHOW(A?B?C?D?E?F?.);Key_Num=0;S
33、tate = 1;break;case 13:/更改键LCD_CLEAR();LCD_SHOW(Modify passwd!);SET_Address2();LCD_SHOW(Check you ID:);PlayRespond(6);/语音提示*请输入密码!Protect_Clock();State = 2;break;case 14:/进入语音LCD_CLEAR();LCD_SHOW(Open voice!);SET_Address2();LCD_SHOW(Check you ID:);PlayRespond(6);/语音提示*请输入密码!Protect_Clock();State = 5;break;case 15:/关闭语音LCD_CLEAR();LCD_SHOW(VOICE OFF);SET_Address2();LCD_SHOW(Remember it!);Voice_State=0;PlayRespond(11);/语音提示*语音功能关闭!