(完整版)基于单片机的语音控制开关设计毕业设计 下载本文

(1)传递信号。它用触电的转换接通或断开电路以传递控制信号;

(2)功率放大。使继电器动作的功率通常是非常小的,而被其触点所控制电路的功率要大得多,因此继电器电路必须有放大功率的作用,从而可以实现对电路的控制。

继电器分为交流和直流两种:吸引线圈采用直流控制的直流继电器;吸引线圈采用交流控制的叫交流继电器,本次毕业设计采用的是交流继电器。它实际上是一种可以用低电压、小电流来控制大电流、高电压的自动开关。本课题选用的继电器是SRS-05VDC-SL型号的继电器模块,SRS-05VDC-SL型号的继电器模块常开口可接最大负载为交流250V/3A,直流30V/3A,控制电压为 5V,具有电源和继电器动作指示,吸合亮,断开灭,信号输入端有信号时,公共端与常开端会导通 。H为高电平触发选择端,即短接H处,H_IN为高电平触发输入端,L为高电平触发选择端,即短接L处,L_IN为高电平触发输入端,高电平触发指的是信号输入端与地之间有电压的触发方式,可以理解为信号输入端与VCC正极短路触发的一种方式,低电平触发指的是信号输入端与地之间的电压为0V的触发方式,可以理解为信号输入端与GND负极短路触发的一种方式.电路如图 3.6所示

图3.6 继电器电路

单片机P2.3口与继电器电路相连,继电器电路由1K电阻,PNP型三极管,二极管和继电器

组成,三极管在电路中的作用是放大,而放大的极限就是开关,而此处就用到了三极管的开关作用,通过放大单片机P2.3端口的信号,来控制继电器吸合或张开。二极管起到保护作用,此电路中继电器控制220V电压,外接一个电灯来显示继电器状态。 3.6电路连接总图

4软件设计

4.1LD3320的软件编程 4.1.1编程模式

主控MCU通过读/写LD3320的寄存器完成操作。用户有两种编程模式:\中断模式\和\轮询模式\。所谓中断模式,就是系统的主控MCU在接收到外界一个触发后(比如用户按动某个按键),启动LD3320芯片的一个定时识别过程(比如5s),要求用户在这个定时过程中说出要识别的语音关键词语。过了这个过程后,需要用户再次触发才能再次启动一个识别过程。所谓轮询模式,就是系统的主控MCU反复启动识别过程。如果没有人说话没有识别结果,则每次识别过程的定时到时后再启动一个识别过程;如果有识别结果,则根据识别作相应处理后(比如播放某个声音作为回答)再启动一个识别过程。在编程时,由于是本次论文是声控语音识别开关,讲究的实用方便。所以,选择\轮询模式\而不是传统的\中断模式\。

4.1.2LD3320程序流程

如图4.1所示LD3320的功能是完成有限词组的非特定人语音的识别的中断处理,我们将其应用在一个虚拟环境下训练,训练中,通常需要下达几个短口令,但是在我们所设计的训练环境中,如果口令使用键盘或鼠标的方法进行输入,明显是不符合毕业设计的要求。因此,我们就用LD3320设计VUI来控制电路,实现语音识别的方式,将获得的识别结果再转换成串口信号,输入计算机,达到语音控制的目的。实践证明,这种方式可以满足语音控制的要求,但是语音识别的速度,即实时性还有待改进。 语音识别的操作流程

(1)语音识别初始化(包括通用初始化),在初始化程序里,主要完成软复位、模式设定、时钟频率设定和FIFO设定。芯片复位是芯片的第47脚(RSTB)发送低电平,然后需对片选CS做一次地至高的操作,以激活内部数据处理模块。

(2)写入识别列表,LD3320语音芯片是基于语音词库的语音识别芯片,在这一步中可以将待识别的短语写入列表中。列表的规定是,每个识别条目对应一个特定的编号(一个字符),不同识别条目的编号可以一样,但是可以不用连续,不过数值一定不大于于256(00H-FFH)。

(3)开始识别,设置若干个相关的寄存器,就可以开始识别,ADC通道即为麦克风输入通道,ADC增益即为麦克风音量,可以设定为00H-7FH,可以设定的范围设置值为40H-6FH,值如果越大代表MIC音量越大,识别启动可以很灵敏,不过可能带来比较多多的错误识别。如果值越小代表MIC音量越小,不过需要近距离说话才能启动语音识别,它的好处就是对于远处的干扰噪声不会做出处理。 (4)响应中断,如果麦克风采集到的声音信号,不管是否识别出正确结果,都会做出一个中断响应,而中断响应要根据寄存器的值进行分析,读取BA寄存器的值可以知道有几个候选答案值,而C5寄存器里的答案是得分最高,最可能输出的结果。

向寄存器写入ADC增益清空寄存器N空闲?Y设置寄存器设置芯片状态设置寄存器准备开始识别设置寄存器IC开启ADC设置寄存器开中断

图4.1 语音芯片中断流程图 4.2寄存器的操作

本芯片的各种操作,都必须通过寄存器的操作来完成。比如设置标志位、读取状态、向FIFO写入数据等。寄存器读写操作有4种方式,即并行方式(软、硬)和串行SPI方式(软、硬)。 4.2.1并行方式

第46脚(MD)接低电平时按照此方式工作。 写和读的时序图如下:

图4.2 并行方式写时序

图4.3 并行方式读时序

由时序图可以看到,A0用来识别芯片是数据段还是地址段。A0为高时是地址,如果A0为低时是数据。发送地址的时候CSB*和WRB*必须有效,同样的,写数据是CSB*和WRB*也必须有效,而且读数据时CSB*和RDB*也必须有效。 4.2.2串行SPI方式

第46脚(MD)接高电平,且第42腿(SPIS*)接地时按照此方式工作。写和读的时序图如下

图4.4 SPI方式写时序

在写的时候首先给SDI发送一个“写”指令(04H),再给SDI发送8位寄存器地址,然后给SDI发送8位数据。在这个时候,SCS*必须保持在有效(低电平)。

在写的时候要首先SDI发送一个“读”指令(05H),再给SDI发送8位寄存器地址,然后从SDO接受8位数据。在这期间,SCS*必须保持在有效(低电平)。