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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于STC单片机的智能语音控制小车Word文件下载.docx

1、超声波时序图3.3:图3.3 超声波时序图 由时序图表明你只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式:uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S)/2;建议测量周期为60ms以上,以防止发射信号对 :3.4回响信号的影响。超声波电路如图图3.4 超声波电路 3.3 LD3320语音识别单元 语音识别作为信息技术中一种人机接口的关键技术,具有重要的研究意义和广泛的应用价值。语

2、音识别技术的应用范围极为广泛,不仅涉及到日常生活的方方面面,在军事领域也发挥着极其重要的作用。它是信息社会朝着智能化和自动化发展的关键技术,使人们对信息的处理和获取更加便捷,从而提高人们的工作效率。 语音识别是将人类的声音信号转化为文字或者指令的过程。语音识别以语音为研究对象,它是语音信号处理的一个重要研究方向,是模式识别的一个分支。根据在不同限制条件下的研究任务,产生了不同的研究领域。这些领域包括:根据对说话人说话方式的要求,可分为孤立字(词)、连接词和连续语音识别系统;根据对说话人的依赖程度,可分为特定人和非特定人语音识别系统;根据词汇量的大小,可分为小词汇量、中等词汇量、大词汇量以及无限

3、词汇量语音识别系统。 从语音识别模型的角度讲,主流的语音识别系统理论是建立在统计模式识别基础之上的。语音识别系统本质上是一种多维模式识别系统,对于不同的语音识别系统,人们所采用的具体识别方法及技术不同,但其基本原理都是相同的,即将采集到的语音信号送到特征提取模块处理,将所得到的语音特征参数送入模型库模块,由声音模式匹配模块根据模型库对该段语音进行识别,最后得出识别结果。语音识别系统基本原理框图如图3.5所示,其中:预处理模块滤除原始语音信号中的次要信息及背景噪音等,包括抗混叠滤波、预加重、模数转换、自动特征提取模块对语音的声学参数进行将语音信号数字化;增益控制等处理过程, 分析后提取出语音特征

4、参数,形成特征矢量序列。识别识别结果输入后处理预处理特征提取相似性度量语音训练参考模式库 图3.5 语音识别系统框图 3.4 电机驱动 小车轮子驱动采用直流减速电机,驱动芯片使用恒压恒流桥式2A驱动芯片L298N。L298是ST公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。L298N可接受标准TTL逻辑电平信号VSS,V

5、SS可接4.57 V电压。4脚VS接电源电压,VS电压范围VIH为2.546 V。输出电流可达2.5 A,可驱动电感性负载。L298驱动电路如图3.6:图3.6 电机驱动电路 L298N电机驱动逻辑控制表1:ENA 串口中断定时器中断yes语音中断服务超声波开启输出运动状态计算障碍物距离yes显示LCD1602no40m距离小于结束yesno小车处于运动中转弯IN1 IN2 运转状态 0 X 初始化X 停止 1 正转 反转 1 中断发生1 no 电机驱动逻辑控制表1 L298N 口高低电平变化,可以方便根据电机驱动逻辑功能表,通过改变单片机IO 实现小车前进、后退、左转、右转、停止。 LCD1

6、602液晶显示 3.5 216(列即是工业字符型液晶,能够同时显示LCD160216x0232个字符。字符型液晶它是一种专门用来显示字母、数字、符号等1602行)液晶也叫1602等点阵字符位组成,每个点阵字符5X11或者的点阵型液晶模块它有若干个5X7每位之间有一个点距的间隔每行之间也有间隔起到了字位都可以显示一个字符。 符间距和行间距的作用,正因为如此所以他不能显示图形。时读RS其中为寄存器选择端,高位时是数据寄存器,低位时是指令寄存器;RW E为使能控制端。写信号线,高位时是读,低位时是写;液晶实现。当超声波检测到前方障碍超声波避障的距离显示采用 LCD1602 物在安全距离内(40cm)

