燕山大学数字数字信号处理课程设计基于DA转换的信号发生与分析

上传人:无*** 文档编号:44564513 上传时间:2021-12-05 格式:DOC 页数:22 大小:535.55KB
收藏 版权申诉 举报 下载
燕山大学数字数字信号处理课程设计基于DA转换的信号发生与分析_第1页
第1页 / 共22页
燕山大学数字数字信号处理课程设计基于DA转换的信号发生与分析_第2页
第2页 / 共22页
燕山大学数字数字信号处理课程设计基于DA转换的信号发生与分析_第3页
第3页 / 共22页
资源描述:

《燕山大学数字数字信号处理课程设计基于DA转换的信号发生与分析》由会员分享,可在线阅读,更多相关《燕山大学数字数字信号处理课程设计基于DA转换的信号发生与分析(22页珍藏版)》请在装配图网上搜索。

1、 燕山大学 课 程 设 计 说 明 书 题目:基于D/A转换的信号发生与分析 学院(系): 电气工程学院 年级专业: 学 号: 学生姓名: 指导教师: 教师职称: 课程名称: “单片机原理及应用数字信号处理”课程设计 基层教学单位: 指导教师 :学号学生姓名(专业)班级设计题目基于D/A转换的信号发生与分析设计技术参数1、独立完成设计任务。2、编程,上机调试。3、连接硬件实验线路,实现所要求的功能。4、完成设计,提交课程设计报告。设计要求1、采用模块:DA0832、单片机串口通信、Matlab信号处理工具箱2、利用DAC0832,编制程序产生锯齿波、三角波、正弦波、三种波,并将波形数据通过单片

2、机串口发送给PC系统。3、 对比不同波形信号的时域波形和频谱特性。其中可调参数包括幅值、相位、频率、采样频率等。设计软件分析界面。工作量软件编程与硬件调试相结合,绘制设计流程图,编制相应软件界面,实现单片机控制与信号处理任务的综合应用参考资料1)微型计算机控制系统 赖寿宏,机械工业出版社(教材)2)单片机及应用李大友,高等教育出版社(教材)3)信号处理原理及应用 谢平 等 机械工业出版社(教材)4)Matlab程序设计及其在信号处理中的应用聂祥飞等 西南交通大学出版社周次第一周第二周应完成内容熟悉伟福单片机编程环境,调试单片机各基本功能模块;熟悉matlab信号处理工具箱,信号处理系统基本功能

3、模块学习和调试单片机系统与信号处理系统综合进行硬件调试,撰写课程设计报告指导教师签字基层教学单位主任签字说明:1、此表一式四份,系、指导教师、学生各一份,报送院教务科一份。 2、学生那份任务书要求装订到课程设计报告前面。摘要3第一章 MATLAB简介4第二章 采集信号级处理的相关知识.52.1MATLAB信号采集相关知识52.2快速傅里叶变换7第三章MATLAB处理流程83.1图形界面设计83.2程序设计10第四章MATLAB处理后的仿真图144.1方波及其频谱图144.2锯齿波及其频谱图154.3三角波及其频谱图164.4正弦波及其频谱图17第五章 心得总结18参考文献19 摘要本次课程设计

4、利用MATLAB对产生的信号进行采集与分析,实现了D/A转换的信号发生与分析。通过MATLAB GUI设计信号采集与分析系统,对来自上位机的正弦波,三角波,锯齿波等函数信号进行采集与幅频特性分析,并将分析的结果通过串口发送命令给单片机系统,控制相应的数码管或LED发光显示相应信号参数,从而达到对数字信号的分析与处理的目的。第一章 MATLAB简介MATLAB是一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。同时由于MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十

5、分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。MATLAB是解决工程技术问题的技术平台。利用它能够轻松完成复杂的数值计算,数据分析,符号计算和数据可视化等任务。MATLAB软件由主包和各类工具箱构成。其中,主包基本是一个用C/C+等语言编写成的函数库。该函数库提供矩阵(或数组)的各种算法以及建立在此基础上的各种应用函数和一些相关的用户有好操作界面。而工具箱从深度和广度上大大扩展了MATLAB主包的功能和应用领域。随着自身的不断完善和发展,MATLAB功能越来越强大,应用也越来越广泛。 随着计算机技术和信息技术的发展,语音交互已

