ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:410.51KB ,
资源ID:9980151      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9980151.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(09电信董龙生 语音控制小车设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

09电信董龙生 语音控制小车设计.docx

1、09电信 董龙生 语音控制小车设计 西藏大学单片机应用基础课程设计题目:基于单片机的语音控制小车设计 学 院:工学院专 业:09电子信息工程姓 名:董龙生学 号:22040840208指导老师:肖伟、陈延利目 录 1 引言 32 语音控制小车设计要求 3 2.1 功能要求 .3 2.2 参数说明 .33 SPCE061A特性简介34系统总体方案介绍 45系统硬件设计 5 5.1车体介绍 .5 5.2小车的行走原理.5 5.3控制板原理图 .66系统软件设计 7 6.1系统的主程序设计.7 6.2主程序 .8 6.3语音识别的原理简介.127结束语 12基于单片机技术的语音控制小车设计1、 引言

2、语音处理技术是一门新兴的技术,它不仅包括语音的录制和播放,还涉及语音的压缩编码和解码,语音的识别等各种处理技术。以往做这方面的设计,一般有两个途径:一种方案是单片机扩展设计,另一种就是借助于专门的语音处理芯片。普通的单片机往往不能实现这么复杂的过程和算法,即使勉强实现也要加很多的外围器件。专门的语音处理芯片也比较多,如ISD 系列、PM50 系列等,但是专门的语音处理芯片功能比较单一,想在语音之外的其他方面应用基本是不可能的。 SPCE061A 是一款 16 位nSP结构的微控制器。该芯片带有硬件乘法器,能够实现乘法运算、内积运算等复杂的运算。它不仅运算能力强,而且处理速度快,单周期最高可以达

3、到 49MHz。 SPCE061A 内嵌 32K 字的 FLASH 程序存储器以及 2K 的SRAM。同时该 SOC 芯片具有 ADC 和 DAC 功能,其 MIC_ADC 通道带有AGC自动增益环节,能够很轻松的将语音信号采集到芯片内部,两路 10 位的电流输出型DAC,只要外接一个功放就可以完成声音的播放。以上介绍的这些硬件资源使得该SPCE061A 能够单芯片实现语音处理功能。 借助于 SPCE061A 的语音特色,“基于单片机技术的语音控制小车设计”实现了对小车前进、后退、左转、右转、停车等语音控制功能.2、 语音控制小车设计要求2.1 功能要求:1.可以通过简单的 I/O 操作实现小

4、车的前进、后退、左转、右转功能; 2.配合 SPCE061A 的语音特色,利用系统的语音播放和语音识别资源,实现语音控制的功能; 3.可以在行走过程中声控改变小车运动状态; 4.在超出语音控制范围时能够自动停车。2.2 参数说明车体:双电机两轮驱动 供电:电池(四节 AA:1.2V4 或 1.5V4) 工作电压:DC 4V6V 工作电流:运动时约 200mA3. SPCE061A特性简介SPCE061A是一款性价比很高的十六位单片机,使用它可以非常方便灵活的实现语音的录放,该芯片拥有8路10位精度的 ADC,其中一路为音频转换通道,并且内置有自动增益电路。这为实现语音录入提供了方便的硬件条件。

5、两路10位精度的DAC,只需要外接功放(SPY0030A)即可完成语音的播放。该单片机具有一套易学易用的指令系统和集成开发环境,在此环境中,它支持标准 C 语言编程,也支持 C 语言与汇编语言的互相调用。另外还提供了语音录放的库函数,只要了解库函数的使用,就可以很容易的完成语音的录放、识别等功能,这些都为软件开发提供了方便的条件。 SPCE061A特性: 16位nSP微处理器; 工作电压:内核工作电压VDD为 3.0V3.6V(CPU),I/O口工作电压VDDH为VDD5.5V(I/O); CPU时钟:0.32MHz49.152MHz; 内置2K 字 SRAM; 内置32K 闪存 ROM; 可

6、编程音频处理; 晶体振荡器; 系统处于备用状态下(时钟处于停止状态),耗电小于 2A3.6V; 2 个 16 位可编程定时器/计数器(可自动预置初始计数值); 2 个 10 位 DAC(数-模转换)输出通道; 32 位通用可编程输入/输出端口; 14 个中断源可来自定时器 A / B,时基,2 个外部时钟源输入,键唤醒; 具备触键唤醒的功能; 使用音频编码 SACM_S240 方式(2.4K 位/秒),能容纳 210 秒的语音数据; 锁相环 PLL 振荡器提供系统时钟信号; 32768Hz 实时时钟; 7 通道 10 位电压模-数转换器(ADC)和单通道声音模-数转换器; 声音模-数转换器输入

7、通道内置麦克风放大器和自动增益控制(AGC)功能; 具备串行设备接口; 低电压复位(LVR)功和低电压监测(LVD)功能; 内置在线仿真板(IC E,In-C ircuitEm ulator)接口。4、系统总体方案介绍小车的运动控制采用语音控制和中断定时控制相结合,通过语音触发小车动作,小车动作之后,随时可以通过语音指令改变小车的运动状态。在每一次动作触发的同时启动定时器,如果小车由于某些原因不能正常的接收语音指令,则只要定时时间一到,中断服务程序就会发出指令让小车停下来。 图1 控制系统所需硬件5、系统硬件设计系统的硬件方面,由于大部分的功能实现都是在61板上完成的,只有电机控制部分电路另外

8、设计在一块独立的电路板上,我们称之为控制板。下面详细的介绍小车的结构和运行原理以及控制电路板的结构和功能实现。图2 系统硬件框图5.1 车体介绍语音控制小车为四轮结构。其中前面两个车轮由前轮电机控制,在连杆和支点作用下控制前轮左右摆动,来调节小车的前进方向。在自然状态下,前轮在弹簧作用下保持中间位置。后面两个车轮由后轮电机驱动,为整个小车提供动力。所以又称前面的轮子为方向轮,后面的两个轮子为驱动轮。5.2 小车的行走原理.直走:由小车的结构分析,在自然状态下,前轮在弹簧作用下保持中间状态,这是只要后轮电机正转小车就会前进。倒车:倒车动作和前进动作刚好相反,前轮电机仍然保持中间状态,后轮电机反转

9、,小车就会向后运动。 图4 小车前进、后退示意图左转:前轮电机逆时针旋转(规定为正转),后轮电机正转,这时小车就会在前后轮共同作用下朝左侧前进。右转:前轮电机反转,后轮电机正转,这时小车就是会在前后轮共同作用下朝右侧前进。图5 小车转向示意图5.3 控制板原理图控制板主要包括:接口电路、电源电路和两路电机的驱动电路,控制板原理图如下。 接口电路:接口电路负责将61板的I/O接口信号传送给控制电路板,I/O信号主要为控制电机需要的IOB8IOB11这四路信号,同时为了方便后续的开发和完善,预留了IOB12IOB15 以及IOA8IOA15接口,可以在这些接口上添加一些传感器。电源部分:整个小车有

10、4个电源信号:电池电源,控制板工作电源,61板工作电源,61板的I/O输出电源。系统供电由电池提供,控制板直接采用电池供电(VCC),然后经二极管D1后产生61板电源SPCE061A 在语音控制小车中的应用(VCC_61),通过61板的Vio跳线产生61板的端口电源(V1)。 图6 小车控制电路图6、系统软件设计6.1 系统的主程序设计系统的主程序流程如下图所示:图7 主程序流程图共分为四大部分:初始化部分、训练部分、识别部分、重训操作。 初始化部分:初始化操作将 IOB8IOB11 设置为输出端,用以控制电机。必要时还要有对应的输入端设置和 PWM 端口设置等。 训练部分:训练部分完成的工作

11、就是建立语音模型。程序一开始判断小车是否被训练过,如果没有训练过则要求对其进行训练,并且会在训练成功之后将训练的模型存储到 Flash,在以后使用时不需要重新训练;如果已经训练过会把存储在 Flash 中的模型调出来装载到辨识器中。 识别部分:在识别环节当中,如果辨识结果是名字,停止当前的动作并进入待命状态,然后等待动作命令。如果辨识结果为动作指令小车会语音告知相应动作并执行该动作,在运动过程中可以通过呼叫小车SPCE061A在语音控制小车中的应用的名字使小车停下来。重训操作:考虑到有重新训练的需求,设置了重新训练的按键(61 板的 KEY3),循环扫描该按键,一旦检测到此键按下,则将擦除训练

12、标志位(0xe000 单元),并等待复位。复位后,程序重新执行,当检测到训练标志位为 0xffff 时会要求重新对其进行训练。 6.2主程序:/ The information contained herein is the exclusive property of/ Sunnnorth Technology Co. And shall not be distributed, reproduced,/ or disclosed in whole in part without prior written permission./ (C) COPYRIGHT 2003 SUNNORTH TEC

13、HNOLOGY CO./ ALL RIGHTS RESERVED/ The entire notice above must be reproduced on all authorized copies./=/=/ 工程名称: Car_Demo/ 功能描述: 实现小车的语音控制/ 涉及的库: CMacro1016.lib/ bsrv222SDL.lib/ sacmv26e.lib/ 组成文件: main.c/ Flash.asm, hardware.asm,ISR.asm / hardware.h,s480.h, hardware.inc/ 硬件连接: IOA0-KEY1/ IOA1-KEY2

14、/ IOA2-KEY3/ IOB8-前进/ IOB9-倒车/ IOB10-左拐/ IOB11-右拐 /=#include #include #define P_IOA_Data (volatile unsigned int *)0x7000 #define P_IOA_Dir (volatile unsigned int *)0x7002#define P_IOA_Attrib (volatile unsigned int *)0x7003#define P_IOB_Data (volatile unsigned int *)0x7005 #define P_IOB_Dir (volatile

15、 unsigned int *)0x7007 #define P_IOB_Attrib (volatile unsigned int *)0x7008 #define P_TimerA_Data (volatile unsigned int *)0x700A #define P_TimerA_Ctrl (volatile unsigned int *)0x700B #define P_TimerB_Data (volatile unsigned int *)0x700C #define P_TimerB_Ctrl (volatile unsigned int *)0x700D #define