7、,单片机驱使小车自动转弯,并将超声波测得的障碍物 :3.7的距离送到液晶并显示出来。液晶与单片机的电路图如图图3.7 液晶电路图 3.6 电源与稳压电路 由于小车电机的驱动电压一般选择8V,单片机的电压为5V,要实现小车供电和续航,采用18650大容量可充电锂电池,锂电池可提供12V供电, 为了不影响驱动电机的供电电源和单片机供电电源产生信号干扰,设计中加入了可调降压模块,使12V18650锂电池电压调至8V后供给直流减速电机,使12V18650锂电池经7805稳压至5V后供给STC单片机、L298N电机驱动芯片、基于LD3320 :3.8的稳压和电源电路如图L7805 的语音单元和超声波等使

8、用,图3.8 L7805稳压和电源电路 3.7 系统整体原理图与PCB主控图 系统整体原理图与PCB主控图如图3.9: 1()系统整体原理图 (2)PCB主控图 图3.9 (1)系统整体原理图 (2)PCB主控图 四、 软件设计 4.1 系统总体软件设计 软件设计部分分为两大类,一类是语音芯片应用程序的开发设计,另一类是单片机下位机的程序编写。小车操作流程是:1,按下开关给单片机和驱动电路供电,系统初始化,语音启动小车;3,通过语音控制小车前进、左转、右转、后退、停止;4,行驶过程如遇障碍物,小车自动转弯避障,同时实时显示障碍物与车的距离。小车操作流程如下图4.1: 开始 图4.1 小车操作流

9、程图 4.2 语音识别开发 图4.2 语音编程界面 语音单元测试 语音单元测试主要是语音识别参数进行测试,测试参数有麦克风灵敏度设置,语音端点检测,语音信号起始确认时间,语音信号结束时间,语音信号最长持续时间。参数测试主要是麦克风灵敏度和语音端点检测。通过控制变量法,在保持麦克风灵敏度一定的前提下,调节端点检测,来观察扬声器音频输出的准确性,反之,保持端点检测值至一定的前提下,调节麦克风灵敏度,以此来找到使语音准确输出的最优麦克风灵敏度参数和语音端点检测值,以保证语音输出的准确性。误差分析:本次作品的相对误差如表2,造成相对误差可从以下几方面分析。其中,环并没有做到在低分贝理想环在做系统测试时

10、,境噪声是造成误差最重要的因素,境下进行测试。其次,本次作品是使用了麦克风,所以,麦克风的灵敏度不高也会造成误差。在语音识别模块,语音断点检测和语音信息相似度也会造成误差。本次作品电源设计设置的语音信息相差太近,会对识别造成难度。最后,说话距离的远近也会造成误差,做测试时并不是每一次都在最佳距离范围内测试,所以会有误差。语速 慢速 发送触发信号中速 较快 声音(dB) 60 120 收到回波60 No 120 距离(m)3.85 2.65 信号3.15 2.25 2.75 1.95 测试次数40 yes计算障碍物距1602显示距离正确识别 次数37 35 离小于40cm35 no前进31 29

11、 27 正确率 92.5% 87.5% yes转弯87.5% 77.5% 72.5% 67.5% 语音模块误差测试2 表 4.3 单片机下位机软件设计定时器中单片机下位机软件设计采用模块化结构,由主程序定时子程序、显示子程序超声波避障子程序电机驱动子程序串口中断子程序、断子程序、避障中断服务子程序完成对超声波探测器产生的外部其中:算法子程序构成。遥控中断服务子程序完成如果超出预定的危险距离就进行避障。中断进行处理,对遥控信号产生的串口中断进行处理,对不同的遥控信号产生相应的控制信号。 :4.3超声波程序设计流程图 避障开始PWM初始化定时器初始化定时时间到, 图4.3 超声波程序流程图 语音串

