学位论文燕山大学数字数字信号处理课程设计基于da转换的信号发生与分析Word格式文档下载.docx
《学位论文燕山大学数字数字信号处理课程设计基于da转换的信号发生与分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《学位论文燕山大学数字数字信号处理课程设计基于da转换的信号发生与分析Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
学号
学生姓名
(专业)班级
设计题目
设
计
技
术
参
数
1、独立完成设计任务。
2、编程,上机调试。
3、连接硬件实验线路,实现所要求的功能。
4、完成设计,提交课程设计报告。
要
求
1、采用模块:
DA0832、单片机串口通信、Matlab信号处理工具箱
2、利用DAC0832,编制程序产生锯齿波、三角波、正弦波、三种波,并将波形数据通过单片机串口发送给PC系统。
3、对比不同波形信号的时域波形和频谱特性。
其中可调参数包括幅值、相位、频率、采样频率等。
设计软件分析界面。
工
作
量
软件编程与硬件调试相结合,绘制设计流程图,编制相应软件界面,实现单片机控制与信号处理任务的综合应用
考
资
料
1)《微型计算机控制系统》赖寿宏,机械工业出版社(教材)
2)《单片机及应用》李大友,高等教育出版社(教材)
3)《信号处理原理及应用》谢平等机械工业出版社(教材)
4)《Matlab程序设计及其在信号处理中的应用》聂祥飞等西南交通大学出版社
周次
第一周
第二周
应
完
成
内
容
熟悉伟福单片机编程环境,调试单片机各基本功能模块;
熟悉matlab信号处理工具箱,信号处理系统基本功能模块学习和调试
单片机系统与信号处理系统综合进行硬件调试,
撰写课程设计报告
指导教
师签字
基层教学单位主任签字
说明:
1、此表一式四份,系、指导教师、学生各一份,报送院教务科一份。
2、学生那份任务书要求装订到课程设计报告前面。
摘要……………………………………………………3
第一章MATLAB简介………………………………4
第二章采集信号级处理的相关知识………………..5
2.1MATLAB信号采集相关知识……………………………5
2.2快速傅里叶变换……………………………………7
第三章MATLAB处理流程……………………………8
3.1图形界面设计………………………………………8
3.2程序设计……………………………………………10
第四章MATLAB处理后的仿真图……………………14
4.1方波及其频谱图……………………………………14
4.2锯齿波及其频谱图…………………………………15
4.3三角波及其频谱图…………………………………16
4.4正弦波及其频谱图…………………………………17
第五章心得总结……………………………………18
参考文献………………………………………………19
摘要
本次课程设计利用MATLAB对产生的信号进行采集与分析,实现了D/A转换的信号发生与分析。
通过MATLABGUI设计信号采集与分析系统,对来自上位机的正弦波,三角波,锯齿波等函数信号进行采集与幅频特性分析,并将分析的结果通过串口发送命令给单片机系统,控制相应的数码管或LED发光显示相应信号参数,从而达到对数字信号的分析与处理的目的。
第一章MATLAB简介
MATLAB是一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。
同时由于MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。
MATLAB是解决工程技术问题的技术平台。
利用它能够轻松完成复杂的数值计算,数据分析,符号计算和数据可视化等任务。
MATLAB软件由主包和各类工具箱构成。
其中,主包基本是一个用C/C++等语言编写成的函数库。
该函数库提供矩阵(或数组)的各种算法以及建立在此基础上的各种应用函数和一些相关的用户有好操作界面。
而工具箱从深度和广度上大大扩展了MATLAB主包的功能和应用领域。
随着自身的不断完善和发展,MATLAB功能越来越强大,应用也越来越广泛。
随着计算机技术和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的前提和基础。
声卡是计算机对语音信号进行加工的重要部件,它具有对信号滤波、放大、采样保持、A/D和D/A转换等功能。
尽管在Windows附件的娱乐中带有一个录音机,通过它可以驱动声卡采集语音信号并保存为语音文档。
但是要对采集的信号进一步分析处理就必须另外编程或通过其它软件,而且Windows附件中的录音机功能极其有限且不能扩展。
MATLAB是美国MathWorks公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。
在MATLAB环境中,可以通过多种编程方法驱动声卡,实现对语音信号的采集和回放。
第二章采集信号级处理的相关知识
2.1MATLAB信号采集的相关知识
MATLAB对串行口的编程控制主要分为四个步骤。
①创建串口设备对象并设置其属性。
scom=serial('
com1'
);
%创建串口1的设备对象scom
scom.InputBufferSize=1024;
%输入缓冲区为256B缺省值为512B
scom.Timeout=0.5;
%Y设置一次读或写操作的最大完成时间为0.5s,缺省值为10s
s.ReadAsyncMode='
continuous'
(缺省方式);
%在异步通信模式方式下,读取串口数据采用连续接收数据(continuous)的缺省方式,那么下位机返回的数据会自动地存入输入缓冲区中.
这里串口还有很多其他属性可以设置不一一列举。
②打开串口设备对象。
fopen(scom);
③读写串口操作。
初始化并打开串口调协对象之后现在可以对串口设备对象进行读写操作
串口的读写操作支持二进制和文本ASCII两种方式。
当MATLAB通信数据采用西方ASCII
方式时读写串口设备的命令分别是fscanf、fpritf当MATLAB通信数据采用二进制方式时
读写串口设备的命令分别是fread、fwrite。
我们这里使用fread可以一次性把数据读进来。
④关闭并清除设备对象。
fclose(scom)%关闭串口设备对象
delete(scom);
%删除内存中的串口设备对象
clearscom;
%清除工作空间中的串口设备对象
当不再使用该串口设备对象时顺序使用以上3条命令可以将所创建的串口对象清除,以免占用系统资源。
(2)基于MATLAB中断方式的实时串行通信编程
在MATLAB环境下以中断的方式进行串行通信实际上是采用事件驱动的方法实现的。
MATLAB提供了instrcallback(obj,event)回调函数用户根据需要可以自行设置具体的串行通信事件。
其编程步骤如下
①建立一个串行通信主程序serial.m文件在主程序中进行串口设备初始化操作,并指定
回调函数中串行通信的事件。
设置回调函数触发事件—当串口缓冲区中有n字节的数据时,触发中断事件。
此后主程序自动调用instrcallback(obj,event)回调函数s.BytesAvaibleFcnMode='
byte'
;
%中断触发事件为‘bytes-availableEvent’
s.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的命令窗口command
window中将这些信息显示出来。
中断发生后的通信事件处理以及通信数据的分析处理任
务需要用户自行添加相应的服务程序代码。
MATLAB安装目标下有两个instrcallback.m文件
我们只需要修改@instrument目录下的instrcallback.m文件即可。
如果MATLAB安装在C盘
instrcallback.m文件目录为
C:
\ProgramFiles\MATLAB\R2007a\toolbox\MATLAB\iofun\@instrument。
(一定要替换,不然串口无法启动)
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的多种算法,基本算法是基2DIT和基2DIF。
FFT在离散傅里叶反变换、线性卷积和线性相关等方面也有重要应用。
快速傅氏变换(FFT),是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。
它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。
设x(n)为N项的复数序列,由DFT变换,任一X(m)的计算都需要N次复数乘法和N-1次复数加法,而一次复数乘