




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、姓名:学号:专业:综合实验:示波器一、实验目的(1)了解并掌握虚拟仪器的设计方法,具备初步的独立设计能力。(2)初步常握对图形化编程语言lab windows的编程、调试等基木技能(3)提高综合运用所学的知识独立分析和解决问题的能力。二、实验内容编写一个如下图所示的虚拟示波器。轉度迭择(v频率迭择(khz)0.05.0 10*01 0 5.0 lo'.ototo玻形选臥正弦通道 通道1国 sample4_8图1三、实验仪器计算机一台,装有labwindows四、实验原理根据labwindows实验指导书,完成对示波器的设计。1.完成用户界面的设计,即仪表板。.首先在界面上加上若t de
2、coration的矩形來划 分面板。选择graph中的strip chart,设置如图1。£ edit strip chartsource code conn«ctionim t i <llydd«nleftz .quick edit window百 口|a|z1strip ch«rt-1.0-2.0richi t-axiz .control<r <nc«u«o«x npp««r«nc«l<b«l:strip ch«rtl%b«l
3、r>isdj sito text图 2 strip chart 设置在下面加一个3xt文件作为横坐标显示,设置为图2。说 edit text messagesource code connectionconstant山左3羽callback function:control s«ttin<sdefault value:00.51:initially d'md:initially b'ddncontrol app«<ranc«2 ttxl “idsi “ to texttext slxlquick edit window好 nlai
4、i00 511.52査秒2d-jqk jctncwlquick edit window両!:! a fdjjokcancel图3 text控件设置 接着在左上角放置时钟控件,设置为图3。起 edit timer图4时钟控件设置 然后放置电源开关控件和led指示灯,如图4。电源开关电源指示图5电源开关及指示灯再放置接收信号频率增益和幅度增益控件,设置为图5和图6o建 edit ring knob建 edit ring knobquick edit windowi? a| f|频率增益 (s/i单位o2mx0.2bs/ 1 jvsms/0. 1ms10mstjlabel appearanceube
5、l:频率増益label rai sedj size to textcancel图5接收信号频率增益啦 edit ring knobsource code coxmectionconstant name:scopegaincallback function:datafunccontrol settingscontrol iod:default index:initially dimediniti ally biddenlafeel/value pairs.c ontr ol app earancetick style:$ full tickstext st述chot $3 (iv)ltbtl a
6、ppearlbel:輻度增益label raisedj si“ to t«xtokcimcdl图6接收信号幅度增益2.用代码生成器生成程序框架。选择code»generate»ai i code,在如图2 而中选择quitcallk项后确定。generate all code图7生成程序框架3.插入库函数。将鼠标放在需要插入库两数的地方,点击library菜单來插入。在 li brary»advanced ana lysis有各种函数,选中任意函数会弹出设置而板,需要 设置具体的参数。设置完成后选择code»insert function ca
7、l i即完成函数插 入。4.完成了程序框架的填写后对每个函数貝体按照示波器的各个按钮的功能來写代码。 此时要特别注意回调函数的用法,可以在函数上点击右键,选择browse identifier,如图3,来杏看函数的定义与用法举例,还可以在右边的库屮查找 到其他冇类似用法的函数,如图4,方便你的调用。fbeol function pandctrupbrgwie identifierctd*fland yi objectctrusmuuopen quoted textctrl.ugo to definitionctrkigo to fcjext referenceqruswulctrugjet n
8、ext statementcth*iview yariablc valuesha.f7addexpressionctdf7qr»ph»c«l array viewctrl*自to99<e exclusionctd+ec5 line1copy line1pastec1h*v |generate daq example code一edit daq t“lc1copy daq task to project.show daq configuration code-edit ivi specific driver attributesedit eunction tr
9、eeedit function panefindlibrariesuser interface lit:formatting and i/o l: utility libraryansi c libraryvxi librarylgpib/gpib 488.2 lib/rs-232 library visa librarytcp support library udp support library internet library network variable lit: dde support library actives library diaden connectivityrn图9
10、库函数图8査看函数定义另外,还可以直接右键,选择find ul object來直接查看该函数对应的用户血板 上的控件。5.再完成了程序的编写后就需要进行程序的调试了。点击菜单run debug*, exe或点击快捷栏内绿色三角图标就可以运行程序。未开启示波器时显示如图5.电源开关未按下时电源指示灯为绿色,开启电源开关后电源指示灯为红色。电源指示continuous2.0-1,0> 0.0-1.0-0.5被则信号3.5-2.0-0频军增益5s/l卑位 g ims 2”1.522.5至秒3腮迭择3 频磁择疲形瞬政70.05.010* 0 1.05.010*0cioa。m 更二图10示波器面板
11、此时,点击电源开关,在选择好输入信号形式,输入信号幅度和频率以及输入信号 通道,接受信号通道,曲线滚动模式及频率增益和幅度增益后,就可以显示需要的 波形了。六、关键代码及注释include <analysis. h> /头文件include <ansi c.h>include <cvirte. h> /*做扩展编译时需耍*/include <userint h>ttinclude "综合示波器.h"define pi 3. 1416 /宏命令定义define true 1define false 0define max_poi
12、nts 51200struct channeldataint waveform;double frequency;double scope;int pointnum;double datamax_points; /定义通道数据结构体channell, channel2;static int handle; /定义参数int channel=0, channel signal二0;double channcl_scope_gain二1. 0, channcl_frequcncy_gain=l;int chartmode二 1;/继续int power二0;/关闭/静态整形波形static dou
13、ble datamax points*2;void gcncratcdata(void) int main (int argc, char *argv)/主函数if (tnitcvtrte (0, argv, 0) = 0)/* 做扩展编译吋需要 */return -1;if (handle 二 loadpane 1 (0,"综合示波器.uir, panel) < 0) return 一1;displaypanel (handle);channell. frequency=l;/通道 1 初始频率channell. scope=l. 0;/通道 1 初始幅度channell,
14、pointnum二512;/通道 1 初始采样点数channell, waveforml:/正弦两数channel2 froquency=l;channel2 scope=1 0;channel2 pointnunf512;channel2 wavefor nf 1;runllserlnterface ();return 0;/函数参数设趕函数int cvicallback datafunc (int panel, int control, int event, void *callbackdata, int eventdtitcil, int eventdata2) double signa
15、l scope,signal frequency;int waveform;switch (control)case panel_scopegain:if (event = event val changed)getctrl vai (handle, p anei ,_sc0peg a tn, &channel_scope_ ga i n); break;case panel_ereqga1n:if (event = event_val_changed)getctrlvai(handle, panel freqgain,fichannel frequency gain); break;
16、case panel_scope:if (event = event_comm1t)getctrlvai (handle, panel scope, &signal scope); if (chtinnel_signalo)channel1. scope=signal_scope;el sechannel2 scope=signal_scope:break;case panel_frequency:if (event = event commit)gotctrlval (handle, panel frequency, signalfrequency); if (chtinnel_si
17、gnalo)channel1. frequency二signal_frequency;el sechannel2 frequency=signal_frequency;break;case paneljvaveeorm:if (event = event commit)gotctrlval (handle, panel.waveform, &wavcform);if (chtinnel_signalo)channel1. waveform=waveform;el sechannel2 waveform=waveform;break;return (0);曲线滚动模式选择int cvic
18、allback chartmode (int panel, int control, int event,void *ccillbackdata, int eventdatal, int eventdata2)int mode;switch (event)case event_comm1t:getctrlval (handle, panel_chart_mode, &chartmode);swi tch(chartmode)case 0: mode=val_sweep;breeik;case 1: mode二 valc0nt1n101s;break;case 2: mode二 valj
19、lock;break;)setctrlattribute (handle, panel chart, attr scroll mode, mode); break;)return 0;退出示波器int cvicallback quit (int panel, int control, int event,void *ccillbackdata, int eventdatal, int eventdata2)switch (event)caseevent commit:quituserinterface (0);break;)return 0;/通道选择int cvicallback selec
20、tchannel (int panel, int control, int event,void * cal ibackdata, int eventdatal, int eve r)tdata2)switch (event)case event_comm1t:getctrlval (handle, panel_channel, &channel);break;)return 0;定时函数int cvicallback timer (int panel, int control, int event,void *calibackdata, int eventdatal, int eve
21、ntdata2)int i;switch (event)case event ttmer ttck:gencratcdatao ;if (chtinnel0)plotstripchart (handle, panelcilrt, channell, data, channell, pointnum, 0, 0,val double);if (chti nn el1)plotstripchart (handle, panel_ci1art, channel2. data, channel2. point num, 0, 0, val double);i f (channel =2)plotstr
22、ipchart(handle, panel_cert, data, channell. pointnum*2, 0,0,val_doible);break;)return 0;/电源开关int control, int event,int cv1callback power (int panel,int eventdata2)void *calibackdata, int eventdatal,switch (event)case event_comm1t:getctrlval (handle, panel power, &power);setctrlvai (handle, pane
23、l_led, power);setctrlattribute (handle, panel timer, attr enabled, power); if (power0)c1 earstripchart (hand 1 e, panel_ci 1art);break;)return 0;输入信号通道选择int cv1callback channelsignal (int panel, int control, int event, void * cal ibackdata, int eventdatal, int eve r)tdiita2)switch (event)case event_
24、comm1t:getctrlval (handle, panel channelstgnal, &channel signal);i f(channel_signal=0)setctrlval (hcindle, panel_1;keqcency, chcinnell. frequency);setctrlval (handle, panel_scope, channell, scope);setctrlval (handle, panei. waveform, channel 1. waveform);)elsesetctrlval (handle, panel ereqcency,
25、 channel2. frequency);setctrlval (handle, panel scope, channel2. scope);setctrlval(handle, panel_waveform, channel2. waveform);break;)return 0;显示波形通道选择int cvtcallback channel (int panel, int control, int event,void *callbackdata, int eventdatal, int eventdata2)switch (event)case event commit:getctrl
26、val (handle, panel_channel, &channel);if(channcl=0)setctrlattribute (handle, panel_chart, attr_num_tkaces, 1);settraceattribute (handle, panel chart,1 , attr trace color, val green); ) if(channcl=l)setctrlattribute (handle, panel_chart, attr_num_tkaces, 1);settraceattribute (handle, panel chart,
27、1, attr trace color, val red);)if (channel=2)setctrlattribute (hcindle, panel_ci1art, attr_num_traces, 2):settraceattr让ute (handle, panel_chart, 1, attr_trace_color, val_green); settraceattribute (handle, panel chart,2,attr trace color, val red);)break;)return 0;记数点函数void calculatepointnum0if(channe
28、l二二0)channoil, pointnum=1024/channcll.frequoncy/channel frequency gain ;else i f(channel=l)channel2. pointnum=1024/channcl2. frcquency/channclfrequency gain ;else/设置同样的点channcll.pointnum=1024/channcll.frcquoncy/channel frequoncy gain ;channe!2 pointnunf 1024/chtmne 11 frequency/channel_frequency_gai
29、n ;/参数设置函数void gcncratcdataoint i;calculatepoi ntnum();switch (channel1waveform)case 0:for (i=0; i<channel1. pointnum/2; i+)channell. datai =channell. scope/channel_scope_gain ;for (i二channel1. pointnum/2; i<channel1. pointnum; i+)chtinnell. datai二一channel 1 scope/channel_scope_gain ;break;cas
30、e 1:for (i=0; i<channell.pointnum; i+)channell. datai=sin(i*2.0*pi/channell. pointnum)*channel1. scope/chtmnel_scope_gain ;break;case 2:for (i=0; i<channell pointnum; i+)channell. data订=(rand()/23767.0)-0.5)*channel1 scopc/channcl_scope_gain ;breeik;switch (channe!2.waveform)case 0:for (i-0; i
31、<channel2. pointnum/2; i+)channel2 datafi =channel2 scope/channel_scope_gain ;for (i=channel2 pointnum/2; i<char)nol2 pointnum; i+)channel2 datafi =-channel2 scope/channel_scope_gain ;break;case 1:for (i=0; i<charmel2.pointnum; i+)channel2. datai=sin(i*2 0*pt/channel2. pointnum)*channel2 scope/channel_scope_ gain ;break;case 2:for (i=0; i<charmel2.pointnum; i+)channel2. datai=(rand()/23767.0)-0.5)*channel2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村房子开发合同样本
- 制作单合同样本
- 会所会员服务合同标准文本
- 中沙采购合同范例
- 刑事律师聘用合同样本
- 公司代理财务记账合同样本
- 分租合同样本和合同
- 公寓消防合同标准文本
- 借用电梯合同标准文本
- 出水果合同样本
- 《经济学原理》课件
- 第16课《有为有不为 》课件-2024-2025学年统编版语文七年级下册
- 上海市建设工程施工图设计文件勘察设计质量疑难问题汇编(2024 版)
- 2025年宁波职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 《节奏与旋律》课件
- 2025年中邮证券有限责任公司招聘笔试参考题库含答案解析
- 2024年05月新疆克拉玛依金龙国民村镇银行招考15名客户经理笔试历年参考题库附带答案详解
- 键盘钢琴谱(100首最好听的歌曲)
- 神经源性膀胱的护理
- 2024年中国全钢子午线轮胎市场调查研究报告
- 水务产业园区发展模式-洞察分析
评论
0/150
提交评论