1、 目录(信号处理要求)第一章 摘要3第二章 总体设计方案4第三章 GUIDE预备理论5第四章 信号发生器基本原理64.1含变量的波形函数的生成64.2 时域向频域的转换7第五章 GUIDE源程序的设计 9第六章 程序显示结果与调试14第七章 心得及总结15参考文献16附 录1616第一章 摘要 信号发生器是指产生所需参数的电测试信号的仪器。按信号波形可分为正弦信号、函数(波形)信号、脉冲信号和随机信号发生器等四大类。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称
2、为函数信号发生器。 在有些实验测量中,我们需要用到信号发生器,传统的信号发生器其功能完全靠硬件实现,功能单一,而且费用较高,一个传统实验室很难拥有多类信号发生器,然而基于虚拟仪器技术的信号发生器则能够实现这一要求。此报告论述了一个基于虚拟仪器技术的任意波形发生器模块的实现。 第二章 总体设计方案 首先我们进行的是单片机部分的设计,课设的前两天,熟悉了单片机个模块的设计例程,而后我们挑选了合适的例程为我们的所需要的信号发生器模块所用。在这之中,我们用到了273输出模块,led显示模块,数码管显示模块,蜂鸣器模块,16*16点阵显示模块,串行通信模块。在精心的学习之后,我们成功地完成了单片机部分的
3、初步制作。此后,我们开始了第三天的数字信号软件方面的制作,在guide设计教程及学长的指导下,我们设计了一个简洁方便的操作界面,并根据相应的按键功能编写程序,先收集了5种波形函数,而后编写了与之对应的变量函数。于是我们便能将可变参数加入到函数中去,进行调试了。其后,我们设计了傅里叶转换函数,将波形一一转换为频域波形,最后,我们在学长的指导下完成了串行发送的按钮设计。信号处理部分也制作完毕。最后是单片机部分与信号部分的连接调试,我们将matlab发送的波形参数与单片机的数码管,led,蜂鸣器的信号同步。成功的做出了两者相结合的虚拟信号发生器。 第三章 GUIDE预备理论 本实验内容主要是阐述虚拟
4、信号发生器的前面板和程序框图的设计。设计完的信号发生器的功能包括能够产生正弦波、方波、三角波、锯齿波高斯白噪声信号波形;波形的频率、幅值、相位、及采样频率等参数由前面板控件实时可调。 虚拟信号发生器是基于MATLAB仿真软件进行编程的,它使用的是图形化编程语言。要完成一个虚拟信号发生器首先要进行GUI面板的设计,根据信号发生器所要实现的功能,在控件选板中选择相应的控件,放在前面板相应的位置上,摆放要使前面板看起来比较协调。图形用户界面概念:图形用户界面或图形用户接口(Graphical User Interface,GUI)是指采用图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行
5、界面相比,图形界面对于用户来说更为简便易用。GUIDE是Matlab提供的图形用户界面开发环境,提供了一系列用于创建图形用户界面的工具,从而简化界面布局和编程工作。 设计GUI程序时首先要分解任务,把待设计任务分割成几个大的模块,然后把大的模块再分解为一系列的功能,甚至可以分解到要用哪些函数的程度;然后是寻找例程,参考例程可以避免重复前人做过的工作。我们在学长的帮助下获得了部分波形及将波形从时域傅里叶转换为频域波形的函数,以及串行口发送数据的模板,得以顺利的将函数套用在GUI界面下,并顺利的与单片机相连。 第四章 信号发生器基本原理4.1含变量的波形函数的生成本次课设中我们设方波信号:y=a*
6、square(2*pi*f*t+4*p/f,50)其中a为幅值,f为频率,t为时间,p为相位,生成类似如下波形其中a,f,p和采样频率e分别有4个滑块控制,如下其变换值显示在图中方框中。4.2时域向频域的转换若将该方波变换为频域波形,则使用如下傅里叶函数Nf=length(y);f=0:fs/(Nf-1):fs; x=abs(fft(y);波形变换如下:同理,本次课设的其他4中波形也可如此生成:正弦波:y=a*sin(2*pi*f*t+p*2*pi)锯齿波:y=a*sawtooth(pi*f*t+4*p/f,1)三角波:y=a*sawtooth(pi*f*t+4*p/f,0.5)白噪声:y=a
7、*randn(size(t)他们的波形如下 第五章 GUIDE源程序的设计本次实验中,我们将界面程序的设计分为多块,并小组合作完成:1.按键初始化程序略;对滑块部分赋值的程序设计如下: j=get(handles.slider1,value); k=get(handles.slider2,value); l=get(handles.slider3,value);m=get(handles.slider4,value);再由滑块对文本框赋值: set(handles.edit1,string,num2str(j); set(handles.edit2,string,num2str(k); set
8、(handles.edit3,string,num2str(l);set(handles.edit4,string,num2str(m);再将波形函数变量赋值并显示在波形框内a=str2num(get(handles.edit1,string); f=str2num(get(handles.edit2,string); p=str2num(get(handles.edit3,string); e=str2num(get(handles.edit4,string); fs=e; t=0:1/fs:30; t=0:1/fs:30; y=a*sin(2*pi*f*t+p*2*pi); set(gcf
9、,CurrentAxes,handles.axes2); plot(t,y); axis(0,8*pi,-5.2,5.2); grid on;之后在进行傅里叶变换转化为频域图形:Nf=length(y);f=0:fs/(Nf-1):fs; %频谱横坐标x=abs(fft(y);set(gcf,CurrentAxes,handles.axes1);plot(f,x);title(Frequency content of y)xlabel(frequency (Hz);以上为正弦波形的设计同理可得其他波形波形选择函数:while 1 if p1=1 t=0:1/e:8*pi; y=a*sin(2*
10、pi*f*t+p*2*pi); plot(t,y); grid on; axis(0,8*pi,-5.2,5.2); end; if p2=1 t=0:1/e:6; y=a*square(2*pi*f*t+4*p/f,50); plot(t,y); grid on; axis(0,6,-5.2,5.2); end; if p3=1 t=0:1/e:20; y=a*sawtooth(pi*f*t+4*p/f,1); plot(t,y); grid on; axis(0,20,-5.2,5.2); end; if p4=1 t=0:1/e:20; y=a*sawtooth(pi*f*t+4*p/f
11、,0.5); plot(t,y); grid on; axis(0,20,-5.2,5.2); end; if p5=1 t=1:1/e:25; y=a*randn(size(t); plot(t,y); grid on; end;串行发送数据的函数设计function pushbutton10_Callback(hObject, eventdata, handles)ss=serial(COM1);ss.BaudRate=2400;ss.DataBits=8;ss.Parity=none;ss.StopBits=1;ss.TimeOut=60;ss.DataTerminalReady=off
12、;ss.RequestToSend=off;ss.FlowControl=none;ss.InputBufferSize=1000;fopen(ss);清除数据按钮设计: set(handles.slider1,value,0); set(handles.slider2,value,0); set(handles.slider3,value,0); set(handles.slider4,value,0); set(handles.edit1,string,0); set(handles.edit2,string,0); set(handles.edit3,string,0); set(han
13、dles.edit4,string,0);关闭按钮:function pushbutton9_Callback(hObject, eventdata, handles)close;我们还添加了若干工具栏设计,但是个别按钮功能未添加完整,不具备实用性 第六章 程序显示结果与调试完成guide界面后,我们连接了串行口并发送了数据。但因为硬件限制,为发送数码管我们将发送的数据都做了取整处理,发送的均为个位整数,并成功与单片机协同合作完成了参数在单片机上的正确显示。至此信号处理部分完成。最终调试结果如下: 第七章 心得与总结经过长达一星期不间断的单片机及信号处理的课程设计,我再一次加强了对单片机硬件和
14、信号处理Matlab的软件的认识,Matlab这样的软件强大的开发功能与灵活的编程手段勾起了我对信号处理浓厚的兴趣,并最终实现了虚拟信号发生器的设计,可以看出虚拟仪器给用户提供了一个充分发挥自己的才能和想象力的空间,可根据用户自己的设想及要求,通过编程来设计,组建自己的仪器系统,他的灵活、开放,技术更新周期短,可随着计算机技术的发展和用户的需求进行仪器与系统的升级,在性能维护和灵活组态等方面有着传统仪器无法比拟的优点。通过此次课程设计,我不仅把所学知识的融会贯通,而且丰富了我的阅历。同时,在查找资料的过程中也了解了许多课外知识,开拓了视野,认识了将来数字图像处理的发展方向,使自己在专业方面和动
15、手能力方面都得到了加强。在咨询学长的同时,我学会了虚心请教师长,来完善我的课题能力,如果没有学长每天的答疑解惑,我们不可能编出对于自己来说前所未有复杂的单片机及guide程序。与此同时,在与我所在的小组成员的合作中,我感受到了团队行动的力量,我们合理的分工推动了大家一起竞争的欲望,最终让小组迅速的完成了老师的任务,看来科研之中的竞争与合作真的能够发挥事半功倍的作用! 参考文献1)信号处理原理及应用 谢平 等 机械工业出版社(教材)2)Matlab程序设计及其在信号处理中的应用聂祥飞等 西南交通大学出版社 燕山大学专业综合训练评审意见表指导教师评语:成绩: 指导教师: 2013年7月 4 日答辩小组评语: 成绩: 评阅人: 2013年7月 4 日课程设计总成绩:答辩小组成员签字: 2013年 7月4 日