12、口通信:由于语音单元和单片机通信的方式是串口,为了小车能迅速响应语音单元发送来的信号,单片机使用串口中断的方式,在中断函数里面主要就是处理中断接收到的数据,并控制电机的转向,处理函数见附录二。五、个人总结 本次设计是智能语音控制小车兼有避障功能,主控制芯片采用STC89C52单片机,开发LD3320语音芯片,成功实现了语音控制小车和小车的自动避障的功能。设计内容包括小车硬件、软件、LD3320语音单元编程、调试等。在此期间主要完成的工作包括以下几个方面:(1)设计初期收集电机驱动、单片机等相关资料,对智能小车的实现原理有比 较清晰的了解。(2)确定系统框图,对电源模块、单片机最小系统模块、LD

13、3320语音单元和电机及其驱动电路模块等的实施方案进行比较,确定最终的智能小车控制的设计方案。(3)根据智能小车控制的设计方案画原理图、PCB图,转印PCB图,手工制作PCB板。(4)根据设计电路,购买元器件,焊接电路,完成硬件组装和调试。(5)根据系统要实现前进、后退、左转、右转、停车、避障等功能编写出小车端的软件程序。(6)软硬件分别调试通过后进行整体联合调试,并查找该系统存在的缺陷,并逐步完善。(8)最终小车能够实现前进、后退、左转、右转、避障等功能,达到设计的基本要求。 通过此次实验设计,使我对单片机编程和设计都有了进一步的了解,对软硬件的应用更加熟悉,在电路设计、PCB制板等方面都有

14、所加强。软件设计方面,语音单元的可视化编程,在可视化编程设计方面也还有许多问题需要解决,这些都是自己以后要努力学习的地方。小车虽然基本功能实现,但仍存在一些问题,避障的稳定性并不高,仍需要不断完善。六、致谢 首先要感谢XX老师给了我们这样一个动手实践的机会,让我们有机会可以针对自己的兴趣进行一些自主课外动手实践。本实验设计是在XX老师的指导下和XXXX同学的帮助下修改完成的。在设计过程中,XX老师给予了悉心的指导,最重要的是给我们提供了解决问题的思路和方法,在此,我对XX老师的细心帮助和指 导表示最真挚的感谢!同时感谢所有帮助过我的老师和同学们!参考文献:1 郭天祥,新概念51单片机C语言教程

15、.北京:电子工程出版社,2009.1:98-103 2 符强,任风华.基于手机蓝牙的遥控小车的设计J.广西桂林电子科技大学信息与通信学院;广西桂林电子科技大学电子工程与自动化学院,2010. 3 谭思良等。VisualC+串口通信工程开发实例导航M.人民邮电出版社.203 4 宋戈,黄鹤松,员玉良,蒋海峰.51单片机应用开发范例大全.北京:人民邮电出版社,2010 5 池保忠. 基于单片机的电动车控制系统设计J.机械与电子,2011,(4):51-53. 6 王晓侃 苏全卫 基于单片机控制的多功能电动车自行车智能保护仪的设计与实现 电子设计工程2005,7,107-110. 7 王立欣,靳 刚

16、,程树康.混合电动车用PWM整流器控制方法的研究J.电机与控制学报, 2005, 9(2): 199-202. 8 尹洪波 基于单片机的电动车控制系统设计J.中国新技术新产品,2013,3(上):21-22 附录:附录一 主控板和小车整体实物图:附录二 单片机程序:#include eg52.h unsigned char code net = #include ZTAI JLCM ;*/ /*宏定义unsigned char code forward = ford #define uchar unsigned char ; /宏定义无符号字符型unsigned char code back

17、= back ; unsigned int #define uint unsigned char code left = left ; /宏定义无符号整型 #define LCD_Data P0 unsigned char code right = righ ; 0x80 #define Busy unsigned char code stop = stop ; LCD状态字中的标识Busy/检测unsigned char code Clef = Clef ;unsigned int time=0; */ 引脚定义/*IOunsigned long S=0; sbit LCD_E =P27;b

