MATLAB课程设计---虚拟信号发生器_第1页
MATLAB课程设计---虚拟信号发生器_第2页
MATLAB课程设计---虚拟信号发生器_第3页
MATLAB课程设计---虚拟信号发生器_第4页
MATLAB课程设计---虚拟信号发生器_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、课程名称:计算机辅助分析大作业设计题目: 虚拟信号发生器 院 系: 专 业: 年 级: 姓 名: 指导教师: 西南交通大学峨眉校区2011 年 5 月 20 日1、 原理分析 该虚拟信号发生器的设计由GUI界面及其对应的程序组成。信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛地应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、方波、正弦波的电路被称为函数信号发生器。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。本文设计了一种可以产生正弦波、方波、三角波、锯齿波的虚拟信号发生器。1、 建立图形用户界面图形用户界面(Graphical Us

2、er Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。具体步骤如下:1) 在Command 里面输入 GUIDE 或者从菜单里面,或者从快捷按钮均可进入GUIDE,然后新建一个GUI,进入布局编辑器。2) 为GUI添加控件:编辑框(Edit Text)控件、静态文本(Static Text)、 滚动条(Slider)控件、按钮(Push Button)控件  、坐标轴(Axes)控件、面板(Panel)控件,并按照自己的想象摆放GHI控件,即做布局设计。3) 设置控件的属性 图1 对象浏览器控件主要属性列表:控件名称StringT

3、ag按钮(Push Button)控件 正弦波pushbuttonZHENGXIAN方波pushbutton2FANGBO三角波pushbutton4SANJIAO锯齿波pushbutton3JUCHIBO清除Pushbutton5滚动条(Slider)控件SlidersliderxiangweiSlidersliderpinlvSlidersliderfuzhi编辑框(Edit Text)控件默认editpinlv默认editfuzhi默认editxiangwei静态文本(Static Text)频率Text1幅值Text2相位Text3注:其余属性中,大小位置就不叙述了,其他默认