6、经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的前提和基础。声卡是计算机对语音信号进行加工的重要部件,它具有对信号滤波、放大、采样保持、A/D和D/A转换等功能。尽管在Windows附件的娱乐中带有一个录音机,通过它可以驱动声卡采集语音信号并保存为语音文档。但是要对采集的信号进一步分析处理就必须另外编程或通过其它软件,而且Windows附件中的录音机功能极其有限且不能扩展。MATLAB是美国Math Works公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。在MATLAB环境中,可以通过多种编程方

7、法驱动声卡,实现对语音信号的采集和回放。同时由于MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。第二章 采集信号级处理的相关知识2.1MATLAB信号采集的相关知识MATLAB对串行口的编程控制主要分为四个步骤。 创建串口设备对象并设置其属性。 scom=serial(com1);%创建串口1的设备对象scom scom.InputBufferSize=1024;%输入缓冲区为256B缺省值为512Bscom.Timeout

8、=0.5;%Y设置一次读或写操作的最大完成时间为0.5s, 缺省值为10ss.ReadAsyncMode=continuous(缺省方式);%在异步通信模式方式下, 读取串口数据采用连续接收数据(continuous)的缺省方式,那么下位机返回的数据会自动地存入输入缓冲区中.这里串口还有很多其他属性可以设置不一一列举。打开串口设备对象。fopen(scom);读写串口操作。初始化并打开串口调协对象之后现在可以对串口设备对象进行读写操作串口的读写操作支持二进制和文本ASCII两种方式。当MATLAB通信数据采用西方ASCII方式时读写串口设备的命令分别是fscanf、fpritf当MATLAB通

9、信数据采用二进制方式时读写串口设备的命令分别是fread、fwrite。我们这里使用fread可以一次性把数据读进来。关闭并清除设备对象。fclose(scom)%关闭串口设备对象delete(scom);%删除内存中的串口设备对象clear scom; %清除工作空间中的串口设备对象当不再使用该串口设备对象时顺序使用以上3条命令可以将所创建的串口对象清除,以免占用系统资源。(2)基于MATLAB中断方式的实时串行通信编程在MATLAB环境下以中断的方式进行串行通信实际上是采用事件驱动的方法实现的。MATLAB提供了instrcallback(obj,event)回调函数用户根据需要可以自行设

10、置具体的串行通信事件。其编程步骤如下建立一个串行通信主程序serial.m文件在主程序中进行串口设备初始化操作,并指定回调函数中串行通信的事件。设置回调函数触发事件当串口缓冲区中有n字节的数据时,触发中断事件。此后主程序自动调用instrcallback(obj,event)回调函数s.BytesAvaibleFcnMode=byte;%中断触发事件为bytes-available Events.BytesAvailableFcnCount=n;%接收缓冲区每收到n个字节时,触发回调函数s.BytesAvailableFcn=instrcallback;%得到回调函数句柄。%另外s.Bytes

11、AvailableFcn=instrcallback,s;得到回调函数句柄,并将变量s渗透到instrcallback中。fopen(s);%连接串口设备对象fwrite(s,255);%写串口发送握手信号0xFF(等价于十进制下的数值255)修改instrcallback(obj,event)回调函数对所发生的串口通信事件进行处理。MATLAB缺省的回调函数instrcallback(obj,event)存在于instrcallback.m文件中。该文件实际上是一个有待于用户修改的程序模块。其中只有一些最基本的程序代码能够显示导致串口中断发生的是哪一类事件,中断事件所发生的时间以及导致事件发

12、生的对象名等信息。修改回调函数文件时,注意要取消文件中相应信息后的分号才能够在MATLAB的命令窗口commandwindow中将这些信息显示出来。中断发生后的通信事件处理以及通信数据的分析处理任务需要用户自行添加相应的服务程序代码。MATLAB安装目标下有两个instrcallback.m文件我们只需要修改instrument目录下的instrcallback.m文件即可。如果MATLAB安装在C盘instrcallback.m文件目录为C:Program FilesMATLABR2007atoolboxMATLABiofuninstrument。(一定要替换,不然串口无法启动)1.gui_