18、it sbit LCD_RW=P26; flag =0,flagg=0;unsigned char l_disbuff4= 0,0,0,0,; /定义引脚 sbit LCD_RS=P25; /显示缓冲 date; uchar sbit RX =P16;uchar rec,startmove=0; P13 ECH0 /模块超声波模块接uchar x,speed=100,speed2; TX =P17; sbit uchar ii; P14 超声波模块/ 接Trig uchar sudu; sbit IN1=P10;uint mm,mmm; sbit IN2=P11; sbit IN3=P12;

19、sbit IN4=P13; void delayms(unsigned int timer) EN1=P14; sbit / 毫秒延时 EN2=P15; int x,y; /若晶振速度太高可以在这后加for(x=timer;x0;x-) 小的延时 for(y=120;yy-); LCD_E = 0; /延时 LCD_E = 1; 读状态*/ /*unsigned char ReadStatusLCD(void) /*写指令*/ void WriteCommandLCD(unsigned char WCLCD,BuysC) LCD_Data = 0xFF;LCD_RS = 0; /BuysC为0

20、时忽略忙检测 LCD_RW = 1; if (BuysC) ReadStatusLCD();LCD_E = 0; /根据需要检测忙 LCD_E = 1; LCD_Data = WCLCD; LCD_RS = 0; while (LCD_Data & Busy); LCD_RW = 0; /检测忙信号 LCD_E = 0; return(LCD_Data); LCD_E = 0; */ 写数据/* void char WriteDataLCD(unsigned WDLCD) /*初始化*/ void LCDInit(void) /ReadStatusLCD(); 检测忙 LCD_Data = W

21、DLCD; LCD_RS = 1; LCD_Data = 0; WriteCommandLCD(0x38,0); /三次模式设置,不检测忙信号 delayms(5); /当要显示第二行时地址码+0x40; X |= 0x80;WriteCommandLCD(0x38,0); /算出指令码 WriteCommandLCD(X, 0); WriteCommandLCD(0x38,1); /这里不检测忙信号,发送地址码 WriteDataLCD(DData);开始要求每次检, /显示模式设置 测忙信号 WriteCommandLCD(0x08,1); /*按指定位置显示一串字符*/ void Dis

22、playListChar(unsigned char /关闭显示 X, unsigned char Y, unsigned char WriteCommandLCD(0x01,1); code *DData) 显示清屏/ WriteCommandLCD(0x06,1); unsigned char ListLength; /显示光标移动设置 ListLength = 0; WriteCommandLCD(0x0C,1); Y &= 0x1; /显示开及光标设置 X &= 0xF; /限制X不大于15,Y不大于1 while (DDataListLength=0x20) */*按指定位置显示一个

23、字符 char void DisplayOneChar(unsigned char unsigned Y, X, unsigned char /若到达字串尾则退出 if (X = 0xF) DData) Y & /X坐标应小于0xF X & DisplayOneChar(X, Y, DDataListLength); /显示单个字符 1 不能大于,15不能大于限制/XY if (Y) ListLength+; X |= 0x40; X+; 1,l_disbuff1);DisplayOneChar(10, 1,l_disbuff2); void Conut(void) DisplayOneCha

24、r(11, 1,m); time=TH0*256+TL0; if(S=100)|flag=1) IN4=0; ” /超出测量范围显示“- EN1=1; EN2=1; flag=0; DisplayOneChar(7, 1,- delayms(50); IN1=0; DisplayOneChar(8, 1,. DisplayOneChar(9, 1, IN3=0; IN4=1; DisplayOneChar(10, 1, delayms(10); DisplayOneChar(11, 1, EN1=1; EN2=1; else DisplayListChar(1, 1,Clef); delayms(800); l_disbuff0=S_x0010_00/100+0x30; IN2=1; / 是将数字转为0X30ASCII码加上 delayms(10); l_di

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

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