4、,或者在m文件中有设置4) 为各个控件添加回调函数,然后保存或者运行它,自动生成FIG文件和M文件5) 在M文件对应回调函数中编程界面外观:图2 GUI界面2、 GUI程序设计1)正弦按钮的Callback函数:global p1;%GLOBAL Define global variable.global p2;global p3;global p4;p2=0;p3=0;p4=0;p1=get(handles.pushbuttonZHENGXIAN,'value');%获取正弦按钮的当前值并赋给p1while p1=1j=get(handles.sliderfuzhi,'

5、;value');%获取幅值滚动条的值,并且赋给jk=get(handles.sliderpinlv,'value');l=get(handles.sliderxiangwei,'value');set(handles.editfuzhi,'string',num2str(j);%修改editfuzhi 的值为滚动条当前的值set(handles.editpinlv,'string',num2str(k);set(handles.editxiangwei,'string',num2str(l);A=str2

6、num(get(handles.editfuzhi,'string');%获取幅值选择框的值,并且赋给Af=str2num(get(handles.editpinlv,'string');P=str2num(get(handles.editxiangwei,'string');t=0:0.001:8*pi;y=A*sin(2*pi*f*t+P*2*pi);plot(t,y);axis(0,8*pi,-1.2,1.2); grid on;break;end2) 方波按钮的Callback函数:global p1;global p2;global p

7、3;global p4;p1=0;p3=0;p4=0;p2=get(handles.pushbutton2FANGBO,'value');j=get(handles.sliderfuzhi,'value');k=get(handles.sliderpinlv,'value');l=get(handles.sliderxiangwei,'value');set(handles.editfuzhi,'string',num2str(j);set(handles.editpinlv,'string',nu

8、m2str(k);set(handles.editxiangwei,'string',num2str(l);A=str2num(get(handles.editfuzhi,'string');f=str2num(get(handles.editpinlv,'string');P=str2num(get(handles.editxiangwei,'string');t=0:0.001:6; y=A*square(2*pi*f*t+4*P/f,50);plot(t,y);grid on;axis(0,6,-1.2,1.2);3) 锯齿

9、波按钮的Callback函数:global p1;global p2;global p3;global p4;p1=0;p2=0;p4=0;p3=get(handles.pushbutton3JUCHIBO,'value');% - Executes on slider movement.j=get(handles.sliderfuzhi,'value');k=get(handles.sliderpinlv,'value');l=get(handles.sliderxiangwei,'value');set(handles.edi

10、tfuzhi,'string',num2str(j);set(handles.editpinlv,'string',num2str(k);set(handles.editxiangwei,'string',num2str(l);A=str2num(get(handles.editfuzhi,'string');f=str2num(get(handles.editpinlv,'string');P=str2num(get(handles.editxiangwei,'string');t=0:0.001

11、:20; y=A*sawtooth(pi*f*t+4*P/f,1);plot(t,y);grid on;axis(0,20,-1.2,1.2);4) 三角波按钮的Callback函数:global p1;global p2;global p3;global p4;p2=0;p3=0;p1=0;p4=get(handles.pushbutton4SANJIAO,'value');j=get(handles.sliderfuzhi,'value');k=get(handles.sliderpinlv,'value');l=get(handles.sl

12、iderxiangwei,'value');set(handles.editfuzhi,'string',num2str(j);set(handles.editpinlv,'string',num2str(k);set(handles.editxiangwei,'string',num2str(l);A=str2num(get(handles.editfuzhi,'string');f=str2num(get(handles.editpinlv,'string');P=str2num(get(han

13、dles.editxiangwei,'string');t=0:0.001:20; y=A*sawtooth(pi*f*t+4*P/f,0.5);plot(t,y);grid on;axis(0,20,-1.2,1.2);5) 滚动条的Callback函数(各个滚动条都一样)global p1;global p2;global p3;global p4;j=get(handles.sliderfuzhi,'value');%获取幅值滚动条的值,并且赋给jk=get(handles.sliderpinlv,'value');%获取频率滚动条的值,并

14、且赋给kl=get(handles.sliderxiangwei,'value');%获取相位滚动条的值,并且赋给lset(handles.editfuzhi,'string',num2str(j);%修改editfuzhi 的值为滚动条当前的值set(handles.editpinlv,'string',num2str(k);set(handles.editxiangwei,'string',num2str(l);A=str2num(get(handles.editfuzhi,'string');%获取幅值选择框

15、的值,并且赋给Af=str2num(get(handles.editpinlv,'string');P=str2num(get(handles.editxiangwei,'string');while 1 %一直判断,遇到有按键就执行,然后退出。if p1=1 %如果选择了正弦波t=0:0.001:8*pi;y=A*sin(2*pi*f*t+P*2*pi);plot(t,y);grid on;axis(0,8*pi,-1.2,1.2); endif p2=1 %如果选择了方波t=0:0.001:6; y=A*square(2*pi*f*t+4*P/f,50);p

16、lot(t,y);grid on;axis(0,6,-1.2,1.2);endif p3=1 %如果选择了锯齿波t=0:0.001:20; y=A*sawtooth(pi*f*t+4*P/f,1);plot(t,y);grid on;axis(0,20,-1.2,1.2);endif p4=1 %如果选择了三角波 t=0:0.001:20; y=A*sawtooth(pi*f*t+4*P/f,0.5);plot(t,y);grid on;axis(0,20,-1.2,1.2);endbreak;end6) 清除按钮的Callback函数t=0:pi/360:8*pi;y=0;global p1

17、;global p2;global p3;global p4;p1=0;p2=0;p3=0;p4=0;set(handles.sliderfuzhi,'value',0);set(handles.sliderpinlv,'value',0);set(handles.sliderxiangwei,'value',0);set(handles.editfuzhi,'string',num2str(0);set(handles.editpinlv,'string',num2str(0);set(handles.editxiangwei,'string',num2str(0);plot(t,y);grid on;axis(0,8*pi,-1.2,1.2); 2、 仿真结果 图3 正弦波(对应参数见图)图4 方波(对应参数见图)图5 锯齿波(对应参数见图)图6 三角波(对应参数见图)

温馨提示

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

评论

0/150

提交评论