基于单片机的智能语音密码门锁.doc_第1页
基于单片机的智能语音密码门锁.doc_第2页
基于单片机的智能语音密码门锁.doc_第3页
基于单片机的智能语音密码门锁.doc_第4页
基于单片机的智能语音密码门锁.doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

目 录摘 要IIAbstractIII第1章 引言11.1密码锁的发展11.2系统的制作意义11.3本文涉及的内容2第2章系统方案设计32.1方案一32.2系统的最终方案42.3所用主要器件介绍52.4 超声波探头MA40S20R/S7第3章系统硬件部分原理介绍93.1电源部分93.2单片机最小系统103.3键盘部分103.4超声波探测发射部分113.5超声波接收放大部分123.6语音接收处理部分133.7语音输出部分133.8显示电路14第4章系统软件部分设计实现154.1、软件设计操作平台简介154.2PC端调试工具154.3程序功能实现简介17第5章系统调试205.1系统调试205.2放大电路的仿真20总结22参考文献23附 录24附录124附录224摘 要本文介绍了一种以凌阳十六位单片机作为核心的语音密码锁系统。本文利用凌阳单片机其强大的语音识别功能,实现了语音控制门禁系统,以及密码限制功能;利用单片机的语音回放功能,完成了语音提示的要求,利用其内置的Flash闪存,实现了密码的断电保护。系统使用12864液晶显示器进行使用操作提示。本系统能完成开锁、超次报警锁定、修改用户密码基本的密码锁的功能;除上述基本的密码锁功能外,还具有语音(密码)识别、语音提示功能,而且,普通密码和语音密码信息都不受掉电情况的影响。还利用了超声波传感器等,实现自动判断有无人出入,将整个系统的自动化提高。此套智能语音密码门锁力求完成一个良好的人机界面。关键词 密码门锁、语音识别、凌阳十六位单片47AbstractThis article introduced to the bullying of the sixteen a monolithic integrated circuits as a core of the system. this combination lock lingyang monolithic integrated circuits of the powerful voice recognition, not only the voice plays, done for and has achieved a voice to control access control system, and password functionality ; restrictions on its own built-in flash flash to the protection of electricity. sixteen - 2 lcd display options for the operation is clear. System to complete the lock, the time the user password attempts, to amend the basic function of l eaf ; in addition to the basic function, l eaf a voice ( password ) identify, for the common feature, and password, and password information are not for the situation. the use of ultrasonic sensors the sensor and so on, carry out energy and purpose of the entire system. this set of personalized improve the code aims to complete the lock for a good interface. the man-machineKey word The password door lock the speech recognition insults the positive 16 monolithic integrated circuits第1章 引言1.1密码锁的发展密码锁的发展大概分为以下几个发展阶段1. 机械密码锁这是一种没有电子器件的大密钥量高可靠的全机械密码锁。它的操作方式独特,类似老电话机的拨号从拨盘的起点开始,顺时针转动拨盘到某一位数码,然后退回到起点,就输入了一位密码。如此重复直到输入了最后一位密码,再从起点逆时针转动拨盘就可以开锁。这类密码锁操作繁琐,锁型较大。此类密码锁在现代应用不多。2. 电子密码锁电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。它的种类很多,有简易的电路产品,也有基于芯片的性价比较高的产品。现在应用较广的电子密码锁是以芯片为核心,通过编程来实现的。其性能和安全性已大大超过了机械锁。在电子飞速发展的今天,电子密码锁的发展朝着更为自动化人性化的方向发展。尤其是凌阳语音类单片机的出现,使密码锁的开发和发展到了一个自动化人性化的新高峰。所以运用凌阳单片机的自带语音识别功能开发语音密码锁成为了必然。3. 语音识别发展70年代,语音识别领域取得了突破。在理论上,LP技术得到进一步发展,动态时间归正技术(DTW)基本成熟,特别是提出了矢量量化(VQ)和隐马尔可夫模型(HMM)理论。在实践上,实现了基于线性预测倒谱和DTW技术的特定人孤立语音识别系统。80年代,语音识别研究进一步走向深入,其显着特征是HMM模型和人工神经元网络(ANN)在语音识别中的成功应用。HMM模型的广泛应用应归功于 AT T Bell实验室Rabiner等科学家的努力,他们把原本艰涩的HMM纯数学模型工程化,从而为更多研究者了解和认识。ANN和HMM模型建立的语音识别 系统,性能相当。进入90年代,随着多媒体时代的来临,迫切要求语音识别系统从实验室走向实用。许多发达国家如美国、日本、韩国以及IBM、Apple、ATT、NTT等着名公司都为语音识别系统的实用化开发研究投以巨资。运用凌阳单片机的语音识别功能开发语音密码锁,此类密码锁不仅有机械密码锁的所有功能,而且使密码锁的自动化,和密码准确度大大提高。1.2系统的制作意义现在人们生活水平提高了,安全防范,是人们考虑的首要问题。而锁是解决安全问题的重要产品。目前市场上的电子锁产品功能不全,性能和安全性不高,且造价高。低质量的电子锁,给用户的财产安全造成很大威胁,同时,由于功能的不健全,给用户的使用带来了一定麻烦。故我们试图研制一种智能化、多功能、更人性化的门禁系统。我们研制的带语音识别功能电子控制密码锁目的是不仅能给用户带来了安全的保障,方便的享受,还体现了人性化的一面,此种类型的电子密码锁将成为未来社会的供求亮点1.3本文涉及的内容功能介绍:1. 通过超声波传感器自动检测有无人的出入,当检测到人进入时,显示器背光自动打开,并有“欢迎主人回家”的语音提示。2. 当键盘设置为使用键盘密码功能,并伴随语音提示,“请输入密码”提示音。密码错误3次就发出警报。密码正确开门。3. 当通过键盘设置为语音密码功能时,语音提示指标:超声波检测范围为2米 语音匹配率70% 系统反应时间为200ms 第2章系统方案设计2.1方案一在初期设计电路时,我计划采取51单片机作为我们的控制核心,然而,语音识别功能、语音提示功能、密码断电保护功能需要我们外扩集成芯片才能满足系统要求。其功能实现原理方框图如图1: 图1 方案一原理框图使用51MCU系统的不足之处在于:1、 设置密码,断电不保护;显然,这个“最小系统”的制作无法满足我们预期的功能实现,如果采用外扩集成芯片的做法,在技术方面上,系统的自身稳定性、可靠性都不高。在经济方面,系统的开发周期较长,开发成本较高。鉴于此,我们采用凌阳单片机作为我们的控制电路核心,凌阳十六位单片机不仅内置32kFlash(闪存),而且集成了语音识别模块,从根本上,凌阳单片机满足了系统的基本要求,具体功能实现以及电路设计在以下详细介绍。2.2系统的最终方案此系统现阶段包括以下几个模块如图2 :液晶显示提示功能的实现键盘输入电路凌阳十六位单片机控制系统语音输出语音输入电路超声波探测电路、键盘。执行、报警机构15V、5V电源部分图2 系统流程图 当超声波传感器检测到有人的出现的时候液晶显示背光,由键盘部分的初始设置可以使用语音和键盘密码功能。当设置为语音功能进入时,就由语音输出模块和显示模块提示用户,输入语音密码信号。根据不同情况执行报警机构活语音提示部分。当设置为密码功能进入时,执行语音输出模块,提示主人输入密码,密码输入到单片机根据具体情况执行报警或者语音输出部分电路。 系统复位后,进入键盘操作进行设置。 1)、键盘输入密码此系统采用4*4按键输入模式,密码初始设置为4位,(从软件上很容易实现更多位数的密码操作,为操作演示计,我们采用4位)。2)、语音控制输入进入语音控制功能后,先进行语音控制训练操作(训练过后此操作可跳过),训练成功后,方可进行语音控制,并且时时可以关闭语音功能。此外,语音口令还可以时时修改,再次进行语音控制训练操作即可。3)、密码修改操作此系统的密码设置存在Flash中,断电不丢失,密码修改后,系统原密码作废,新的密码生效,并存入Flash中。4)、语音提示操作对应于每一种操作,系统均给予一定的语音提示。如:“请输入密码”、“密码错误”等。5)、液晶显示功能对应于每一种操作,系统均给予一定的显示提示,方便操作。6)、液晶背光功能实现为了实现液晶背光功能,我们设计了一下两种电路:超声波探测电路、按键电路,有按键或探测到有人接近时背光显示。7)、系统执行机构系统执行机构我单片机I/O口输出控制的继电器等机械开关开门。2.3所用主要器件介绍2.3.1 SPCE061A介绍SPCE061A 是继nSP系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。较高的处理速度使nSP能够非常容易地、快速地处理复杂的数字信号。因此,与SPCE500A相比,以nSP为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。1.性能 16位nSP微处理器; 工作电压(CPU) VDD为2.43.6V (I/O) VDDH为2.45.5V CPU时钟:0.32MHz49.152MHz ; 内置2K字SRAM; 内置32K FLASH; 可编程音频处理; 晶体振荡器; 系统处于备用状态下(时钟处于停止状态),耗电仅为2A3.6V; 2个16位可编程定时器/计数器(可自动预置初始计数值); 2个10位DAC(数-模转换)输出通道; 32位通用可编程输入/输出端口; 14个中断源可来自定时器A / B,时基,2个外部时钟源输入,键唤醒; 具备触键唤醒的功能; 使用凌阳音频编码SACM_S240方式(2.4K位/秒),能容纳210秒的语音数据; 锁相环PLL振荡器提供系统时钟信号; 32768Hz实时时钟; 7通道10位电压模-数转换器(ADC)和单通道声音模-数转换器; 声音模-数转换器输入通道内置麦克风放大器和自动增益控制(AGC)功能; 具备串行设备接口; 具有低电压复位(LVR)功能和低电压监测(LVD)功能; 内置在线仿真电路ICE(In- Circuit Emulator)接口; 具有保密能力; 具有WatchDog功能。2. 结构概览SPCE061A的结构如图3所示:图3 SPCE061A的结构图3. SPCE061A最小系统最小系统接线如图4所示,在OSC0、OSC1端接上晶振及谐振电容,在锁相环压控振荡器的阻容输入VCP端接上相应的电容电阻后即可工作。其它不用的电源端和地端接上0.1F的去藕电容提高抗干扰能力。图4 单片机最小系统2.4 超声波探头MA40S20R/SMA40S20R/S为压电性超声波发生器和接收器。总体上讲,超声波传感器可以分为两类:一类是利用电气方式产生超声波,另一类是利用机械方式产生超声波。其中,电气方式又包括压电型、磁致伸缩型和压电型。其中压电型是使用最广泛的。图5 传感器结构图 压电超声波转换器的功能:利用压电晶体谐振工作。内部结构上图所示,它有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动产生超声波,这时它就是一超声波发生器;如没加电压,当共振板接受到超声波时,将压迫压电振荡器作振动,将机械能转换为电信号,这时它就成为超声波接受转换器。超声波发射转换器与接受转换器其结构稍有不同。本设计是用的是MA40S20R/S超声波传感器,其中MA40S20S为超声波发送器,MA40S20R为与之配套的超声波接收器。其特性如下表1:表1 MA40S20R/S性能表种类特性MA40S20RMA40S20S标称频率40kHz灵敏度-74dB以上100dB以上带宽6kHz以上(-80dB)7kHz以上(90dB)电容1600pf绝缘电阻100M以上温度特性-20+60C范围内灵敏度变化在-10dB以内第3章系统硬件部分原理介绍此系统硬件部分电路核心部分为凌阳单片机及其外围电路(包括语音识别、输出电路),外围电路有:键盘输入、液晶显示、执行机构电路,此外,为了实现液晶显示器的背光功能,我们采用了超声波探测电路、光敏传感电路、输出延时电路等。为了详细介绍我们的电路功能模块,我们将在下面分块介绍本系统的各个功能模块:1、 电源部分2、 凌阳十六位单片机控制电路 3、 键盘输入部分4、 语音输入及输出部分5、 信号放大电路6、 显示功能控制模块3.1电源部分由于本系用的是凌阳61A单片机 以及555定时计数器 及相关器件只需要正5伏电压的电源,我采用了一下电源设计如图6。图6 电源电路3.2单片机最小系统凌阳单片机最小系统主要包括一下几个部分:晶振电路、复位电路、抗干扰电路等。1.单片机时钟频率为50MHz。2.外部晶振频率为32MHz,指令周期为0.64ms。3.如图7IO口分配分别为 IOAO-IOA7接键盘,IOA8口接超声波发射电路。IOB2接外部中断的超声波接收电路。IOB3-IOB7接显示器的数据端口DB0-DB7,IOB11-IOB13分别接入显示器的控制引脚RST、R/W、E。IOB14和IOB15分别接入RET和LED-A端。图7 凌阳单片机最小系统3.3键盘部分图8 键盘电路如图8所示的4*4行列式键盘,其中的列与IOA0-IOA3口相连,行与IOA4-IOA7口相连。键盘采用扫描方式与单片机连接各个按键功能的定义如下:1、 09数字健指定为密码设置健(仅且只有他们能够作为密码值)2、 A确认健(按下此键,即比较输入密码值正确如否)3、 B取消键(按下此键,即取消上一次操作)4、 C开启语音功能键(按下此键,再次输入密码,就可以开启语音控制功能)5、 D关闭语音功能键(按下次键,就可以关闭语音控制功能)6、 E修改密码键(按下次键,再次输入密码,通过验证后,连续输入两次新的密码就可以设置新的密码)7、 F更改语音控制口令(按下次键,再次输入密码,通过验证后,即可进入语音口令修改程序操作)3.4超声波探测发射部分图9 超声波发生电路如图9中所示4脚接入单片机当单片机管脚为高电平时555开始工作。555工作后从Q端发出预定频率的脉冲波形。图中的R3是为了调节与MA40S20S的想匹配的频率40k Hz。使MA40S20S能正常工作。此时超声波传感器发出40KHz的超声波,当单片机IOA8口味低电平时555和MA40S20S都停止工作。在此种链接电路方式中Q端输出频率的计算公式为:f= 1.433/(R1+2R2)* C1当调节R2的电阻到约为1.6千欧时,555的Q端输出频率为40KHz的信号,使MA40S20S正常工作。3.5超声波接收放大部分图10 超声波接收放大电路由超声波传感器的性能知道,超声波接收端的信号较小,为接入单片机处理。需要通过放大,这里我们计划放大25倍。为了满足要求使用了OP27运放。这里的超声波接受信号为正弦信号峰峰在0.6mv左右。经放大后的信号也为正弦信号。超声波接收端将超声波调制脉冲变为交变电压信号,经运算放大器AR1和AR2两极放大后加至LM567。LM567是带有锁定环的音频译码集成块,内部的压控振荡器的中心频率f0=1/1.1R8C3,电容C4决定其锁定带宽。调节R14使频率为40KHz,当 LM567输入信号大于25mV,输出端8脚由高电平跃变为低电平,作为中断请求信号,送至单片机的IOB2口处理。当没有接收到信号时LM567输出端输出持续的高电平,单片机不响应中断请求。3.6显示电路图11 显示连接电路如图12所示的显示连接电路,IOB3-IOB7接显示器的数据端口DB0-DB7,IOB11-IOB13分别接入显示器的控制引脚RST、R/W、E。IOB14和IOB15分别接入RET和LED-A端。8位并口写操作时序图如图14所示RS为寄存器选择端,当RS为高时向显示器寄存器中写入数据。当RS为低电平时向显示器寄存器中写入指令。此时读写端R/W端为低电平并且使能端E为高电平时才能将显示数据发送到数据端口。图12 8位并口写操作时序图8位并口读操作时序图如图15所示的8位并口读操作时序图,图中的RS为寄存器选择端,当RS为高时向显示器寄存器中写入数据。当RS为低电平时向显示器寄存器中写入指令。此时读写段R/W端为高电平并且使能端E为高电平时才能将显示器寄存器中的数据通过数据口读取到单片机内。图13 8位并口读操作时序图第4章系统软件部分设计实现4.1、软件设计操作平台简介:(nSP IDE)nSP IDE工作界面如下:图14 软件工作界面4.2PC端调试工具 DMC(Digital Motor Control)DMC是SPMC75系列单片机的一个辅助开发工具,包括运行在PC端的可视化平台和运行在SPMC75芯片上的DMC函数库。DMC工具主要用于电机驱动产品开发时的系统控制和监视。工具中的所有返回参数都有绘图显示功能,用户可以直观的看到返回参数随时间的变化曲线,也可以将返回数据导出到Excel中做进一步的分析和处理。它主要也有两大方面的功能:系统控制:由PC端控制电机启动、停止,设置电机控制参数(如转速、加速斜率、设置PID 参数等) ,另外还为用户提供8个自定义参数,以方便用户的功能扩展。 系统监视:电机运行状态参数(如转速、干线电压等)直接显示在PC端的控制窗口中,也能以图形的形式显示在监视窗口中。图15 DMC 软件图4.3程序功能实现简介开始系统初始化语音关闭YN打开A/D键盘扫描A键按下密码报警开门语音识别返回图16 程序功能实现框图对操作子程序的解释:键盘扫描子程序:unsigned int get_key(void) /4*4扫描键盘函数int i,j,key_lest,key_hang,key_lie,h; int key_value=0; /定义键值int b14=1,2,3,4; /函数返回值列表int b24=5,6,7,8;int b34=9,10,11,12;int b44=13,14,15,16;*P_IOA_Dir=0 x0f; /低4位为输出口 高4位为输入口*P_IOA_Attrib=0 x0f; /将输入口设置为下拉输入*P_IOA_Data=0 x00;while(key_value=0) /不停的扫描键盘 直到有键按下key_hang=0 x01; /给行依次送1for(i=0;i4;i+) *P_Watchdog_Clear=0 x0001;*P_IOA_Data=key_hang; key_lest=0 x10; /开始进行列的扫描 for(j=0;j4;j+) key_lie=*P_IOA_Data; key_lie=key_lie&0 xf0; if(key_lie=key_lest) /判断是否有键按下 for(h=0;h0 x0dff;h+) /去抖动处理 *P_Watchdog_Clear=0 x0001; key_lie=*P_IOA_Data; key_lie=key_lie&0 xf0; if(key_lie=key_lest) i+; switch(i) /判断是哪个键按下的 case 1: key_value=b1j; break; key_lest=1; /扫描下一列 key_hang 0)较作出判断如果匹配得出函数值为大于0的值时标明正确 /识别出命令switch(res)case NAME_ID: /触发命令响应. LCD_SHOW(DOOR OPENED);PlayRespond(12); /语音提示*“主人您好,门已经开了! 此程序主要是应用单片机自带的语音码对比函数实现语音识别功能,语音通过MIC送入SRAM存储,然后通过与ROM中原始的语音对比。语音输出:void PlayRespond(int Result) /函数名BSR_StopRecognizer(); /凌阳单片机停止识别SACM_S480_Initial(1); / 初始化SACM_S480,S480是凌阳的音频格式SACM_S480_Play(Result, 3, 3); /语音播放while(SACM_S480_Status()&0 x0001) != 0) /获取模块状态SACM_S480_ServiceLoop(); /获取语音数据并将其列入解码队列ClearWatchDog();SACM_S480_Stop(); /语音停止播放此模块程序的功能主要是应用凌阳单片机自带的音频格式函数,对其函数库中语音码的调用,达到在适当的时候播放恰当的语音提示用户。显示子程序:*Program: example for LCDDISPLAY*/*CHAR Zimo_Shuju32*4=0 x00,0 x04,0 x21,0 x0FE,0 xC6,0 x01,0 x00,0 x08,0 xF4,0 x09,0 x54,0 x09,0 x5F,0 xFF,0 x54,0 x09,0 xF4,0 x49,0 x00,0 x20,0 xFE,0 x01F,0 x22,0 x41,0 x22,0 x81,0 xFE,0 x7F,0 x00,0 x00,0 x00,0 x00, 0 x00,0 x04,0 x00,0 x04,0 x48,0 x04,0 x48,0 x04,0 x48,0 x04,0 x48,0 x04,0 x48,0 x04,0 xFF,0 xFF,0 x48,0 x04,0 x48,0 x04,0 x48,0 x04,0 x68,0 x04,0 x4C,0 x04,0 x08,0 x06,0 x00,0 x04,0 x00,0 x00, 0 x10,0 x04,0 x61,0 x04,0 x06,0 xFF,0 x00,0 x00,0 x04,0 x01,0 x84,0 x00,0 xE4,0 xFF,0 x1C,0 x41,0 x84,0 x21,0 x65,0 x12,0 xBE,0 x0C,0 x24,0 x1B,0 xA4,0 x61,0 x64,0 x40,0 x04,0 x40,0 x00,0 x00, 0 x00,0 x00,0 x00,0 x7F,0 x00,0 x25,0 x00,0 x25,0 x7E,0 x25,0 x2A,0 x25,0 x2A,0 x7F,0 x2A,0 x00,0 x2A,0 x00,0 x2A,0 x7F,0 x2A,0 x25,0 x7E,0 x25,0 x00,0 x25,0 x00,0 x25,0 x00,0 x7F,0 x00,0 x00; /潮丰液晶;*/CHAR Zimo_Shuju32*4 = 0 x00,0 x00,0 x40,0 x10,0 x20,0 x10,0 x10,0 x10,0 x0C,0 x10,0 x03,0 x10,0 x10,0 xFF,0 x08,0 x10,0 x3F,0 xF0,0 x42,0 x12,0 x41,0 x1C,0 x40,0 xD0,0 x40,0 x10,0 x40,0 x10,0 x70,0 x10,0 x00,0 x00, 0 x04,0 x10,0 x04,0 x60,0 x7E,0 x01,0 x01,0 xC6,0 x20,0 x30,0 x20,0 x00,0 x20,0 x04,0 x20,0 x04,0 x20,0 x04,0 x3F,0 xFC,0 x20,0 x04,0 x20,0 x04,0 x20,0 x04,0 x20,0 x04,0 x20,0 x00,0 x00,0 x00, 0 x04,0 x10,0 x02,0 x12,0 x01,0 x92,0 x00,0 x72,0 xFF,0 xFE,0 x00,0 x51,0 x04,0 x91,0 x04,0 x00,0 x04,0 x22,0 x02,0 xCC,0 x02,0 x00,0 x02,0 x00,0 xFF,0 xFF,0 x01,0 x00,0 x01,0 x00,0 x00,0 x00, 0 x01,0 x08,0 x41,0 x08,0 x80,0 x88,0 x7F,0 xFF,0 x00,0 x48,0 x40,0 x28,0 x40,0 x00,0 x20,0 xC8,0 x13,0 x48,0 x0C,0 x48,0 x0C,0 x7F,0 x12,0 x48,0 x21,0 xC8,0 x60,0 x48,0 x20,0 x08,0 x00,0 x00; /龙江科技;unsigned int *P_IOB_Dir = 0 x7002;unsigned int *P_IOB_Attrib = 0 x7003;unsigned int *P_IOB_Data = 0 x7000;unsigned int*P_Watchdog_Clear = 0 x7012; CHAR Close_Or_Open_Flag1 = 0 x00; CHAR Close_Or_Open_Flag2 = 0 x00; CHAR Ye_Jing_State;delay(LONG int n) while(n!=0) n-; Write_Command_to_Screen(CHAR Left_Or_Right_Screen,CHAR Command) if(Left_Or_Right_Screen = 0 x00) Command = Command | 0 x0c00; *P_IOB_Data = Command; /选中左屏; Command = Command & 0 x00ff;/下降沿降数据写入液晶并恢复初始状态; /delay(10); *P_IOB_Data = Command ; if(Left_Or_Right_Screen = 0 x01) Command = Command | 0 x1400; *P_IOB_Data = Command; /选中右屏; Command = Command & 0 x00ff;/下降沿降数据写入液晶并恢复初始状态; /delay(10); *P_IOB_Data = Command; Write_Data(CHAR Write_Data_to_L_Or_R_Flag,CHAR Write_Data_to_LCD)if(Write_Data_to_L_Or_R_Flag = 0 x00) Write_Data_to_LCD = Write_Data_to_LCD | 0 x0d00; *P_IOB_Data = Write_Data_to_LCD; /选中左屏并输出数据; Write_Data_to_LCD = Write_Data_to_LCD & 0 x00ff; delay(10); *P_IOB_Data = Write_Data_to_LCD ;/下降沿降数据写入液晶并恢复初始状态; if(Write_Data_to_L_Or_R_Flag = 0 x01) Write_Data_to_LCD = Write_Data_to_LCD | 0 x1500; *P_IOB_Data = Write_Data_to_LCD; /选中左屏并输出数据; delay(10); Write_Data_to_LCD = Write_Data_to_LCD & 0 x00ff; *P_IOB_Data = Write_Data_to_LCD ;/下降沿降数据写入液晶并恢复初始状态; main(void) CHAR Write_Data_to_LCD = 0 x00;/写入LCD单元的数据; CHAR Write_Number;/写入数据的个数; CHAR Page_Addr = 0 x00;/页地址选择变量; CHAR Select_Screen_BianLiang = 0 x00;/左右屏选择变量; CHAR Start_Pos2 = 0 x00;/列的起始位置 CHAR Scroll_Screen = 0 x00;/行的起始位置,改变其值可实现滚屏功能; *P_IOB_Dir = 0 xffff; *P_IOB_Attrib = 0 xffff; Write_Command_to_Screen(0,0 x3f);/0代表将命令写入左屏; Write_Command_to_Screen(1,0 x3f);/1代表将命令写入右屏; while(1) *P_Watchdog_Clear = 0 x01;中断子程序:#define Set_PB2 (*P_IOB_Data)|=0 x0004) /将IOB2口置1void FIQ(void) _attribute_ (ISR); /中断函数的定义void FIQ(void) P_IOB_Dir-B.bit2 = 0; /将IOB2设置为输入,不影响其他位 P_IOB_Attrib-B.bit2 = 0; /将IOB2设置为非悬浮,不影响其他位 P_IOB_Buffer-B.bit2 = 0; /将IOB2设置为下拉,不影响其他位 if(*P_INT_Ctrl&0 x0800) *P_INT_Clear=0 x0800; else if(*P_INT_Ctrl&0 x8000) *P_INT_Clear=0 x8000; else if(*P_INT_Ctrl&0 x2000) *P_INT_Clear=0 x2000; 第5章系统调试5.1系统调试在总体上,我们对这个系统的设计还是比较满意的,但是,虽然我们对这个项目投入了大量的时间和精力,由于知识有限,我们在很多方面有很多的不足之处。以下我将从硬件和软件两个方面来阐述这个系统的各个部分:硬件部分:1我们认为,我们做得比较成功的地方就是通过超声波探测、光敏传感以及延时电路的组成实现了液晶显示器的背光功能 2此外,我们的液晶显示和键盘电路十分简洁。 3遗憾的是,超声波探测精度不高,准确性有待改进。软件部分:1 一提的是,在整个系统设计过程中,语音控制和语音输出提示一直是我们软件设计的重点,同时也是我们的亮点,体现了我们设计系统人性化的一面。2 键盘扫描和液晶驱动工程中,我们详尽地应用了科学的软件设计思想,使程序简洁,有效。3 此外,我们的主程序设计,结构鲜明,条理清晰。4 但是,美中不足的是,我们在开启语音功能时,系统时钟不断变化,所以造成键盘扫描的不成熟,此处有待改进。5.2放大电路的仿真由于传感器接受端,在接收到发出端的超声波时会产生一个正弦波的电压信号,次电信号大概在峰峰值10mv左右,频率为40KHz,但当超声波的传输距离较远时就低于这个值了。所以在接收信号时的放大电路我设计成放大25倍。如图17.其放大电路的仿真图为图18图17 放大电路图18 仿真结果由图18所示A通道为输入信号,B通道为放大后信号。仿真输出结果无失真,达到了理想的放大倍数。虽然产生相移但在此不影响我们对结果的使用,对接入LM567也没有影响,经计算和仿真都可得出次部分电路无误。总结通过对该系统的设计,我们不仅收获颇丰,而且体会也颇深。1 过这次设计,我们深深体会到,理论指导着实践,但实践才是最终的目标。我们在设计过程中,往往遇到这样的情况,设计的电路从理论上毫无差错,但实现起来却是困难重重。只有在不断的摸索中才能找到解决问题的方法。们深深体会到团体合作的重要性,在项目制作过程中十分重要,此次设计师由一个人完成工作量是在太大了。知识是很有局限的。2 在任何时候,科技离不开创新,在设计项目的同时,我们需要抛弃成见,标新立异,敢于实现。在这一点上,我认为我们做得比较成功。在设计系统初始,我们采用51系列单片机,而语音功能却只能外扩专用芯片,实现起来比较困难,最后我们大胆采用凌阳单片机一举解决语音控制问题。3 经过精心计算和部分仿真结果可得出,次系统是可行的。制作过程中,李老师在技术上给予极大的帮助和支持。在此,感谢李老师对我们电子制作的指导!参考文献1 王炳锡.实用语音识别基础J.国防工业出版社,2005,(1) 2 俞铁城. 语音识别的发展现状J. 通信世界. 2005,2:563 赵世强, 荆炳礼, 赵满. 凌阳16位单片机SPCE061A的最小系统及开发J. 国外电子元器件, 2003,5:37-394 王和顺, 邓成中, 黄惟公. 基于SPCE061A的语音识别系统的研究J. 计算机工程与设计, 2004,25(12): 2222-22246 Phil Woodland. Speech Recognition. Speech and Language Engineering-State of the Art (Ref. No. 1998/499). 7 上海市教育委员会,丁元杰.单片微机原理及应用M.机械工业出社,20028 何宏,龚威等.单片机原理与接口技术M.国防工业出版社,2006 9 彭为,黄科等.单片机典型系统设计实例精讲M.电子工业出版社,2006 10 谭浩强.C程序设计(第2版)M.清华大学出版社,1999 11 张齐,杜群贵.单片机应用系统设计技术基于c语言编程M.电子工业出版社,2004 12 王培东,李兰英,董怀国,崔永庆.单片机原理及应用M.哈尔滨工业大学出版社,1996 13 陈振初,蔡宣平. 计算机图形显示原理(软件)M.国防科技大学出版社,200014 王力虎,李红波. PC控制及接口程序设计实例M. 科学出版社,200215 朱晓强 ,姚志石.单片机原理及应用M.复旦大学出版社,1998凌阳十六位单片机应用教程MCS-51 单片机应用设计元器件手册附录1系统电路总图附录2智能语音密码锁程序#include bsrsd.h#define HaveKey 1#define NoKey 0#define NAME_ID 0 x100#define RSP_AGAIN1#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_Affirm_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=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();/键盘KeyDownTimes = 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(0 xfe00);for(i = 0;i4;i+)F_FlashWrite1Word(0 xfe00+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-; else NoKey_Times=10; NoKey_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:进入语音系统重新训练输入密码验证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:);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_SHOW(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();/*开门*/LIGHT_OPEN();LCD_CLEAR();LCD_SHOW(DOOR OPENED);PlayRespond(12);/语音提示*“主

温馨提示

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

评论

0/150

提交评论