16、P_Watchdog_Clear (volatile unsigned int *)0x7012 #define P_INT_Mask (volatile unsigned int *)0x702D #define P_INT_Clear (volatile unsigned int *)0x7011 #define NAME_ID 0x100#define COMMAND_GO_ID 0x101#define COMMAND_BACK_ID 0x102#define COMMAND_LEFT_ID 0x103#define COMMAND_RIGHT_ID 0x104#define S_NA

17、ME 0 /给我取个名字吧#define S_ACT1 1 /前进#define S_ACT2 2 /倒车,请注意#define S_ACT3 3 /左拐#define S_ACT4 4 /右拐 #define S_RDY 5 /Yeah#define S_AGAIN 6 /请再说一遍#define S_NOVOICE 7 /没有听到任何声音#define S_CMDDIFF 8 /说什么暗语呀#define S_NOISY 8 /说什么暗语呀#define S_START 9 /准备就绪,开始辨识 #define S_GJG 10 /拐就拐#define S_DCZY 11 /倒车,请注意e

18、xtern unsigned int BSR_SDModel100; /外部变量BSR_SDModel100,辨识器自带extern void F_FlashWrite1Word(unsigned int addr,unsigned int Value);extern void F_FlashErase(unsigned int sector);unsigned int uiTimeset = 3; /运行时间定时,调整该参数控制运行时间unsigned int uiTimecont; /运行时间计时/=/ 语法格式: void Delay();/ 实现功能: 延时/ 参数: 无/ 返回值:

