基于PSoC的超声波测距及其语音播报系统设计与实现毕业论文_第1页
基于PSoC的超声波测距及其语音播报系统设计与实现毕业论文_第2页
基于PSoC的超声波测距及其语音播报系统设计与实现毕业论文_第3页
基于PSoC的超声波测距及其语音播报系统设计与实现毕业论文_第4页
基于PSoC的超声波测距及其语音播报系统设计与实现毕业论文_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于PSoC的超声波测距及其语音播报系统设计与实现作者姓名: 张昊天指导教师: 马学文副教授单位名称: 信息科学与工程学院专业名称: 电子信息工程东北大学2021年6月DesignandImplementationofultrasonicmeasurementofdistanceandnumberofvoicereportingbasedonPSOCbyZHANGHaoTianSupervisor:AssociateProfessorMAXuWenNortheasternUniversityJune2021毕业设计〔论文〕任务书毕业设计〔论文〕题目:基于PSoC的超声波测距及其语音播报系统的设计与实现设计(论文)的根本内容:(1)了解PSoC开发板和超声测距模块的根本情况。(2)编写超声测距程序用于测距。(3)编写语音朗读程序用于报数。(4)搭建硬件平台以运行软件程序。毕业设计〔论文〕专题局部:题目:设计或论文专题的根本内容:学生接受毕业设计〔论文〕题目日期第2周指导教师签字:201基于PSoC的超声波测距及其语音报数系统的实现摘要由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比拟迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能到达工业实用的要求。超声波测距的原理是利用超声波在空气中的传播速度为,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。基于以上原因超声波测距主要应用于倒车提醒、建筑工地、工业现场等的距离测量。本文介绍了一种基于srf06超声模块的超声波测距的设计方案,在分析国内外超声波测距开展现状和工作特点的根底上,结合PSOC的特点,实现距离的精确测量,和语音报数,使人机工程更加人性化。系统采用CYPRESS公司的PSOC3为主要开发平台,其最大特点是在其内核周围集成了大量器件,根本不用外接其它器件。本设计中以其自身集成的计数器来对回声信号进行技术进而通过算法确定距离。以其自身集成的DA对数字信号进行处理进而再由自身集成的OPMAP进行放大通过io口输出实时语音信号,通过扬声器进行播放。本系统采用PSOCCRETER软件对程序进行编译。其中不仅包括代码的编译同时也包括根据所用器件而画出的原理图的编译,这也是psoc的一个特点。通过MiniProg3将程序下载到芯片中,进而对系统进行测试。这些工具的使用,使得软件的设计编程和调试工作得到了保证。经过一系列的调试,本系统完成了预定目标。关键词:PSoC超声测距模块扬声器DAOPAMPDesignandImplementationofultrasonicmeasurementofdistanceandnumberofvoicereportingbasedonPSOCAbstractBcauseultrasonic’sdirectionalisstrong,slowenergyconsumption,longdistancepropagationinthemedium,thereforeultrasoundisoftenusedfordistancemeasurement.Forexampletherangefinderandlevelmeasurementandsoondependnotheultrasonic.Ultrasonictestingisoftenrapid,convenient,simplecalculationandeasytodoreal-timecontrol,Andthemeasurementaccuracytoachieveindustrialandpracticalrequirements.Theultrasonicdistancemeasurementprincipleistheuseofultrasonicpropagationvelocityintheairisknown,measuringthesoundwavesencounterobstaclesreflectedbackafterlaunch,accordingtothetransmittingandreceivingtimedifferencetocalculatetheactualdistancetothelaunchpointtotheobstacles.Thus,theprincipleofultrasonicrangingandradarprincipleisthesame.Basedontheabovereasonsultrasonicdistancemeasurementusedinreversingreminder,constructionsites,industrialsites,suchasdistancemeasurement.ThisarticledescribesadesignbasedonSrF06ultrasoundmodule.Accuratemeasurementofdistance,andthenumberofvoicereportingonthebasisofanalysisofthedevelopmentstatusandworkcharacteristicsofultrasonicdistancemeasurementathomeandabroad,combinedwiththecharacteristicsofPSOCtomakesprojectofmorehumane.ThesystemusesthetheCYPRESScompanyPSOC3asthemaindevelopmentplatform,itsmostimportantfeatureisintegratedinitscoresurroundedbyalargenumberofdevices,andalmostnoneedotherexternaldevices..Thedesignbyitsownintegratedcountertocountthelengthofechosignalandthenbythealgorithmtodeterminethedistance.OwnintegrationofDAonthedigitalsignalprocessingwhichcanthenbeamplifiedbyitsownOPMAPzoomandreal-timevoicesignalbyioportoutput.ThesystemusesthePSOCCRETERsoftwaretocompiletheprogram.Whichincludesnotonlythecompilationofthecodealsoincludesthecompilationofschematic.Thisisalsoafeatureofpsoc.ByMiniProg3,theprogramdownloadedtothechip,andthentestthesystem.Thesoftwareprogramminganddebuggingofthedesignworkhasbeenensuredbytheuseofthesetools.Afteraseriesofdebugging,thesystemtoachievethetarget.Keywords:PSOCultrasoundmodulespeakerDAOPAMP目录毕业设计〔论文〕任务书 〔5〕I2C总线模块:I2C外设提供了同步两线接口用来与PSoC设备进行连接,I2C总线与Philip的I2C标准版本兼容。额外的I2C接口能通过使用UDB进行例化。图2.9I2C总线模块图(6)CAN总线模块:CAN外设是一个全功能的控制器局域网络〔ControllerAreaNetwork,CAN〕,最大通信波特率为1Mbps。CAN控制器支持CAN和标准,并且和ISO-11898-1标准一致。CAN总线最初用于汽车领域的应用,主要集中在高级的缺陷检测。这保证了低本钱的高可靠性的应用。图2.10CAN总线模块图(7)USB总线模块:PSoCUSB作为一个USB设备和一个主机进行通信。USB模块作为PSoC内的一个固定功能的设备。只支持全速通信〔12Mbps〕,并且和协议兼容。USB设备设计成即插即用,也支持热插拔。USB模块图〔8〕通用数字块UDB:UDB是由可编程逻辑PLD、结构逻辑〔数据通道〕和灵活的布线资源来提供在这些元件、I/O连接和其它外设之间的互联。比方最简单的功能是定时器、计数器、CRC生成器、PWM、死区生成器,通信功能包括UART、SPI、I2C。在可利用资源范围内,PLD块及其连接性,提供了全特性的通用可编程逻辑。图2.12UDB模块结构图〔9〕模拟前端模块:模拟前端模块为PSoC3提供了强大的模拟可编程能力,也是PSoC3比其它MCU功能更加强大的一个具体的表达。PSoC3的模拟前端模块的使用提高了系统可靠性和系统设计本钱。〔10〕ADC和DAC模块:PSoC3包含一个Δ-ΣADC。这个ADC提供了差分输入,高分辨率和良好的线性度,该ADC可用于声音信号处理和测量方面的应用。Δ-Σ内部功能原理图在PSoC中的ADC模块的具体结构包括:输入放大器;提供高输入阻抗和用户可选择的增益。3阶Δ-Σ调制器抽取器抽取器包含一个4阶的CIC抽取滤波器和后端处理单元。PSoC提供了4个数-模转换器DAC。每个DAC为8位,能配置成电压或电流输出。DAC支持Capsense,电源管理和波形生成等。图2.14DAC模块内部结构图。 其特点主要包括:可调255级步长的电压或电流输出;可编程的台阶大小〔取决于范围〕;8位标定用于校正25%的增益误差;电流输出模式下,源〔source〕和吸收(sink)选项;电流模式下,8Msps的转换率电压模式下1Mbps的转换率。单调性〔11〕电容感应模块:CapSense〔电容感应〕系统提供了丰富和高效的手段来测量电容量,比方触摸感应按键,滑动块,接近度检测。CapSense系统使用系统资源配置,包括一些用于CapSense硬件功能。图2.15电容感应模块结构图〔12〕数字滤波器模块:数字滤波器模块〔DigitalFilterBlock,DFB〕有一个专用的乘法器和累加器在一个时钟周期内计算24x24位的乘法和48位的累加算法。这样就能直接将直接形式的有限脉冲响应滤波器〔FiniteImpulseResponse,FIR〕,因此一个时钟就可以计算一个FIR结果。图2.16数字滤波模块结构图PSoCCreator相关知识介绍PSoCCreator的简介PSoCCreator2.0〔以下简称PSoCCreator〕是最先进的集成开发环境〔IntegratedDevelopmentEnvironment,IDE,带有创新性的图形设计编辑器,构成独特而强大的硬件/软件协同设计环境。图形化的设计入口简化了配置一个特殊元件的任务。设计者可以从元件库内选择所要求的功能,并且将其放置在设计中。所有的参数化元件都有一个编辑器对话框,允许设计者根据需要对功能进行裁减〔定制〕。PSoCCreator软件平台自动的配置和布线I/O到所选择的引脚,并且为给定的应用产生应用程序接口函数API。修改PSoC的配置是非常简单的,比方添加一个新元件,设置它的参数和重新建立(rebuilding)工程等。在开发的任何阶段,设计人员都能很自由的修改硬件配置,甚至是目标处理器。设计者可以将应用修改到新的目标上〔硬件和软件〕,甚至是从8位平台移植到32位平台上〔只需要选择新的设备,并进行重新的建立〕。设计者也可以修改C编译器和进行性能评估。2.4.2PSoCCreatorPSoCCreator软件平台自动的配置和布线I/O到所选择的引脚,并且为给定的应用产生应用程序接口函数API。修改PSoC的配置是非常简单的,比方添加一个新元件,设置它的参数和重新建立(rebuilding)工程等。在开发的任何阶段,设计人员都能很自由的修改硬件配置,甚至是目标处理器。设计者可以将应用修改到新的目标上〔硬件和软件〕,甚至是从8位平台移植到32位平台上〔只需要选择新的设备,并进行重新的建立〕。设计者也可以修改C编译器和进行性能评估PSoCCreator软件平台的特点主要有:集成了原理图捕获功能用于设备配置;可供选择的丰富的元件IP核资源;集成了源代码编辑器;内置调试器;支持自定义元件创立〔设计重用〕功能;系统注解〔Annotation〕设计功能;静态时序〔StaticTimingAnlysis,STA〕分析功能;PSoC3编译器-KeilCA51〔无代码大小限制〕;PSoC5编译器-CodeSourcery的SourceryGLite版本PSoCCreator的程序下载与调试1.开发板默认的编程接口是一个基于USB的板上编程接口。当给PSoC3编程时,将USB电缆插到开发板的编程USB连接器J1接口。当使用板上编程器时,不需要外部的12V电源或9V的电池电源。用于编程的USB电源可用于开发板的供电。如果板子已经从其它地方供电的话,插入USB编程接口不会损坏开发板。2.板上的PSoC3芯片也可以通过使用MiniProg3〔CY8CKIT-002〕。当使用MiniProg3编程PSoC3时,使用开发板上的连接器J3。3.用下载电缆连接目标系统和计算机的USB接口〔可选择前面两种方法中其中的一种〕;4.在PSoCCreator主界面下选择Debug->Program,在PSoCCreator输出窗口信息,表示正在编程和编程成功的信息〔第一次使用,需要设置编程环境〕。5.一直等待编程成功为止。在PSoCC主界面主菜单下,选择Debug->Debug选项,翻开调试器主界面。为了观察程序对端口的控制,在工程管理窗口,找到文件。第3章超声波测距方法的设计与实现超声波测距方法的设计与实现.1超声测距模块的概述〔1〕该模块可提供2cm——450cm的非接触式距离感测功能,测距精度可到达3mm,模块包括超声波发生器、接收器和控制电路。〔2〕引脚定义:VCC5V电源GND为地线TRIG触发控制,信号输入ECHO回响信号输出〔3〕电气参数电气参数HY—SRF05超声波模块工作电压DC5V工作电流15mA工作频率40Hz最远射程最近射程2cm测量角度15度输入触发信号10us的TTL脉冲输出回响信号输出TTL电平信号与射程成正比规格尺寸45*20*15mm〔4〕图超声模块时序图〔5〕图3.2实物规格图.2超声模块的工作原理根本工作原理:〔1〕采用IO口TRIG触发测距,给至少10us的高电平信号;〔2〕模块自动发送8个40khz的方波,自动检测是否有信号返回;〔3〕有信号返回,通过IO口ECHO输出一个高电平,高电平持续时间就是超声波发射到返回的时间。3.2PSoC产生触发信号与对超声模块产生回声信号的接收及其处理方法设计IO口产生触发信号与接收回声信号的方法图Pin_1口电路器件图上图为电路原理图中的接受回声信号的IO口Pin_1。调用软件生成的库函数Pin_1_Read〔〕来测试Pin_1口的回声信号是否为高,当是高电平时那么启动计数器来计算时间。下面是该读取端口数据函数的程序:uint8Pin_1_Read(void){return(Pin_1_PS&Pin_1_MASK)>>Pin_1_SHIFT;}用于读取Pin_1口的电平。与之类似的是大于10us的触发信号的生成。图Pin_2电路器件图上图是触发引脚Pin_2电路器件图。产生方法是调取自动生成的库函数Pin_2_Write()函数对管脚进行赋值程序如下:voidPin_2_Write(uint8value){uint8staticBits=Pin_2_DR&~Pin_2_MASK;Pin_2_DR=staticBits|((value<<Pin_2_SHIFT)&Pin_2_MASK);}。用于对Pin_2口进行赋值Pin_2_Write(1);delay_20us();Pin_2_Write(0);使用端口的赋值函数用以产生一段大于10us的高电平以触发超声波的发射。计数器计算时间图计数器及相关器件的电路器件图当检测到回声信号为高电平时启动计数器和时钟,当回声信号变为低电平时,计数器停止并且恢复初始状态。其中需要注意的是复位端口一定要接数字地,clock端口接一个时钟信号。下面是相关的程序:voidClock_1_Start(void){Clock_1_CLKEN|=Clock_1_CLKEN_MASK;}用于开启时钟voidCounter_1_WriteCounter(uint16counter){#if(Counter_1_UsingFixedFunction)CY_SET_REG16(Counter_1_COUNTER_LSB_PTR,(uint16)counter);#elseCY_SET_REG16(Counter_1_COUNTER_LSB_PTR,counter);#endif}用于对计数器赋初值,赋值内容由计数器的工作方式决定。voidCounter_1_Start(void){if(Counter_1_initVar==0u){Counter_1_Init();Counter_1_initVar=1u;}Counter_1_Enable();}if(Pin_1_Read()==1){if(cflag==0){Counter_1_Start();Counter_1_WriteCounter(65535);cflag=1;}if(distance_data>65535)break;if(StartFlag==0){StartFlag=1;outcome=0;distance_data=outcome;}}else{if(StartFlag==1){outcome=65535-Counter_1_ReadCounter();distance_data=outcome;distance_data/=2;distance_data/=58;本段程序的功能是当检测到高电平时,如果计数器标志位为0那么开启计数器为1那么跳过,这保证了每检测一次回波只启动一次计数器保证了计数的正确性。当检测的数据超过规定范围是那么跳出程序。当有回声信号返回时如果处理标志位为0,那么标志位设为1,并且清零数据存放器。当处理标志位为1时对数据进行处理,由于计数器是倒序的那么真实数据为初值与计数器所显示的值的差。由于计数器的时钟是2MHZ的所以真实时间为除2后的结果根据微秒和厘米之间的转化关系可以知道其为约58倍的关系,由此可知以厘米为单位的最终数据。3.3PSoC对超声模块产生信号的接收与处理的实现图PSoC的软件硬件开发设计流程图.1系统开发运行环境及必要工具硬件配置:IntelCOREi7CPUGHz内存4G硬盘750G操作系统:MicrosoftWindows7家庭高级版程序开发工具:PSoCcreator2.0PSoCcreator2.0是整个系统能够运行的根底,PSoCCreator2.0〔以下简称PSoCCreator〕是最先进的集成开发环境〔IntegratedDevelopmentEnvironment,IDE〕,带有创新性的图形设计编辑器,构成独特而强大的硬件/软件协同设计环境。图形化的设计入口简化了配置一个特殊元件的任务。设计者可以从元件库内选择所要求的功能,并且将其放置在设计中。所有的参数化元件都有一个编辑器对话框,允许设计者根据需要对功能进行裁减。.2IO口的设置IO口的设置是在原理图局部完成的,也就是编程的硬件局部。从已有的器件库中调用数字端口双击图标就可以进行设置了。下面是Pin_1口IO的设置界面。图IO配置界面图Type栏中设置为DigitalInput模式其它选项均不选择。图IO配置界面图General栏中DriveMode设置为StrongDrive,InitialState设置为Low图IO配置界面图Input栏中Threshold设置为CMOS,并且不设置中断,之后开启输入时能。Pin_2口的设置方法与Pin_1口的设置方法是类似的,但是在具体的步骤上有很大的不同:Type栏中选择digitaloutputGeneral栏中Drivemode选择strongDrive模式初始电平设置为低。下列图为最大不同之处在output栏slewrate设置为FastDrivelevel设置为FastDriveLevel设置为Vddio

current设置为4mAsource,8mAsink图IO配置界面图3.3计数器用于计算从激发到回音的时间,准确的说是超声模块所产生的高电平的时间。这里我调用了元件库中的计数器,并对其进行配置。配置界面如下图图3.11计数器配置界面图Resolution设置为16-BitImplementation设置为Max为65535图3.12计数器配置界面图上图是计数器所用时钟设置图这里把时钟选为新设置的时钟频率设置为2MHZ以上是本次设计中的计数器配置方案,经过验证此计数器能正常工作,满足系统需求。超声波测距的测试3.超声测距模块及PSoC的操作与运行结果按照下列图的管脚配制方法连接管脚图管脚配置图连接完成后,电脑与仿真器,仿真器与开发板,之后接通电源。之后按Buildcsb2进行仿真,仿真结果如下图图Build成功显示界面代表仿真成功。之后向芯片中下载程序点击Debug-selectDebugTarget如下图对目标进行选择图下载目标选择界面上图并没有目标,当连接时会出现目标板的型号和名称。下载并运行时会出现下列图所示信息上图代表已经下载运行成功了。图编译成功显示界面3.性能测试手持超声波探头在不同距离不同的外表进行测试,再用米尺进行测量,得到相同的结论,精度为1cm,与设计相符,证明超声波测距局部程序是成功的。在此阶段,有录像可以参考。下面是测试时实物图:图3.17实物测试图此外还有测试的录像视频可以参考。第4章音频播放系统设计与实现4.1音频文件的处理方式〔在这里要声明的是本来应该使用8k的采样平率,但是受制于存储空间的问题这里使用6k的采样平率代替〕首先要介绍用这局部开发的几块软件(1)WinHex是一个专门用来对付各种日常紧急情况的小工具。它可以用来检查和修复各种文件、恢复删除文件、硬盘损坏造成的数据丧失等。同时它还可以让你看到其他程序隐藏起来的文件和数据。总体来说是一款非常不错的16进制编辑器。在本课题中可以用来直接对WAV文件里面的信息进行提取,而且可以再编辑选项里面直接生成符合C语言格式的数组文件,非常的方便,节约了大量时间。〔2)WaveCN是一款32位免费音频编辑软件,可运行于Windows98/2000/XP等版本的操作系统,用户可以通过本软件对音频数据进行辑修改和创造特殊效果。WaveCN是免费的录音软件,支持音频编辑和音频效果处理,主要功能特性包括:强大而灵活的录音功能;支持WAV、Ogg、MP3、WMA等文件格式;可对音频数据进行剪切、复制、粘贴等十数种编辑操作;多种音频处理特效;在本课题中这块软件是至关重要的,由于我是用的是win7系统,录音机的生成文件不再是以前的WAV文件而是WMA这种格式,所以我就学要进行格式转换。而且需要对很多如采样率的参数进行设定并生成WAV文件,这款软件在这方面发挥了不可替代的作用。而且操作简单,很容易上手。(3)MATLAB是矩阵实验室〔MatrixLaboratory〕的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大局部。它将数值分析、矩阵计算、科学数据可视化以及非线现行动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言〔如C、Fortran〕的编辑模式,代表了当今国际科学计算软件的先进水平。本课题中matlab是用来处理加工音频数组的重要工具,没有他对元素较多的数组进行处理是很困难的。下面是音频文件的获取处理流程:使用录音机录制0-9十百共十二个声音文件,录制格式为WMA格式再使用WaveCN软件对文件进行处理,主要是进行截取有用的片段,并且设置采样率和转换为WAV文件具体过程如下:〔1〕图WaveCN软件界面点击文件-翻开这里以0.WAV为例子翻开之后如图〔2〕〔2〕图解码界面再点击解码会出现以下界面〔3〕图源文件解码波形图这是声音文件的解码波形。现在我们要对该文件进行处理都得到8位6000采样率单声道的声音文件,下列图为设置转换方式的界面和设置方法。图4.4转化配置界面转换之后得到下面的波形图4.5转化后波形图在对上面波形进行截取,到达时间和采样点数较为适宜的波形段。进行截取后得到下列图图4.6截取后波形图最后把这个有效的文件另存为WAV文件。经过上述处理就可以得到有用的WAV文件。以便完成下面的工作。下一步工作是把上面的得到WAV文件用WinHex软件进行处理得到C语言编程中用到的音频数组数据。具体过程如下:WinHex的界面之后翻开之前得到WAV文件的到了文件的内部数据如下图:图4.8WAV内部数据之后就要把得到的数据转化为C语言所识别的数组形式。选中要复制的数据右键点击选择edit->copyblock->csource之后新建立一个txt文档就可以复制得到想要的数组在经过一些必要的处理如把数据固化在flash里面所用到的关键字const和code就可以得到最终我们想要的数组形式如下列图所示:图4.9c语言数组数据上面只是其中一个音频文件的处理过程,除此之外还有11个文件进行类似处理就可以了,得到10个阿拉伯数字和百,十的发音,以便在编写程序时进行调用。4.2相关器件的介绍及设置方式音频局部主要使用了8位DAC和运放两种器件,用法是在电路图中进行调用并且进行配置,以让其正常工作,到达预定效果。如下列图所示:图4.10音频局部电路器件图这里的DAC和Opamp都是元件库里存在的,直接调用即可。下面是原件配置图:图4.11DAC配置界面Speed设置为slowDataSource选择CPUorDMA选项StrobeMode设置为RegisterWrite以上是本次课题中DAC的配置方法。图4.12运放配置界面Mode设置为FollowerPower设置为HighPower以上是放大器的配置方法,可以使播放的声音更清晰可辨。如果不适用放大器,扬声器播放的声音会很小,不容易进行区分。需要注意的是在音频的输出端口的选择上选择了OpampOut型的端口,这样的选择有助于对声音的放大。音频播放的实现与性能测试音频的播放主要依靠算法中对音频数组的调用,并调用库函数把数据写到DAC中去。要读出声音并不难,关键是在算法中完成读数细节的正确,不会出现一些我们不常见的读法。下面是该算法相关的一些程序段:voidOpamp_1_Start(void){if(Opamp_1_initVar==0u){Opamp_1_initVar=1u;Opamp_1_Init();}}本段程序作为开启运放之用,其中Opamp_1_Enable()函数在头文件中已经声明过了这里直接调用。voidVDAC8_1_Start(void){if(VDAC8_1_initVar==0){VDAC8_1_Init();VDAC8_1_initVar=1;}VDAC8_1_Enable();VDAC8_1_SetValue(VDAC8_1_DEFAULT_DATA);}与上一个功能类似,为开启DAC之用。voidVDAC8_1_SetValue(uint8value){#if(CY_PSOC5_ES1)VDAC8_1_intrStatus=CyEnterCriticalSection();#endifVDAC8_1_Data=value;#if(CY_PSOC3_ES2||CY_PSOC5_ES1)VDAC8_1_Data=value;#endif#if(CY_PSOC5_ES1)CyExitCriticalSection(VDAC8_1_intrStatus);#endif}本段程序作为DAC读入数据之用,把八位数据输入到DAC中去。a=distance_data/100;b=distance_data%100;c=b/10;d=b%10;作用是把得到的距离数据的百位十位个位别离,并且分别付给3个变量。switch(a) { case0:;break; case1:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_1[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case2:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_2[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case3:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_3[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case4:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_4[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case5:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_5[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case6:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_6[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case7:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_7[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case8:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_8[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case9:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_9[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; }以上只是程序的一局部,由于篇幅较大,不在这里一一写出了,只写了a变量情况c变量和d变量的情况与之类似。其大致过程是将距离数据的百位十位个位分别赋值给3个变量在运用switch语句对各种情况进行选择,并夹带有十和百的发音,进而可以很好的读出数值。比拟特殊的是在为0的时候,当0在不同的位置,或者前面的为是否存在不同时,0位读法不同或不读。经过测试读音还是十分清晰的,而且读音的正确性也是有所保障的。音频文件的频谱分析本局部使用的是8000采样8位单声道的音频文件,与之前的不同,因为这里论述的过程不存在存储空间不够的情况。这局部的操作组要依靠matlab软件进行完成。和以前一样首先还是进行录音,之后对所录声音进行处理,使他变成8000采样8位单声道的wav文件。之后把它复制到matlab的工作文件夹中。下面开始进行matlab的操作,程序如下:>>x=wavread('00.wav');>>t=(0:length(x)-1)/8000;>>figure(1)>>plot(t,x)主要步骤是:读取想要处理的声音文件;计算时间轴的长度和刻度;在figure1中画出时域波形。图4.13时域波形图之后编写下面的程序来得到其频域波形:>>y=fft(x,2048);>>figure(2)>>fs=8000;>>f=fs*(0:1023)/2048;>>plot(f,abs(y(1:1024)))主要步骤是:对WAV文件数据进行2048个点的快速福利叶变换得到数据存储;计算频率轴的长度和刻度;画出频域波形图。图4.14频域波形图由抽样定理可知,在8000抽样的情况下,4000hz以上的信号是不会显示的,图上显示的都是频率在4000hz以下的信号。通过对音频文件进行的频谱分析,可以使我们更好地了解声音的特性,以及不同的处理方法对声音的影响,如采样频率对声音信号的影响。第5章结论本文对超声波测距和语音报数进行了研究,进而对超声波的原理用途以及各种音频文件的特点进行了细致的研究。之后根据PSOC的自身特点对要求的系统进行了设计.由于硬件平台的资源十分丰富,除去特殊的外设,其他的很多模拟器件在原件库中都能找到,并且在程序开发时,也是软件与硬件的协同设计,使效率提高很多,而且性能也十分出色。通过测试,发现本文提出的超声波测距并伴随语音报数的功能是可以实现的并且效果是很理想的。通过与障碍物距离的变化,LCD上显示数字也随之改变,读音也随之改变,因此,本次设计是成功的。另外,本文的研究的方法只是测量距离,但是超声波类似的用法还有很多,如水位的测量等,所以本次课题的设计对以后相关的学习也有很好的借鉴意义。特别值得一提是PSOC以及他的开发工具PSOCCREATOR,在本次课题之前我对他十分陌生,并不是十分了解他的情况,通过这次学习我对他有了初步的认识,但是这次用到的只是它功能的一小局部。我觉得他和以前遇到过的任何开发平台都很不同,让我对以系统设计的方法有了很多新的认识但是,通过测试结果,也可以看出这种测距方法所存在的缺乏。比方精度不是很精确,分辨率只有厘米计级。还有就是测试结果有时会欠缺平稳,这也是需要改良的地方。总之通过这次毕业设计学到很多东西,对自己有了更加全面和深入的了解。参考文献何宾.可编程片上系统PSoC设计指南[M].北京:化学工业出版社,2021.何宾.8051偏上可编程系统原理及应用[M].北京:化学工业出版社,2021.薛定宇,陈阳泉.高等应用数学问题的MATLAB求解〔第2版〕[M].北京:清华大学出版社,.胡萍.超声波测距仪的研制[J].计算机与现代化,2003,7(10):21~23.时德刚,刘哗.超声波测距的研究[J].计算机测量与控制,2002,9(10):31~33.苏长赞.红外线与超声波遥控[M].北京:.张谦琳.超声波检测原理和方法[M]..樊昌元,丁义元.高精度测距雷达研究[J].电子测量与仪器学报,2000,9(8):35~37.苏伟,巩壁建.超声波测距误差分析[J].传感器技术,2004,3(4):17~20.何希才.传感器技术及应用[M].北京:北京航空航天大学出版社,2005.余成波.传感器与自动检测技术[M].北京:高等教育出版社,2004.刘宪坤.数字音响技术[M].北京:人民邮电出版社,1992.林达悃.录音声学[M].北京:中国电影出版社,1995.程勇,童乃文.音响技术与[M]设备.浙江:浙江大学出版社,1993.韩宪柱.声音制作根底.北京:中国播送电影出版社,2001.韩宪柱,刘日.声音素材拾取与采集[M].北京:中国播送电影出版社,2002.J.C.惠特克.数字音频技术宝典[M].张雪英,刘建霞译.北京:科学出版社,2004.郑秋生.平安技术及应用[M].北京:电子工业出版社,2021:209-219.罗.伊.拉恩斯坦.当代录音技术[M].李

勋,林作坚译.北京:中国电影出版社,1983.黄

峥.浅谈数字音频格式[J].北京:?音响技术?,2002年4期.致谢历时三个多月的毕业设计已经根本上结束。在我即将开始的研究生阶段的导师李晶皎教授和本次毕业设计的指导教师马学文副教授的认真督导下,在实验室荣超群学长王泽坤同学方志强同学和岳成海同学通过这次毕业设计,我增长了很多认识,也了解到了许多实际性的问题,同时我也意识到了自己在本科的理论学习中存在的漏洞和技能上的缺乏。毕业设计过程中,我回忆了以前学过的相关知识,查阅了大量的超声波测距和音频处理方面的文献,学到了不少新的内容,了解了这个领域的现状和开展前景,也体会到了这门学科的意义和魅力。就我个人而言,毕业设计的过程给我的巨大收获还包括编程能力的提高。我从一个对从事的专业都不甚明晰的学生开始逐渐的掌握系统开发的思维和脉络。学习了使用PSOC为硬件平台,以C语言为编程语言的一整套系统开发模式。另外,经历了毕业设计的全过程,也让我了解了研究开发一个工程的整体流程,这为我以后的进一步学习深造打下了的根底,指引了方向。这个过程充满了艰辛也充满了喜悦,在此,再次感谢所有在毕业设计过程中给予我支持和帮助的人。大学四年的学习生活随着毕业设计的结束也即将结束,但这也将是人生的另一个起点。学无止境,还有很多问题需要我去研究,去探索;人无完人,还有许多自身的缺乏需要我去完善,去提高。因此,在以后的学习生活中,我将继努力,不怕困难,勇于接受新事物,敢于面对新挑战。二十几年的光阴已匆匆流过,值得我感谢的人实在很多,揣着一份份沉甸甸的情谊,我更要勇敢的去走,去闯,去谱写我未来的人生路。附录以下是本次系统设计的主程序#include<device.h>#include<absacc.h>#include<yinpin.h>#defineLCD_ROWS2u#defineLCD_COLUMNS16uuint16outcome,i,l;uint8abitStartFlag;bitcflag;voiddelay_20ms(){uint32ct;for(ct=0;ct<50000;ct++);}voiddelay_20us(){uint16bt;for(bt=0;bt<4;bt++);}voidmain(void){uint16distance_data;Pin_2_Write(0); Clock_1_Start();LCD_Start(); Opamp_1_Start();VDAC8_1_Start();while(1) {cflag=0; StartFlag=0;outcome=0;distance_data=0; while(1){Pin_2_Write(1);delay_20us();Pin_2_Write(0); while(1){if(Pin_1_Read()==1){if(cflag==0){Counter_1_Start();Counter_1_WriteCounter(65535);cflag=1;}if(distance_data>65535)break;if(StartFlag==0){StartFlag=1;outcome=0;distance_data=outcome;}}else{if(StartFlag==1){outcome=65535-Counter_1_ReadCounter();distance_data=outcome;distance_data/=2;distance_data/=58;a=distance_data/100; b=distance_data%100; c=b/10; d=b%10; LCD_ClearDisplay();LCD_Position(0u,0u); LCD_PrintNumber(distance_data); LCD_Position(5u,0u); LCD_PrintString("CM"); switch(a) { case0:;break; case1:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_1[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case2:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_2[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case3:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_3[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case4:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_4[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case5:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_5[i]); for(l=0;l<28;l++) ;} for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_bai[i]); for(l=0;l<28;l++) ;} ;break; case6:for(i=0;i<2377;i++) { VDAC8_1_SetValue(WAV_6[i]); for(l=0;l<28;l++) ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论