13、cc2430receive.m是数据采集程序运行后选择开始开始采集数据点击希望观察的节点可查看该节点的数据波形图。此程序有针对目前使用的“节点上有五个传感器”的情况不一定通用。2.instrcallback.m是系统的回调函数满足中断条件时会进入此函数。3.callbackDealWithData.m是实时处理函数当程序进入回调函数instrcallback时就会调用此函数在callbackDealWithData里面可以添加希望执行的指令代码完成数据解析、保存、数据滤波、画图、实时跟踪等功能。gui_cc2430receive.m文件是启动本采集系统的关键其中设置的“开始”按钮为代码中的b1

14、按下按钮会进入b1callback函数。2.2快速傅里叶变换有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化成有限长序列.但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换(FFT). 1965年,Cooley和Tukey提出了计算离散傅里叶变换(DFT)的快速算法,将DFT的运算量减少了几个数量级。从此,对快速傅里叶变换(FFT)算法的研究便不断深入,数字信号处理这门新兴学科也随FFT的出现和发展而迅速发展。根据对序列分解与选取方法的不同而产生了FFT的多种算法,基本算法是基DIT和基DIF。FFT在离散傅里叶反变换、线性卷积和线性相关等方面也有重要应用。快速傅氏变换(F

15、FT),是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N2次运算。当N=1024点甚至更多的时候,需要N2=104

16、8576次运算,在FFT中,利用WN的周期性和对称性,把一个N项序列(设N=2k,k为正整数),分为两个N/2项的子序列,每个N/2点DFT变换需要(N/2)2次运算,再用N次运算把两个N/2点的DFT变换组合成一个N点的DFT变换。这样变换以后,总的运算次数就变成N+2(N/2)2=N+N2/2。继续上面的例子,N=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的DFT运算单元,那么N点的DFT变换就只需要Nlog2N次的运算,N在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多

17、,运算量的节约就越大,这就是FFT的优越性。离散傅里叶变换X(k)可看成是z变换在单位圆上的等距离采样值。同样,X(k)也可看作是序列傅氏变换的采样,采样间隔为N=2/N 。由此看出,离散傅里叶变换实质上是其频谱的离散频域采样,对频率具有选择性(k=2k/N),在这些点上反映了信号的频谱。 根据采样定律,一个频带有限的信号,可以对它进行时域采样而不丢失任何信息,FFT变换则说明对于时间有限的信号(有限长序列),也可以对其进行频域采样,而不丢失任何信息。所以只要时间序列足够长,采样足够密,频域采样也就可较好地反映信号的频谱趋势,所以FFT可以用以进行连续信号的频谱分析。第三章MATLAB处理流程

18、3.1图形界面设计 (1)打开MATLAB,新建一个空白的图形界面文件,计算需要添加的控件种类及个数并设计它们的布局。 (a) 添加2个axes控件,用于显示时域波形和频谱分析; (b) 添加5个static text 控件作为窗口说明使用; (c) 添加4个static text控件用于显示幅值、均值等信号信息; (e) 添加4个push button 空间用于各种操作的开始控制; 双击各个控件并修改其颜色、大小及string属性。得到界面如下: (2)各控件对应的回调函数的编辑 界面控件及布局创建完成以后,自动生成包含各控件回调函数在内的m文件。点击保存时可以修改fig及m文件名。系统自动

