欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    避障语音控制小车系统毕业论文.doc

    • 资源ID:3994475       资源大小:1.24MB        全文页数:35页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    避障语音控制小车系统毕业论文.doc

    第1章 绪论当今社会,科学技术日新月异,时代前进的步伐越迈越宽,应用自动化设备,计算机处理,现代化通讯,数字化信息,现代化显示设备等高新技术而建立的现代化智能,监控等系统已经得到充分的发展与应用,智能机器人也就应运而生。同时,在建设以人为本的和谐社会的过程中,智能服务机器人能够完成多种危险作业,以保证人身安全。因此,重点研究低成本的自组织网络,个性化的智能机器人成为主要方向。此外随着汽车工业的迅速发展,关于汽车的研究也就越来越受人关注。全国电子大赛和省内电子大赛几乎每次都有智能小车这方面的题目,全国各高校也都很重视该题目的研究。可见其研究意义也很适应了当今智能机器人研究方向。本设计就是在这样的背景下提出的,指导教师已经有充分的准备。本题目是结合科研项目而确定的设计类课题。设计的智能电动小车应该能够实时显示时间、速度,具有语音识别、避障功能,可程控行驶速度。根据题目的要求,确定如下方案:在现有玩具电动车的基础上,加装光电、红外线,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠、精度高,可满足对系统的各项要求。本设计采用凌阳系列中的SPCE061A单片机为控制核心,利用红外线传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间和速度,语音识别功能。SPCE061A是一款16位单片机,它的易用性和多功能性受到了广大使用者的好评。它是第三代单片机的代表。新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现Microcomputer完善的控制功能为己任,将一些外部接口功能单元如A/DPWMPCA(可编程计数器阵列)WDT(监视定时器)高速I/O口计数器的捕获/比较逻辑等。这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。凌阳公司还为这一代单片机SPCE061A系列单片机引入了具有较强功能语音识别。新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。 本设计就采用了比较先进的SPCE061A为控制核心,SPCE061A采用CHOMS工艺,功耗很低。该设计具有实际意义,可以应用于考古、机器人、医疗器械等许多方面。尤其是在足球机器人研究方面具有很好的发展前景。所以本设计与实际相结合,现实意义很强。第2章 硬件电路设计2.1 硬件框图避障语音控制小车系统构成框图如图2-1所示。主要由61板、电机驱动板、车体(含前后轮电机)和显示板等部分构成。图2-1 控制系统构成框图硬件连接如图2-2所示。图2-2 硬件连接图2.2 硬件原理图硬件电路包括外部电机驱动电路如图2-3所示,外扩显示板如图2-4和2-5所示。图2-3 电机驱动电路图电机前后轮驱动模块驱动采用分立元件组成的H桥控电路,内部定时器产生的PWM波经IOB9输入H桥电路驱动电机前进,同时IOB8为低电平;反之,车辆倒车;IOB10输入H桥高电平,IOB11为低电平时车左转,反之,车辆右转。(注意H桥两臂不能同时出现高电平信号。)为了便于单片机的引脚有效利用,所以对此电路PCB的设计还扩了多个引脚插槽,彼此都为并联,这样设计主要两方面的好处,其一是使单片机的引脚利用率,其二是便于各模块的连接,即插即用,便于固定,并且稳定性高。在设计中还把电源引脚也集成到插槽内,这样外扩模块供电方式也解决了,这也为本硬件设计的一大特色。图2-4 外扩显示板电路图图2-5 显示测速板丝网图此模块中用四段八段数码管作为显示器,并具有双重功能,在小车行驶时能显示倒计时,又能通过按键的切换来显示小车的当前速度,此外在四位数码管的两侧分别有四个LED灯用以显示小车的运行状态。在显示板的右侧为测速装置,它由一组红外对管以及两个三极管配合而成的比较器组成,当检测到白线后,就会产生高电平,进行中断触发。而在车轮上贴有白色胶带,所以要想检测车速,只要判断单位时间内产生的中断数即可。2.3 硬件资源利用2.3.1 微控制器电路控制器采用凌阳科技公司的SPCE061A,其硬件资源分配见表2-3所示。表2-3 硬件资源分配表资源名称具体分类作用初始化IO口分配IOA0IOA2IOA0IOA2,采用61板集成按键根据需要采用复用模式IOA0: 时间调整设置键IOA1: 时间加、速度时间显示切换键IOA2: 时间减、重训练键带下拉的输入端IOB7用于控制避障电路的工作与否(TX)低电平输出IOA8IOA15数码管数据端ah低电平输出IOB0、IOB1 IOB4IOB6四位数码管与8个LED的位选段,用于动态扫描低电平输出IOB2外部中断EXT1,用于避障电路(RX)带上拉的输入端IOB3外部中断EXT2,用于测速电路(RX)带上拉的输入端IOB8IOB11IOB8IOB11电机控制端8,9为后轮低电平输出ADC选择MIC-IN模式用于声音的输入DAC用作声音输出功能单声道FLASH存储器用于存储语音特征要素中断源的使用FIQ-TMA用于语音播放、识别FIQ-TMBPWM调速输出IRQ3_EXT1用于避障子程序IRQ3_EXT2用于测速子程序IRQ4_1KHz用于时间与速度的显示扫描IRQ5_2HZ用于产生倒计时时间发生信号IRQ5_4HZ用于小车前后左右行驶时间的设定IRQ5_8HZ用于产生测速门控信号,1秒钟测速2.3.2 电源板电路模块分析4节AA的电池给61板提供6V的输入电压,经61板上电源稳压块SPY0029的作用下产生3.3V的电压供给SPCE061A。外部显示模块由61板提供电源,电机驱动由电池直接供电。图2-4所示电源电路图中的VDDH3为SPCE061A的I/O电平参考,接SPCE061A的51脚,这种接法使得I/O输入输出高电平为3.3V,VDDP为PLL锁相环电源,接SPCE061A的7脚,VDD和VDDA为数字电源,分别接SPCE061A的15脚和36脚,AVSS1是模拟地,接SPCE061A的24脚;VSS是数字地,接SPCE061A的38脚;AVSS2接音频输出电路的AVSS2。图2-4 电源电路图2.3.3 键盘输入电路键盘输入电路如图2-5键盘输入电路所示,当有键按下时,对应的I/O口被拉到高电平,CPU响应按键信号,进行相应的信号处理。图2-5 键盘输入电路2.3.4 麦克风输入电路麦克采来的语音信号经AGC(自动增益控制放大)后进入MIC-IN通道进行A/D转换。音频录入部分:主要由Microphone、AGC电路、ADC电路构成。 图2-6是音频录入电路。因为SPCE061A内置了AGC电路和ADC电路,所以实现音频录入的外围电路变得如此简单。这部分电路与SPCE061A的连接是这样的:AGC 接音频录入AGC引脚(25脚),OPI接Microphone的第二运放输入脚(26脚),MICOUT接Microphone的第一运放输出脚(27脚),MICN接Microphone的负向输入脚(28脚),MICP接Microphone正向输入脚(33脚),VCM接ADC参考电压输出脚(34脚),VMIC接Microphone电源(37脚)。语音信号经Microphone转换成电信号,由隔直电容隔掉直流成分,然后输入至SPCE061A内部前置放大器。SPCE061A内部自动增益控制电路AGC能随时跟踪、监视前置放大器输出的音频信号电平,当输入信号增大时,AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,以便使进入A/D的信号保持在最佳电平,又可使削波减至最小。图2-6 麦克输入电路2.3.5 CPU语音输出电路SPCE061A内置2路10位精度的DAC,只需要外接功放电路即可完成语音的播放。图2-7是音频输出电路图。可以接耳机,也可以直接听喇叭输出的声音。图2-7 CPU语音输出电路2.3.6 指示电路指示灯实际排列如图2-8所示;当车准备就绪的时候,车显示板的1号,5号,3号,7号四个灯亮起。当遇到障碍物和显示速度的时候,车的八个灯全部点亮。当车进入设置模式后,加数时1号,5号灯亮,减数的时2号,6号灯亮;图2-8 指示灯排列图2.3.7 避障电路如图2-9所示,避障光电接收管采集的电流信号经三极管放大,在集电极将电流信号变成电压信号。当检测到障碍物后TX就会发生电平变化,产生外部中断。图2-9 指示灯硬件电路原理图2.4 本章小结此章主要为小车的硬件结构,在设计中本着稳定性强,结构紧凑,便于扩展的原则,进行的电路原理图的设计以及PCB图的排版。在安全性上也进行了改进,比如在电机控制部分中为了防止短路,在设计中进行了优化。第3章 凌阳音频函数在系统中的应用3.1 本系统中凌阳音频的使用语音处理大致可以分为A/D转换、编码处理、语音存储、语音解码处理以及D/A转换几大模块;SPCE061A针对以上的各大要素进行的解决方案为:将A/D、编码算法、解码算法、存储及D/A作成相应的模块,对于每个模块都有其应用程序接口API,用户只需了解每个模块所要实现的功能及其参数的内容,然后调用该API函数即可实现语音处理功能。3.1.1 语音资源格式的选取表3-1所列出的是凌阳音频的几种算法:表3-1 SACM-lib库中模块及其算法类型模块名称语音压缩编码率类型资料采样率SCAM_A200016Kbit/s,20Kbit/s,24Kbit/s16KHzSCAM_S480/S7204.8Kbit/s,7.2Kbit/s16KHzSCAM_S2402.4Kbit/s24KHzSCAM_MS01音乐合成(16Kbit/s,20 Kbit/s,24 Kbit/s)16KHzSCAM_DVR(A2000)16Kbit/s的资料率,8K的采样率,用于ADC通道录音功能16KHz麦克风输入所生成的WAVE文件,其占用的存储空间很大,对于单片机来说想要存储大量的信息显然是不可能的,而凌阳的SPCE061A提出了解决的方法,即SACM-LIB,该库将A/D、编码、解码、存储及D/A作成相应的模块,对于每个模块都有其应用程序接口API,只需了解每个模块所要实现的功能及其参数的内容,然后调用该API函数即可实现该功能,例如在程序中插入语音提示,或连续播放一段语音或音乐,也可以根据自己需要的空间或使用范围选择适合自己的算法如表3-2所示表3-2 单片机对语音处理过程SACM-S480压缩算法压缩比较大,为80:3,存储容量大,音质介于A2000和S240之间,适用于语音播放。本系统采用S480格式语音资源。3.1.2 S480语音资源的制作系统所用语音素材采用录音软件录制成WAV语音文件,其文件格式要求为单声道、16位、8K采样率。然后通过凌阳提供的语音压缩工具转换为S480格式文件。3.1.3 凌阳语音辨识 对于语音辨识主要有以下两种: (1) 特定发音人识别SD(Speaker Dependent):是指语音样板由单个人训练,也只能识别训练人的语音命令,而他人的命令识别率较低或几乎不能识别。在本产品中采用特定人的语音识别。 (2) 非特定发音人识别SI(Speaker Independent):是指语音样板由不同年龄、不同性别、不同口音的人进行训练,可以识别一群人的命令。本系统采用特定发音人识别。语音辨识库已被集成在凌阳的单片机开发环境unSP IDE 2.0.0软件安装包内,安装该软件后,可在其子目录下查找到。语音识别基本流程:(1) 语音信号数字化。(2) 特征提取:抽取反应语音本质的特征参数,形成特征矢量序列。(3) 语音模型库:从一个或多个讲话者多次重复讲话中提取的语音参数模板。(4) 模式匹配:把输入语音的特征参数与语音模型库进行比较分析,得到识别结果。3.1.4 S480语音的应用程序接口API的功能介绍及应用 以下就SACM-S480算法具体介绍其API函数的格式、功能、参数、返回值、备注。 其相关API函数如下所示: int SACM_S480_Initial(int Init_Index) void SACM_S480_ServiceLoop(void) void SACM_S480_Play(int Speech_Index, int Channel, int Ramp_Set) void SACM_S480_Stop(void) void SACM_S480_Pause(void) void SACM_S480_Resume(void) void SACM_S480_Volume(Volume_Index) unsigned int SACM_S480_Status(void) Call F_FIQ_Service_SACM_S480 各函数具体内容如下: (1)【API格式】C:int SACM_S480_Initial(int Init_Index) ASM:R1=Init_Index Call F_SACM_S480_Initial 【功能说明】SACM_S480语音播放之前的初始化。 【参数】Init_Index=0 表示手动方式;Init_Index=1 则表示自动方式。 【返回值】0:代表语音模块初始化失败 1:代表初始化成功。 【备注】该函数用于对定时器、中断和DAC等的初始化。 (2)【API格式】C:void SACM_S480_ServiceLoop(void) ASM:Call F_SACM_S480_ServiceLoop【功能说明】从资源中获取SACM_S480语音资料,并将其填入解码队列中。【参数】无。【返回值】无。【备注】播放语音文件中数据,当出现FF FF FFH数据时便停止播放。 (3)【API格式】C:int SACM_S480_Play(int Speech_Index, int Channel, int Ramp_Set);ASM:R1=Speech_Index R2=Channel R3=Ramp_Set Call SACM_S480_Play【功能说明】播放资源中SACM_S480语音。【参数】Speech_Index 表示语音索引号。 Channel:1.通过DAC1通道播放; 2.通过DAC2通道播放; 3.通过DAC1和DAC2双通道播放。 Ramp_Set:0.禁止音量增/减调节; 1.仅允许音量增调节; 2.仅允许音量减调节; 3.允许音量增/减调节。【返回值】无。 【备注】 SACM_S480的数据率有4.8Kbps7.2Kbps三种,可在同一模块的几种算法中自动选择一种。 Speech_Index是定义在resource.inc文件中资源表(T_SACM_S480_Speech Table)的偏移地址。中断服务子程序中F_FIQ_Service_SACM_S480必须放在TMA_FIQ中断向量上(参见SPCE的中断系统)。 函数允许TimerA以所选的的数据采样率(计数溢出)中断。 (4)【API格式】C:void SACM_S480_Stop(void); ASM:Call F_ SACM_S480_Stop 【功能说明】停止播放SACM_S480语音。【参数】无。 【返回值】无。 (5)【API格式】C:void SACM_S480_Pause (void); ASM:Call F_ SACM_S480_Pause 【功能说明】暂停播放SACM_S480语音。 【参数】无。 【返回值】无。 (6)【API格式】C:void SACM_S480_Resume(void);ASM:Call F_ SACM_S480_Resume【功能说明】恢复暂停播放的SACM_S480语音。 【参数】无。 【返回值】无。 (7)【API格式】C:void SACM_S480_Volume(Volume_Index); ASM:R1= Volume_Index Call F_Model-Index_Volume【功能说明】在播放SACM_S480语音时改变主音量。 【参数】Volume_Index为音量数,音量从最小到最大可在015之间选择。 【返回值】无。 (8)【API格式】C:unsigned int SACM_S480_Status(void);ASM:Call F_SACM_S480_Status【返回值】=R1。【功能说明】获取SACM_S480语音播放的状态。 【参数】无。【返回值】当R1的值bit0=0,表示语音播放结束;bit0=1,表示语音在播放中。 (9)【API格式】ASM:Call F_FIQ_Service_SACM_S480 【功能说明】用作SACM_S480语音背景程序的中断服务子程序。通过前台子程序(自动方式的SACM_S480_ServiceLoop及手动方式的SACM_S480_Dec ode)对语音资料进行解码,然后将其送入DAC通道播放。【参数】无【返回值】无。【备注】SACM_S480语音背景子程序只有汇编指令形式,且应将此子程序安置在TMA_FIQ中断源上。 3.1.5 语音辨识应用程序接口API的功能介绍及应用在本系统中,借助语音辨识函数库开发训练语音和语音识别功能,以达到语音控制小车的目的。图3-3是语音辨识的一个整体框图:图3-3 语音辨识原理框图常用的API函数介绍:【API格式】C:int BSR_DeleteSDGroup(0);ASM:F_BSR_DeleteSDGroup(0)【功能说明】SRAM初始化。【参数】该参数是辨识的一个标识符,0代表选择SRAM,并初始化。【返回值】当SRAM擦除成功返回0,否则,返回1。 训练部分:【API格式】C:int BSR_Train (int CommandID, int TraindMode); ASM:F_BSR_Train【功能说明】训练函数。【参数】 CommandID:命令序号,范围从0x100到0x105,并且对于每组训练语都是唯一的。 TraindMode:训练次数,要求使用者在应用之前训练一或两遍: BSR_TRAIN_ONCE:要求训练一次。 BSR_TRAIN_TWICE要求训练两次。 【返回值】训练成功,返回0;没有声音返回1;训练需要更多的语音数据来训练,返回2;当环境太吵时,返回3;当数据库满,返回4;当两次输入命令不通,返回5;当序号超出范围,返回6。【备注】 在调用训练程序之前,确保识别器正确的初始化。 训练次数是2时,则两次一定会有差异,所以一定要保证两次训练结果接近 为了增强可靠性,最好训练两次,否则辨识的命令就会倾向于噪音 调用函数后,等待2秒开始训练,每条命令只有1.3秒,也就是说,当训练命令超出1.3秒时,只有前1.3秒命令有效。 辨识部分: (1)【API格式】C:void BSR_InitRecognizer(int AudioSource)ASM:F_BSR_InitRecognizer 【功能说明】辨识器初始化。 【参数】定义语音输入来源。通过MIC语音输入还是LINE_IN电压模拟量输入。 【返回值】无。 (2)【API格式】C:int BSR_GetResult();ASM:F_ BSR_GetResult 【返回值】=R1 【功能说明】辨识中获取数据。 【参数】无。 【返回值】 当无命令识别出来时,返回0; 识别器停止未初始化或识别未激活返回1; 当识别不合格时返回2; 当识别出来时返回命令的序号。 【备注】该函数用于启动辨识,BSR_GetResult();(3)【API格式】C:void BSR_StopRecognizer(void); ASM:F_BSR_StopRecognizer 【功能说明】停止辨识。 【参数】无。 【返回值】无。 【备注】该函数是用于停止识别,当调用此函数,FIQ_TMA中断将关闭。 中断部分: (4)【API格式】ASM:_BSR_InitRecognizer 【功能说明】在中断中调用,并通过中断将语音信号送DAC通道播放。 【参数】无。 【返回值】无。 【备注】 该函数在中断FIQ_TMA中调用 当主程序调用BSR_InitRecognizer时,辨识器便打开8K采样率的FIQ_TMA中断并开始将采样的语音数据填入辨识器的数据队列中。 应用程序需要设置一下程序段在FIQ_TMA中.3.2 本章小结本章介绍了凌阳SPCE061A的核心语音,在此主要以S480为例分别从这种格式的存储、播放、识别中所用到的API函数做了详细的介绍。这些函数都为凌阳公司所提供的底层函数,所以应用时要注意函数的返回值以及函数的形参,这样也会节省大量的时间进行上层开发。凌阳公司提供的这些API函数分别从C语言和汇编语言两种形式提供给用户,便于各方面用户的调用。第4章 软件设计4.1 系统软件设计说明在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件更为重要。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。所谓“模块”,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法的主要优点是:1.单个模块比起一个完整的程序易编写及调试;2.模块可以共存,一个模块可以被多个任务在不同条件下调用;3.模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。本系统软件采用模块化结构,由主程序定时子程序、避障子程序中断子程序显示子程序调速子程序算法子程序构成。4.2 模块分析整个软件系统分主程序模块、系统初始化模块、语音功能模块、显示功能模块、避障功能模块、运行时间控制模块、键盘功能模块。4.3 主程序4.3.1 主程序流程图主程序是整个工程的核心。本项目的软件设计大量采用子函数结构,主程序通过调用各种子函数来实现系统功能。在主程序里包含了函数的初始化,其中包含了IO口的初始化,中断函数初始化,定时器初始化。还包含了训练函数,进行语音存储,识别函数的打开,蔽障和键盘的查询,以及速度的检测。在主程序的开始的进行初始化之后,就会进入一个死循环中。用查询的方式判断键值的输入,以及判断中断标志位的变化,进而进行相应的处理。主程序的流程图如图4-1所示。图4-1 主程序流程图4.4 初始化系统子函数该函数承担着开机后初始化系统的任务,包含初始化I/O端口工作模式、初始化变量与参数、初始化定时器TimerB及开放它的FIQ中断。其中具体包含,初始化操作将IOB8IOB11设置为输出端,用以控制电机。必要时还要有对应的输入端设置和PWM端口设置等,同时还初始化IOA的高八口为显示信号输出端口。初始IOA0,IOA1,IOA2为按键输入端口,IOB2为避障信号输入端口,IOB0,IOB4IOB7初始为输出端口用以控制数码管和LED的位选。图4-2 初始化系统子函数流程图4.5 语音功能的实现凌阳科技针对SPCE061A开发了自己的语音函数库,该函数库能够实现语音训练、辨识、录制、播放等特色功能。通过语音训练建立若干语音指令的语音特征参数数组,SPCE061A在识别模式下通过对比采集到的特征参数与训练建立的特征参数进行对比,根据对与不同训练指令的匹配程度输出返回参数,小车驱动电机子程序对该返回参数进行判断,决定前进、后退、左转、右转,还是原地不动。系统中,语音功能涉及到语音播放和语音识别,其实现的软件流程如下分析。4.5.1 语音播放功能此模块的实现通过用户编写的播放子函数及中断服务程序完成。在本设计中采用的是S480格式语音资源,它是介于A2000和S240语音格式之间一种资源,据有所占硬件存储资源少,音质清晰的特点。鉴于单片机内部资源有限的特点,故选此格式。(1)自动播放S480格式语音资源子函数传入参数为语音资源的序号,软件流程如图4-3。图4-3 S480语音播放流程(2)FIQ中断服务程序系统功能中,实现S480语音播放、语音训练、语音识别这些功能需要使用中断服务程序。根据凌阳公司语音库函数的要求,为提高语音播放质量及保证识别效率,语音相关的后台中断服务函数必须安排在TimerA的FIQ中断服务中。FIQ为凌阳61单片机的一个中断类型,在61单片机中包含了三种中断类型,分别为IRQ中断、FIQ中断、软件中断以及异常中断,快速FIQ可以打断普通中断IRQ,形成中断嵌套。为保证数码管和LED显示效果,将动态扫描数码管和LED的程序安排在TimerB的FIQ中断服务中。该中断服务程序采用汇编语言编写,旨在提高代码执行效率。FIQ中断服务程序流程图如图4-4所示。图4-4 FIQ中断服务程序4.5.2 语音训练与识别语音识别主要分为“训练”和“识别”两个阶段。在训练阶段,单片机对采集到的语音样本进行分析处理,从中提取出语音特征信息,建立一个特征模型;在识别阶段,单片机对采集到的语音样本也进行类似的分析处理,提取出语音的特征信息,然后将这个特征信息模型与已有的特征模型进行对比,如果二者达到了一定的匹配度,则输入的语音被识别。1.训练单条语音指令子函数训练单条语音为语音储存的基础,在本设计中主要储存了和小车动作相应的语音,以及和在训练时相应的语音。在训练时能储存的语音要素一共为五句,分别为为小车所起的名字,和控制小车的前后左右运动的四句话。在储存每一条语音时需要训练相同的两遍,如果两次输入不同则会有相应的语音提示,再从新输入。训练单条语音指令子函数的软件流程图如图4-5所示。图4-5 单条语音训练程序流程2.训练多条语音指令的子函数训练多条语音指令的子函数程序流程如图4-6所示。图4-6 多条语音训练指令3.语音识别结果处理子函数语音识别结果处理子函数根据获得的语音识别结果参数来执行不同的程序分支。小车的前进、后退、左转、右转动作的子函数只有在外界获得相匹配的语音要素后各子函数才被调用。调用之后,只能运行2秒钟,因为当打开运行函数的同时,也把4赫兹的时机中断打开,定时2秒钟。本系统只有在前进的时候用到了PWM输出控制。具体软件流程图如图4-7所示。图4-7 语音识别流程在该流程图中,考虑到小车从静止到运动需要较大的电机功率输出,故在程序上提出了一个软件处理技巧,即在响应“前进”语音指令后,不立即使用PWM驱动方式降低电机输出功率,而是首先全功率驱动电机,在延时一段时间(预计小车状态已转换到运动状态)后,关闭全功率驱动,代替以有固定占空比的PWM波驱动。这样可以有效降低小车稳定运行时的行驶速度。每执行一次小车动作,都会启动IRQ5的2Hz中断来倒计时,中断计时到预先设定值后将在中断服务程序中停止小车并终止计时。4.6 显示功能的实现4.6.1 更新显示缓存子函数数码管的扫描段码与整数的位具有一一对应的关系。更新显示缓存子函数中,程序提取传入参数(整数)的个、十、百、千位并转换为数码管段码(全局变量,作为显示缓存的一部分)。该功能实现的软件流程图如图4-8所示。图4-8 数码管显示流程4.6.2 动态扫描子函数数码管显示采用的方式为动态扫描。之前常用到方法为延时法,延时法的实质是做无用计算,通过浪费时间来实现时间消耗,此方法会占用大量的CPU资源,降低CPU使用率。采用中断法实现显示扫描,将扫描放在时基中断中,每隔一定时间启动一次扫描,其它时间CPU可运行其它程序,此时CPU的使用率较高,这种扫描方式摒除了传统动态扫描中用冗余指令获得延时的方法,而是充分利用两次中断响应之间的停留时间作为视觉暂留时间。该方法能有效提高CPU运行效率。此外动态扫描法还要注意以下几个方面:在切换位选前,需要清除段码输出,否则易造成显示有残影。扫描频率可以通过调节定时器初值完成。注意操作端口时不要影响没有用到的I/O端口的状态。动态扫描数码管和LED的流程图如图4-9所示。图4-9 扫描数码管和LED的流程图4.7 避障功能的实现在本设计中采用了中断方式来进行蔽障,节约了MCU的利用率,提高了它的处理速度。4.7.1 IRQ3中断服务程序外部输入信号EX1的IRQ3中断服务程序是为避障传感器遇障信号的响应设置的。因语音播放遇障信息需要调用播放子函数,其程序执行时间相对较长,若直接设置在此中断服务程序中,易造成中断服务时间过长,影响系统其他中断的正常工作(特别是辨识功能将受很大影响)。故采取标志传递的方法,在中断中改变“障碍物检测标志”,主程序中的主循环程序通过查询“障碍物检测标志”来决定是否语音播放遇障信息。其流程图如图4-10所示。图4-10 IRQ3中断服务程序4.8 键盘功能的实现按键所要完成的功能是通过SPCE061A单元板上的按键动作,来完成相应的预设的功能。而要实现按键的作用,在软件上其基础就要包含获取键值和键值处理这两个底层函数。4.8.1 获取键值子函数当按键按下时,相应I/O端口被拉到高点平状态,单片机通过查询I/O引脚的电平状态来形成键值,键值反映了键盘按键的当前操作状态。调用获取键值子函数将返回当前键盘键值。在主程序中对键值的选取是通过查询的方式进行的,所以只有按键有返回值后才能实现按键的作用,在再取键值的子函数中应注意两点,一是先读取I/O口键值保存在寄存器中,判断读回值是否为零,为零则表示没有键按下,返回零。非零则延时大约30ms后再次读取I/O口键值,比较两次读取的键值是否相同,如果相同则返回键值,否则返回零。二是即使前两次检测按键值相同,但还有第三次判断,所以当按下按键后必须要松开,不能一直按着,如果这样的话,也不能作为一次有效地按键。其软件流程图如图4-11所示。图4-11 获取键值流程图4.8.2 键值处理子函数键值处理子函数的传入参数为某键值,其功能为根据不同键值执行不同的功能。在本系统中,按键功能设置为:KEY1:设置模式进入/退出键KEY2:运行时间加1操作键KEY3:运行时间减1操作键如果KEY1没有进入设置模式,直接按下KEY2键四位数码管就会显示小车的当前的车速,直接按下KEY3,就会从擦出上次的训练语音,从新进入训练状态。键值处理子函数的软件流程图如图4-12所示。图4-12 键值处理流程图4.9 直流调速系统4.9.1 方案分析根据题目的要求,确定如下方案:在现有玩具电动车的基础上,加装光电检测器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的智能控制。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。方案一:串电阻调速系统。方案二:静止可控整流器。简称V-M系统。方案三:脉宽调速系统。旋转变流系统由交流发电机拖动直流电动机实现变流,由发电机给需要调速的直流电动机供电,调节发电机的励磁电流即可改变其输出电压,从而调节电动机的转速。改变励磁电流的方向则输出电压的极性和电动机的转向都随着改变,所以G-M系统的可逆运行是很容易实现的。该系统需要旋转变流机组,至少包含两台与调速电动机容量相当的旋转电机,还要一台励磁发电机,设备多、体积大、费用高、效率低、维护不方便等缺点。且技术落后,因此搁置不用。V-M系统是当今直流调速系统的主要形式。它可以是单相、三相或更多相数,半波、全波、半控、全控等类型,可实现平滑调速。V-M系统的缺点是晶闸管的单向导电性,它不允许电流反向,给系统的可逆运行造成困难。它的另一个缺点是运行条件要求高,维护运行麻烦。最后,当系统处于低速运行时,系统的功率因数很低,并产生较大的谐波电流危害附近的用电设备。采用晶闸管的直流斩波器基本原理与整流电路不同的是,在这里晶闸管不受相位控制,而是工作在开关状态。当晶闸管被触发导通时,电源电压加到电动机上,当晶闸管关断时,直流电源与电动机断开,电动机经二极管续流,两端电压接近于零。脉冲宽度调制(Pulse Width Modulation),简称PWM。脉冲周期不变,只改变晶闸管的导通时间,即通过改变脉冲宽度来进行直流调速。与V-M系统相比,PWM调速系统有下列优点:(1)由于PWM调速系统的开关频率较高,仅靠电枢电感的滤波作用就可以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速范围较宽,可达1:10000左右。由于电流波形比V-M系统好,在相同的平均电流下,电动机的损耗和发热都比较小。(2)同样由于开关频率高,若与快速响应的电机相配合,系统可以获得很宽的频带,因此快速响应性能好,动态抗扰能力强。(3)由于电力电子器件只工作在开关状态,主电路损耗较小,装置效率较高。脉宽调速也可通过单片机控制继电器的闭合来实现,但是驱动能力有限。为顺利实现电动小汽车的前行与倒车,本设计采用了可逆PWM变换器。可逆PWM变换器主电路的结构式有H型、T型等类型。我们在设计中采用了常用的双极式H型变换器,它是由4个三极电力晶体管组成的桥式电路。4.9.2 PWM技术介绍PWM利用三极管等开关器件将直流电压变为方波的形式,输出的电压就在VLoad和0V之间不停的跳变,如图4-13所示图4-13 PWM计算示意图平均电压Uo=Th/(Th+Tl)*VLoad可通过调整PWM的占空比来改变Th和Tl的比值例如:Th=5ms Ti=5ms VLoad=1V Uo=Th/(Th+Tl)*VLoad =5/(5+5)*1 =0.

    注意事项

    本文(避障语音控制小车系统毕业论文.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开