音频控制与分析_第1页
音频控制与分析_第2页
音频控制与分析_第3页
音频控制与分析_第4页
音频控制与分析_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、燕山大学课 程 设 计 说 明 书题目:音频控制与分析 学院(系): 电气工程学院 年级专业:10级仪表2班 学 号: 学生姓名: 指导教师: 教师职称: 教授 讲师 目录第一章 摘要2第二章 系统总体设计方案 3第三章信号处理模块基本原理43.1单片机与matlab串口的连接43.1. l 建立串口对象函数43.1. 2 串口读写操作函数43.1.3 打开、关闭和清除串口对象函数53.2快速傅里叶变换5第四章MATLAB软件实现74.1MATLAB简介74.2MATLAB的基本功能74.3软件设计流程84.4 GUI界面设计10第五章系统整体调试结果及说明11第六章:心得体会12 程序清单1

2、3参考文16第一章 摘要信号是传递信息的函数,按信号特点的不同,信号可表示成一个或几个独立变量的函数。例如,图像信号就是空间位置(二元变量)的亮度函数。一维变量可以是时间,也可以是其他参量,习惯上将其看成时间。信号有以下几种:(1)连续时间信号:在连续时间范围内定义的信号,但信号的幅值可以是连续数值,也可以是离散数值。当幅值为连续这一特点情况下又常称为模拟信号。实际上连续时间信号与模拟信号常常通用,用以说明同一信号。(2)离时间信号:时间为离散变量的信号,即独立变量时间被量化了。而幅度仍是连续变化的。(3)数字信号:时间离散而幅度量化的信号。音频信号是基于时间轴上的一维数字信号,在信号分析中,

3、频域往往包含了更多的信息。对于频域来说,大概有8种波形可以让我们分析:矩形方波,锯齿波,梯形波,临界阻尼指数脉冲波形,三角波,余旋波,余旋平方波,高斯波。对于各种波形,我们都可以用一种方法来分析,就是傅立叶变换:将时域的波形转化到频域来分析。MATLAB软件在数字信号处理上发挥了相当大的优势。我们这次实验采集到的波形是脉冲波形,运用MATLAB可以完成了对音频信号的频谱分析,通过fft变换,得出了语音信号的频谱图。第二章:系统总体设计方案与流程图我们组做的是音频的控制与分析,首先要做的就是控制单片机实现信号输出,驱动蜂鸣器发声,然后通过串行口采集信号发送给PC机,接收信号后用MATLAB进行信

4、号的采集与分析处理。总体方案流程图开始 实验扩展:GUI界面显示 A机运行程序产生脉冲信号数码管显示分析数据结果驱动蜂鸣器发声串行口采集脉冲信号声 任务结束B机发出接收信号程序,接收脉冲信号用MATL;AB进行信号分析处理任务结束GUI界面显示第三章 信号处理模块基本原理3.1单片机与matlab串口的连接MATLAB 的Instrument Controi TooiboX 提供了MATLAB 与仪器仪表通信的功能,它支持GPIB( 通用接口总线)、VISA、TCP/ IP、UDP(用户数据报协议)、RS-232 等多个协议,具有同步和异步读写功能以及事件处理和回调操作功能,可读写和记录二进制

5、和ASCII 文本数据。工具箱里有多个函数,以下仅介绍与串口有关的主要函数3.1. l 建立串口对象函数格式:obj = seriai( port)和obj = seriai( port,PropertyName,PropertyVaiue,. . . )参数:port 为端口的名字,该参数是必须的,一般为 coml和com2;PropertyName 为属性名,PropertyVaiue 为属性值。与串口有关的属性约有38 个,最常用的属性:BaudRate( 波特率)、DataBits(数据位)、Parity( 校验方式)、StopBits( 停止位)、Terminator(终止符)。3.

6、1. 2 串口读写操作函数该类函数有8 个,本文使用到的函数:fwrite( obj,A, precision,mode)或fwrite( obj,A),以二进制方式向串口发送数据;A = fread( obj,size, precision)或 A,count,msg= fread(. . . ),以二进制方式读串口;A = fscanf ( obj, format,size)或A,count,msg= fscanf(. . . ),以指定数据格式读串口;readasync(obj)或readasync( obj,size),以异步方式读串口;stopasync(obj),停止异步读写操作。

