




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
燕山大学课 程 设 计 说 明 书题目:基于D/A转换的信号发生与分析学院(系): 电气工程学院 年级专业: 学 号:学生姓名: 指导教师: 教师职称: 课程名称: “单片机原理及应用数字信号处理”课程设计 基层教学单位: 指导教师 :学号 学生姓名 (专业)班级设计题目 基于D/A转换的信号发生与分析设计技术参数1、独立完成设计任务。2、编程,上机调试。3、连接硬件实验线路,实现所要求的功能。4、完成设计,提交课程设计报告。设计要求1、采用模块:DA0832、单片机串口通信、Matlab信号处理工具箱2、利用DAC0832,编制程序产生锯齿波、三角波、正弦波、三种波,并将波形数据通过单片机串口发送给PC系统。3、 对比不同波形信号的时域波形和频谱特性。其中可调参数包括幅值、相位、频率、采样频率等。设计软件分析界面。工作量软件编程与硬件调试相结合,绘制设计流程图,编制相应软件界面,实现单片机控制与信号处理任务的综合应用参考资料1)微型计算机控制系统 赖寿宏,机械工业出版社(教材)2)单片机及应用李大友,高等教育出版社(教材)3)信号处理原理及应用 谢平 等 机械工业出版社(教材)4)Matlab程序设计及其在信号处理中的应用聂祥飞等 西南交通大学出版社周次 第一周 第二周应完成内容熟悉伟福单片机编程环境,调试单片机各基本功能模块;熟悉matlab信号处理工具箱,信号处理系统基本功能模块学习和调试单片机系统与信号处理系统综合进行硬件调试,撰写课程设计报告指导教师签字基层教学单位主任签字说明: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 摘要本次课程设计利用MATLAB对产生的信号进行采集与分析,实现了D/A转换的信号发生与分析。通过 MATLAB GUI设计信号采集与分析系统,对来自上位机的正弦波,三角波,锯齿波等函数信号进行采集与幅频特性分析,并将分析的结果通过串口发送命令给单片机系统,控制相应的数码管或LED发光显示相应信号参数,从而达到对数字信号的分析与处理的目的。第一章 MATLAB简介MATLAB是一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。同时由于MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。MATLAB是解决工程技术问题的技术平台。利用它能够轻松完成复杂的数值计算,数据分析,符号计算和数据可视化等任务。MATLAB软件由主包和各类工具箱构成。其中,主包基本是一个用C/C+等语言编写成的函数库。该函数库提供矩阵(或数组)的各种算法以及建立在此基础上的各种应用函数和一些相关的用户有好操作界面。而工具箱从深度和广度上大大扩展了MATLAB主包的功能和应用领域。随着自身的不断完善和发展,MATLAB功能越来越强大,应用也越来越广泛。随着计算机技术和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的前提和基础。声卡是计算机对语音信号进行加工的重要部件,它具有对信号滤波、放大、采样保持、A/D和D/A转换等功能。尽管在Windows附件的娱乐中带有一个录音机,通过它可以驱动声卡采集语音信号并保存为语音文档。但是要对采集的信号进一步分析处理就必须另外编程或通过其它软件,而且Windows附件中的录音机功能极其有限且不能扩展。MATLAB是美国Math Works公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。在MATLAB环境中,可以通过多种编程方法驱动声卡,实现对语音信号的采集和回放。同时由于MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。第二章 采集信号级处理的相关知识2.1MATLAB信号采集的相关知识MATLAB对串行口的编程控制主要分为四个步骤。创建串口设备对象并设置其属性。scom=serial(com1);%创建串口 1的设备对象scomscom.InputBufferSize=1024;%输入缓冲区为256B 缺省值为512Bscom.Timeout=0.5;%Y设置一次读或写操作的最大完成时间为0.5s, 缺省值为10ss.ReadAsyncMode=continuous(缺省方式);%在异步通信模式方式下 , 读取串口数据采用连续接收数据(continuous)的缺省方式,那么下位机返回的数据会自动地存入输入缓冲区中.这里 串口还有很多其他属性可以设置 不一一列举。打开串口设备对象。fopen(scom);读写串口操作。初始化并打开串口调协对象之后 现在可以对串口设备对象进行读写操作串口的读写操作支持二进制和文本 ASCII 两种方式。当MATLAB通信数据采用西方 ASCII方式时 读写串口设备的命令分别是fscanf、fpritf 当MATLAB通信数据采用二进制方式时读写串口设备的命令分别是fread、fwrite。我们这里使用fread 可以一次性把数据读进来。关闭并清除设备对象。fclose(scom) %关闭串口设备对象delete(scom);%删除内存中的串口设备对象clear scom; %清除工作空间中的串口设备对象当不再使用该串口设备对象时 顺序使用以上3条命令 可以将所创建的串口对象清除,以免占用系统资源。(2)基于MATLAB 中断方式的实时串行通信编程在MATLAB环境下以中断的方式进行串行通信 实际上是采用事件驱动的方法实现的。MATLAB提供了 instrcallback(obj,event)回调函数 用户根据需要可以自行设置具体的串行通信事件。其编程步骤如下建立一个串行通信主程序 serial.m文件 在主程序中进行串口设备初始化操作,并指定回调函数中串行通信的事件。设置回调函数触发事件当串口缓冲区中有n字节的数据时,触发中断事件。此后主程序自动调用instrcallback(obj,event)回调函数s.BytesAvaibleFcnMode=byte;%中断触发事件为bytes-available Events.BytesAvailableFcnCount=n;%接收缓冲区每收到n个字节时,触发回调函数s.BytesAvailableFcn=instrcallback;%得到回调函数句柄。%另外 s.BytesAvailableFcn=instrcallback,s;得到回调函数句柄,并将变量s渗透到instrcallback 中。fopen(s);%连接串口设备对象fwrite(s,255);%写串口 发送握手信号0xFF( 等价于十进制下的数值255)修改instrcallback(obj,event) 回调函数 对所发生的串口通信事件进行处理。MATLAB缺省的回调函数instrcallback(obj,event)存在于instrcallback.m文件中。该文件实际上是一个有待于用户修改的程序模块。其中只有一些最基本的程序代码能够显示导致串口中断发生的是哪一类事件,中断事件所发生的时间以及导致事件发生的对象名等信息。修改回调函数文件时, 注意要取消文件中相应信息后的分号 才能够在MATLAB的命令窗口 commandwindow 中将这些信息显示出来 。中断发生后的通信事件处理以及通信数据的分析处理任务 需要用户自行添加相应的服务程序代码。MATLAB 安装目标下有两个instrcallback.m文件我们只需要修改instrument目录下的instrcallback.m文件即可。如果MATLAB安装在C盘instrcallback.m文件目录为C:Program FilesMATLABR2007atoolboxMATLABiofuninstrument。(一定要替换, 不然串口无法启动 )1.gui_cc2430receive.m是数据采集程序 运行后选择开始 开始采集数据 点击希望观察的节点可查看该节点的数据波形图。此程序有针对目前使用的“节点上有五个传感器”的情况 不一定通用。2.instrcallback.m是系统的回调函数 满足中断条件时会进入此函数。3.callbackDealWithData.m是实时处理函数 当程序进入回调函数instrcallback时就会调用此函数 在callbackDealWithData里面可以添加希望执行的指令代码 完成数据解析、保存、数据滤波、画图、实时跟踪等功能。gui_cc2430receive.m文件是启动本采集系统的关键 其中设置的“开始”按钮为代码中的b1按下按钮 会进入b1callback函数。2.2快速傅里叶变换有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化成有限长序列.但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换(FFT). 1965年,Cooley和Tukey提出了计算离散傅里叶变换(DFT)的快速算法,将DFT的运算量减少了几个数量级。从此,对快速傅里叶变换(FFT)算法的研究便不断深入,数字信号处理这门新兴学科也随FFT的出现和发展而迅速发展。根据对序列分解与选取方法的不同而产生了FFT的多种算法,基本算法是基DIT和基DIF。FFT在离散傅里叶反变换、线性卷积和线性相关等方面也有重要应用。快速傅氏变换(FFT),是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出N项复数序列的X(m),即N点DFT变换大约就需要N2次运算。当N=1024点甚至更多的时候,需要N2=1048576次运算,在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%,点数越多,运算量的节约就越大,这就是FFT的优越性。离散傅里叶变换X(k)可看成是z变换在单位圆上的等距离采样值。同样,X(k)也可看作是序列傅氏变换 的采样,采样间隔为N=2/jeXN 。由此看出,离散傅里叶变换实质上是其频谱的离散频域采样,对频率具有选择性(k=2k/N),在这些点上反映了信号的频谱。 根据采样定律,一个频带有限的信号,可以对它进行时域采样而不丢失任何信息,FFT变换则说明对于时间有限的信号(有限长序列),也可以对其进行频域采样,而不丢失任何信息。所以只要时间序列足够长,采样足够密,频域采样也就可较好地反映信号的频谱趋势,所以FFT可以用以进行连续信号的频谱分析。第三章MATLAB处理流程3.1图形界面设计 (1)打开MATLAB,新建一个空白的图形界面文件,计算需要添加的控件种类及个数并设计它们的布局。 (a) 添加2个axes控件,用于显示时域波形和频谱分析; (b) 添加5个static text 控件作为窗口说明使用; (c) 添加4个static text控件用于显示幅值、均值等信号信息; (e) 添加4个push button 空间用于各种操作的开始控制; 双击各个控件并修改其颜色、大小及string属性。得到界面如下: (2)各控件对应的回调函数的编辑 界面控件及布局创建完成以后,自动生成包含各控件回调函数在内的m文件。点击保存时可以修改fig及m文件名。系统自动生成的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_OpeningFcn(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_OutputFcn, .gui_LayoutFcn, , .gui_Callback, );if nargin & ischar(varargin1)gui_State.gui_Callback = str2func(varargin1);endif nargoutvarargout1:nargout = gui_mainfcn(gui_State, varargin:);elsegui_mainfcn(gui_State, varargin:);endfunction xiaojian01_OpeningFcn(hObject, eventdata, handles, varargin)handles.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);%求幅值%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);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); % 最小值%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.InputBufferSize=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(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, eventdat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生院基本公共卫生服务项目自查报告
- DB65T 4045-2017 气象虚拟化数据中心基础资源池建设技术规范
- 智慧+安全政务云数据中心整体解决方案
- 全息影像技术在市场中的应用
- 保健品市场趋势分析与预测
- 智能系统与人类关系-洞察及研究
- 住宅楼工程建设合同3篇
- 胡萝卜购买合同书4篇
- 防养老诈骗基础知识培训课件
- 品牌文化渗透方法-洞察及研究
- 安全生产法2025全文
- 高空外墙清洗员安全教育培训手册
- 赖特-罗比住宅详细分析
- 机车故障处理管理办法
- 房屋市政工程有限空间作业安全管理指南
- 布病防培训课件
- 工程造价咨询绿色施工支持措施
- 食品执行标准对照表
- 法律法规师德师风培训内容
- 销售商务礼仪培训课程
- 三七销售培训课件
评论
0/150
提交评论