PWM直接驱动是利用PWM 输出口本身能够输出一定的方波来实现蜂鸣器直接驱动。利用软件设置系统寄存器来控制PWM 口的输出的,可以设置方波占空比或者周期等,寄存器经设置产生符合蜂鸣器要求的频率的波形后,只要打开PWM 输出,即可输出该频率的方波,进而驱动蜂鸣器。而I/O 定时翻转产生驱动波形的方式必须利用定时器来做定时,通过定时翻转电平产生所要求的波形,以此来驱动蜂鸣器。
由于蜂鸣器的工作电流一般比较大,以致于单片机的I/O 口是无法直接驱动,需利用放大电路来驱动,一般使用三极管来放大电流。其驱动电路如图14所示。
图14 蜂鸣器驱动电路
4. 系统程序设计
本系统程序设计主要分为运动控制和环境信息采集与处理两部分,现对设计思想及程序设计流程作具体分析介绍。
4.1 运动控制单元程序设计
4.1.1 语音识别原理
语音识别系统可以根据对输入语音的限制分为特定人语音识别、非特定人语音识别和多人语音识别三种方式,其特点如下:
(1) 特定人语音识别:仅对专人的话音进行识别,对训练人的的语音命令识别率高,对其他人识别准确率低或者不识别。
(2) 非特定人语音识别:识别的语音与人无关,通常要用大量不同人的语音数据库对识别系统进行学习。
(3) 多人语音识别:能识别一组人的语音,或者成为特定组语音识别系统。
语音识别的过程主要由语音信号预处理、语音特征提取、模型匹配组成。其中,语音预处理包含信号预滤波、采样及量化、加窗处理、端点的检测及预加重等。其中最重要是特征信号提取[15]。该过程须满足如下要求:
(1) 提取的信号特征能很好地代表语音的特征,而且区分性良好;
(2) 各阶参数间独立性良好;
(3) 参数须计算方便,具有高效的算法,以保证语音实时识别。
训练时,对特征参数进行适当处理后,为词条建立模型,并保存为模板库。识别过程中,接收语音信号,经处理后得到语音特征参数,生成最终测试模板,并与参考模板匹配,把其中匹配分数最高的模板作为最终识别结果。
其过程如图15所示。
图15 语音识别过程框图
本系统采用特定人识别方式,主要分为“训练”和“识别”两个阶段。在训练阶段,主控制器分析处理采集到的语音样本,并提取语音特征的信息,建立特征模型,并存入到FLASH中;在识别阶段,主控制器对采集到的语音样本进行类似分析及处理,提取出其特征信息,之后与已有的特征模型对比,当二者达到了一定的匹配度,输入的语音即被识别[16,17]。语音识别的具体流程如图16所示:
图16 语音识别流程图
4.1.2 运动控制单元主程序设计
其程序流程如图17所示,主要分为:初始化、训练、识别和重训四大部分。
初始化部分:初始化操作设置IOB8~IOB11为输出端,为电机控制作准备。必要时还要设置输入端及PWM端口等。
图17 系统运动控制单元主程序流程图
训练部分:即语音模型的建立。首先须判断小车是否已被训练过,若没有,则要对其训练,成功后将训练的模型存储到FLASH中,以后使用不需再次对其训练;如果已经训练,则直接调出存储在FLASH中的模型并装载到辨识器中。
识别部分:在识别环节,若辨识结果为名字,则停止当前动作并待命,然后进入动作命令等待状态。若辨识结果为动作,则小车语音播放相应动作并执行该动作,在运动过程中可通过呼叫其名字使小车停止。 51单片机智能小车控制系统设计(9):http://www.youerw.com/zidonghua/lunwen_1557.html