7、以上函数中,obj 为串口对象,mode定义为同步或异步读写方式,precision 定义数据精度,size 为字符或数据数。3.1.3 打开、关闭和清除串口对象函数主要包括:fopen(obj),打开串口对象,即连接两通讯设备;fciose(obj),关闭串口对象;freeseriai 或freeseriai( port)或freeseria(i obj),释放所有或指定的串口;deiete(obj),清除串口对象;ciear (obj),从MATLAB 中清除对象。 以下为串口初始化:g = serial(com1) ;g.InputBufferSize= 2400;g.timeout=

8、6;g.BaudRate= 115200;g.Parity=none;g.StopBits= 1;g.Terminator= LF;g.FlowControl= hardware;fopen(g); %打开串口设备对象sout= fread (g, 33, uint8) %接收单片机发送的33个数据(8位),并存入out 数组中fclose(g) ; %释放串口设备对象delete(g) ;clear g;当计算出数据A时,需要经过串口发送,串口初始化和上边一样,写入的命令fwrite(g,A)。3.2快速傅里叶变换数字信号的傅里叶变换,通常采用离散傅里叶变换(DFT)方法。DFT 存在的不足

9、是计算量太大,很难进行实时处理。计算一个N 点的DFT ,一般需要次复数乘法和N(N-1)次复数加法运算.因此,当N较大或要求对信号进行实时处理时,往往难以实现所需的运算速度。1965年,J.W.Cooly和J.W.Tukey发现了DFT的一种快速算法,经其他学者进一步改进, 很快形成了一套高效运算方法,这就是现在通用的快速傅里叶变换, 简称FFT( The Fast Fourier Transform)。快速傅里叶变换的实质是利用式(1)中的权函数的对称性和周期性,把N点DFT进行一系列分解和组合,使整个DFT的计算过程变成一系列叠代运算过程,使DFT的运算量大大简化,为DFT及数字信号的实

10、时处理和应用创造了良好的条件。快速傅里叶变换算法如下:X(n)=K=0N=1x0(k)enkN n=0,1,2N-1 (1)第四章MATLAB软件实现4.1 MATLAB简介 MATLAB是“Matrix Laboratory”的缩写,意为“矩阵实验室”,是当今美国很流行的科学计算软件信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用在许多诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其相应的计算问题自己去编写大量的繁复的计算程序,不仅会消耗大量的时间和精力,减缓工作进程,而且往往质量不高美国Mathwork软件公司推出的MATLAB软件就是为了给人们

11、提供一个方便的数值计算平台而设计的MATLAB命令和数学中的符号、公式非常接近,可读性强,容易掌握,还可利用它所提供的编程语言进行编程完成特定的工作除基本部分外,MATLAB还根据各专门领域中的特殊需要提供了许多可选的工具箱,如应用于自动控制领域的Control System工具箱和神经网络中Neural Network工具箱等。4.2 MATLAB的基本功能MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程

12、设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+ ,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外