19、无/=int TrainWord(unsigned int WordID,unsigned int SndID) int Result; PlaySnd(SndID,3);while(1) Result = BSR_Train(WordID,BSR_TRAIN_TWICE); /训练两次,获得训练结果 if(Result=0)break; switch(Result) case -1: /没有检测出声音 PlaySnd(S_NOVOICE,3); return -1; case -2: /需要训练第二次 PlaySnd(S_AGAIN,3); break; case -3: /环境太吵 Pla

20、ySnd(S_NOISY,3); return -3; case -4: /数据库满 return -4; case -5: /检测出声音不同 PlaySnd(S_CMDDIFF,3); return -5; case -6: /序号错误 return -6; default: break; return 0;int main(void) unsigned int BS_Flag; /Train标志位 *P_IOA_Dir=0xff00; /初始化IOA,IOA07下拉输入 *P_IOA_Attrib=0xff00; *P_IOA_Data=0x0000; *P_IOB_Dir=0x0f00;

21、 /初始化IOB,IOB811同向输出 *P_IOB_Attrib=0x0f00; *P_IOB_Data=0x0000; BSR_DeleteSDGroup(0); /初始化存储器RAM BS_Flag=*(unsigned int *)0xe000; /读存储单元0xe000 if(BS_Flag=0xffff) /没有经过训练(0xe000内容为0xffff) TrainSD(); /训练 StoreSD(); /存储训练结果(语音模型) else /经过训练(0xe000内容为0x0055) LoadSD(); /语音模型载入识别器 PlaySnd(S_START,3); /开始识别提

22、示 BSR_InitRecognizer(BSR_MIC); /初始化识别器 while(1) BSR(); if(*P_IOA_Data)&0x0004) /是否重新训练 F_FlashErase(0xe000); while(1); 子程序:void F_FlashErase(unsigned int sector)void BSR()void BSR_InitRecognizer()void PlaySnd()void LoadSD()void StoreSD()void TrainSD()void BSR_DeleteSDGroup()void BSR_Train()6.3 语音识别的

23、原理简介语音识别主要分为“训练”和“识别”两个阶段。在训练阶段,单片机对采集到的语音样本进行分析处理,从中提取出语音特征信息,建立一个特征模型;在识别阶段,单片机对采集到的语音样本也进行类似的分析处理,提取出语音的特征信息,然后将这个特征信息模型与已有的特征模型进行对比,如果二者达到了一定的匹配度,则输入的语音被识别。语音识别的具体流程如下图所示: 7 结束语本设计综合应用了SPCE061A丰富的软硬件资源,成功的实现了语音控制功能。在硬件方面,有较高的执行速度、内置的硬件乘法器、ADC和DAC功能、内置的AGC自动增益环节,这些为语音处理提供了强大基础。在软件方面,标准的C语言编程,丰富的语音资源函数为编程提供了很大的方便。该设计方案结构简单,以单芯片实现了语音播放与识别以及电机控制功能,相当于“语音识别芯片+ 普通单片机”的功能。但是比“语音识别芯片+普通单片机”方案实现起来要简单很多,而且成本也会降低很多。该语音控制小车操作比较简单,训练和识别成功的几率也比较高,是一个典型的语音识别应用方案。 致谢感谢肖老师、陈老师这学期来的教导和关怀

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1