19、生成的m文件包括:function varargout = xiaojian01(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, xiaojian01_OpeningFcn, . gui_OutputFcn, xiaojian01_OutputFcn, . gui_LayoutFcn, , . gui_Callback, 以及各个控件对应的回调框架,如:function xiaojian01_OpeningFc

20、n(hObject, eventdata, handles, varargin)等。3.2程序设计根据界面内控件的功能,在相应的控件下写入欲实现其功能的程序,对应在m文件中的最终程序为:function varargout = xiaojian01(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, xiaojian01_OpeningFcn, . gui_OutputFcn, xiaojian01_OutputF

21、cn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);endfunction xiaojian01_OpeningFcn(hObject, eventdata, handles, varargin)han

22、dles.output = hObject; %guidata(hObject, handles); function varargout = xiaojian01_OutputFcn(hObject, eventdata, handles) varargout1 = handles.output; function pushbutton1_Callback(hObject, eventdata, handles)global outglobal zglobal ffglobal fftxglobal fsglobal nfftfs=100;%z=fft(out)%mag=abs(z);%求幅

23、值%freq=fs/mean(z);%set(handles.text 8,string,num2str(freq);%f=(0:length(z)-1)*fs/length(z);%进行对应的频率转换nfft= 2nextpow2(length(out);%找出大于y的个数的最大的2的指数值ff=fs*(0:nfft/2-1)/nfft;%FFT变换后对应的频率的序列fftx=fft(out,nfft);%求FFT变换set(gcf,CurrentAxes,handles.axes2);plot(ff,abs(fftx(1:nfft/2)*2/nfft);xlabel(Frequency);

24、ylabel(Amplitude);%D=max(out); % 最大值%function pushbutton2_Callback(hObject, eventdata, handles)global outglobal nset(gcf,CurrentAxes,handles.axes1)plot(out)xlabel(Data Points);ylabel(Amplitude);fs=100;%A=mean(out); % 标准差%B=fs/mean(out);C=Var(out); % 方差D=max(out); % 最大值A=mean(out); % 平均值E=min(out); %

25、 最小值%F=D-E; % 峰峰值set(handles.text8,string,num2str(A);set(handles.text12,string,num2str(D);%set(handles.text,string,num2str(D);set(handles.text13,string,num2str(E);set(handles.text14,string,num2str(C); function pushbutton3_Callback(hObject, eventdata, handles)global gglobal outg=serial(com1);g.InputB

26、ufferSize=4096;g.timeout=60;g.BaudRate=1200;g.Parity=none;g.StopBits=1;g.Terminator=LF;g.FlowControl=hardware;fopen(g);%打开串口设备对象s%fwrite(g,255);%以二进制的方式发送握手信号0xFF,缺省为异步通信方式out=fread(g,100,uint8)fclose(g);%delete(g);%clear g;%set(gcf,CurrentAxes,handles.axes1)%plot(out) function pushbutton4_Callback(

27、hObject, eventdata, handles)closefunction axes1_CreateFcn(hObject, eventdata, handles)xlim(0 1000)ylim(0 300)set(gca,ytick,0:50:300) function axes2_CreateFcn(hObject, eventdata, handles)xlim(0 1000)ylim(0 300)set(gca,ytick,0:50:300) function edit1_Callback(hObject, eventdata, handles)function edit1_

28、CreateFcn(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function text8_CreateFcn(hObject, eventdata, handles)第四章MATLAB处理后的仿真图4.1方波及其频谱图方波的一些特性参数4.2锯齿波及其频谱图锯齿波的一些特性参数4.3三角波及其频谱图三角波的一些特性参数4.4正弦波

29、及其频谱图正弦波的一些特性参数第五章 心得总结 通过本次课程设计,我们学习了使用MATLAB对信号进行分析与处理的基本方法,对于课上所学知识更产生了进一步的认识,通过分组合作的形式不仅增进了我们的团队协作能力,更增强了我们的实践能力,培养了我们自主分析问题,解决问题的能力。 在此次课程设计的过程中,我们同样遇到了很多问题与难题,但是因为得到了老师和学长们的帮助,使得许多问题得以迎刃而解,为此感谢老师和学长们的不吝赐教!参考文献1)微型计算机控制系统 赖寿宏,机械工业出版社(教材)2)单片机及应用李大友,高等教育出版社(教材)3)信号处理原理及应用 谢平 等 机械工业出版社(教材)4)MATLAB程序设计及其在信号处理中的应用聂祥飞等 西南交通大学出版社燕山大学课程设计评审意见表指导教师评语:1、认真、很好的完成课设各阶段的任务。【 】2、能够较好的完成课设各阶段的任务。【 】3、能够按时完成课设各阶段的任务。【 】4、不按时完成课设各阶段的任务。【 】成绩: 指导教师: 2013年 07月04日答辩小组评语:1、全面、得体的回答老师的提问。【 】2、能够简要回答老师的提问。【 】3、能够回答部分老师的提问。【 】4、不能回答老师的提问。【 】成绩: 组长: 2013年 07月04日课程设计总成绩:答辩小组成员签字:2013年07月04日

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!