13、许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。4.3软件设计流程 1. 下面是音频信号在MATLAB中的语言程序,它实现了音频的读入与打开,并绘出了音频信号时域波形functionpushbutton1_Callback(hObject,eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and u

14、ser data (see GUIDATA)global dataglobal fs%while (1)ss=serial(com1);ss.BaudRate=2400;ss.DataBits=8;ss.Parity=none;ss.StopBits=1;ss.TimeOut=10;ss.DataTerminalReady=off;ss.RequestToSend=off;ss.FlowControl=none;ss.InputBufferSize=1000;fopen(ss);b=max(data);c=min(data);data=fread(ss,258,uint8);set(gcf,C

15、urrentAxes,handles.axes1);set(handles.edit2,string,num2str(b);set(handles.edit3,string,num2str(c);plot(data);fclose(ss);在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。函数FFT用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT且和x相同长度;若x为一矩阵,则y是对矩阵的每一列向量进行FFT。函数FFT的另一种调用格式为y=fft(x,N),式中,x,y意义

16、同前,N为正整数。函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x的长度大于N,则函数截短x使之长度为N;若x 为矩阵,按相同方法对x进行处理。function frequency_domain(handles,data,fs)nfft= 2nextpow2(length(data);%找出大于y的个数的最大的2的指数值ff=fs*(0:nfft/2-1)/nfft;%FFT变换后对应的频率的序列fftx=fft(data,nfft);%求FFT变换set(gcf,CurrentAxes,handles.axes2);plot(ff,abs(fftx(1:nfft

17、/2)*2/nfft);xlabel(Frequency);ylabel(Amplitude);a=max(ff);set(handles.edit1,string,num2str(a);end4.4 GUI界面设计1、图形用户界面的打开和初步设计2、主界面的激活和 回调函数的生成3、子界面的激活和回调函数的生成第五章:系统整体调试结果及说明通过单片机部分与数字信号处理部分相结合,我们进行了两台电脑加一个实验箱的联机实验,首先运行A机程序后,控制实验箱蜂鸣器发出音乐,然后B机通过串行口接受采集到数据,然后运用matlbe进行信号分析处理,最后在GUI界面上显示结果。每按一次采集按钮,系统就会从

18、单片机上采样一次,然后对采样的信号进行时域和频域的分析,把分析结果显示在窗口上,有时域频频域波形图以及在这个采样段内的最大值和最小值第一次采样 第二次采样 第六章:心得体会我们组五个人齐心协力完成了为时十天的课设,通过单片机和数字信号处理相结合最后实现了音频控制与处理,我们五个人各自负责了一部分内容,遇到不明白的地方大家一起积极讨论寻找解决方案,还是搞不懂的,就向研究生学长请教。通过这十天的实践,我学会了不少东西,不仅是专业知识实践方面,还有明白了一个团队合作的重要性。在这次课设中我也遇到了不少困难,最开始我们几个都认为音频控制是要采集我们自然界的声音信号,例如提供一段语音信号。误导了我们的思

19、路,忽视了控制方面。后来经过反复对课设要求的琢磨,最后才确定了我们的思路,应该是由单片机控制产生脉冲信号,由脉冲信号来驱动蜂鸣器发声,最后分析处理这个信号。还遇到的一大障碍就是信号采集方面,一直认为蜂鸣器发声,声音应该是模拟信号,要用到实验箱里的AD转换模块,经过反复对发送信号程序和模数转换程序的整合调试,都不能实现信号采集。最后才找到问题所在,我们需要采集的是脉冲信号,不需要进行模数转换。直接编写串行口通信程序与信号发生程序进行整合,最后能实现采集。然后用MATLAB进行处理分析,最后在GUI界面上显示结果。最后,要感谢课题老师为我们提供的学习资源和帮助,谢谢研究生学长为我们解疑答惑,谢谢我

20、们组的个各成员的照顾和帮助。经过这次课设,我学会了许多新知识;也明白了许多不曾明白的道理,明白了求学应当有严谨的作风,并且更应该有锲而不舍、坚强的韧劲。程序清单: org 0000h sjmp main org 000bh mov th0,r1 mov tl0,r0 cpl p1.7 retimain: mov tmod,#021h mov ie,#82h mov dptr,#tab MOV TH1, #0F3H ; 波特率?2400BPS 12MHz MOV TL1, #0F3H ANL PCON,#07FH ; SMOD 位清零 orl PCON,#80h MOV SCON,#050H ;

21、 串行口工作方式设置 SETB TR1 SETB ES SETB EAloop: clr a movc a,a+dptr mov r1,a inc dptr clr a movc a,a+dptr mov r0,a orl a,r1 jz next0 mov a,r0 anl a,r1 cjne a,#0ffh,next sjmp mainnext: mov th0,r1 mov tl0,r0 setb tr0 sjmp next1next0: clr tr0next1: clr a inc dptr movc a,a+dptr mov r2,aloop1: acall d200c djnz

22、r2,loop1 inc dptr ajmp loopd200c: mov r3,#81hd200b: mov a,#0ffhd200a: dec a jnz d200a mov sbuf,1h dec r3 cjne r3,#00h,d200b rettab: db 0feh,25h,04h,0feh,25h,02h db 0feh,25h,02h,0fdh,80h,04h db 0feh,84h,02h,0feh,84h,02h db 0feh,84h,04h,0feh,25h,04h db 0feh,25h,02h,0feh,84h,02h db 0feh,0c0h,04h,0feh,84h,02h db 0feh,98h,02h,0feh,84h,02h db 0feh,57h,08h,00h,00h,04h db 0ffh,0ffh end参考文献1信号处理原理及应用 谢平 林洪彬 王娜编著 机械工业出版社2 Matlab 通信仿真与应用 刘敏 魏玲编著 国防工业出版社3基于Matlab7.x 的系统分析与设计 楼顺天等编著 西安电子科技大学4基于声卡和MATLAB的语音信号采集和处理 陈宇锋编著 中国现代教育装备5数字信号处理 孙洪等译 电子工业出版社电气工程学院课程设计任务书课程名称: “单片机原理及应用数字信号处理”课程设计 基层教学单位

温馨提示

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

评论

0/150

提交评论