Lab windows结课作业模板.docx

上传人:b****5 文档编号:7646524 上传时间:2023-01-25 格式:DOCX 页数:10 大小:132.43KB
下载 相关 举报
Lab windows结课作业模板.docx_第1页
第1页 / 共10页
Lab windows结课作业模板.docx_第2页
第2页 / 共10页
Lab windows结课作业模板.docx_第3页
第3页 / 共10页
Lab windows结课作业模板.docx_第4页
第4页 / 共10页
Lab windows结课作业模板.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

Lab windows结课作业模板.docx

《Lab windows结课作业模板.docx》由会员分享,可在线阅读,更多相关《Lab windows结课作业模板.docx(10页珍藏版)》请在冰豆网上搜索。

Lab windows结课作业模板.docx

Labwindows结课作业模板

LabWindows

结课作业

 

学生姓名:

学号:

学院:

专业:

 

2012年月

LabWindows结课作业

姓名:

学号:

专业:

综合实验:

示波器

1、实验目的

通过虚拟示波器的设计,了解和学习利用LabWindows/CVI进行虚拟仪器设计的方法、步骤和实现技术,锻炼自己的创新思维,并借此展望虚拟仪器具有的广阔应用前景。

2、实验内容

1.根据自己所学知识,结合自己的想法完成一个简单虚拟示波器的设计;

2.要求设计要有自己的特色和创新点,同时要密切的联系实际,实现尽可能多的功能;

3、实验仪器

装有labwidows软件的计算机一台。

4、实验原理

基于Labwindows,通过对它增加控件,然后增加控件函数,用C语言进行编程,在每个控件的消息上增加关联函数,在触发消息时,调用函数,我们主要对这个函数进行编程。

要完成虚拟示波器的设计必须有外部的信号采集,内部信号的处理函数,要真正完成数据的采集,需要用到PCI板卡,还需要基于PCI协议开发数据卡驱动,数据采集函数,才能完成数据的采集。

本次设计采用的是虚拟信号,也就是给示波器一个设定的信号,然后让它显示出来。

五、实验步骤

步骤1:

根据要实现的功能,设计用户界面;

步骤2:

修改用户界面各控件的属性;

步骤3:

生成代码框架,并在代码框架中添加相应代码及自定义函数;

步骤5:

保存并运行程序,查看运行结果;

六、关键代码及注释

程序1:

控件dispaly的回调函数

intCVICALLBACKdisplaycallback(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

intnoise_type,i,j;

doublemean,stdev,max,min;

doubledata_noise[100];

charbuf[20];

switch(event)

{

caseEVENT_COMMIT:

GetCtrlVal(panelHandle,PANEL_WAVEFORM,&noise_type);

switch(noise_type)

{

case0:

for(i=0;i<100;i++)

data_noise[i]=rand()/32767.0;

break;

case1:

WhiteNoise(100,1.0,5,data_noise);

break;

case2:

GaussNoise(100,1.0,5,data_noise);

break;

}

StdDev(data_noise,100,&mean,&stdev);

MaxMin1D(data_noise,100,&max,&i,&min,&j);

sprintf(buf,"%6.2f",mean);

SetCtrlVal(panelHandle,PANEL_MEAN,buf);

sprintf(buf,"%6.2f",stdev);

SetCtrlVal(panelHandle,PANEL_STDEV,buf);

sprintf(buf,"%6.2f",min);

SetCtrlVal(panelHandle,PANEL_MIN,buf);

sprintf(buf,"%6.2f",max);

SetCtrlVal(panelHandle,PANEL_MAX,buf);

break;

caseEVENT_RIGHT_CLICK:

MessagePopup("help","pressthisbuttontodisplaychart");

break;

}

return0;

}

程序2:

增益的回调函数

intCVICALLBACKDataFunc(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

doublesignal_scope,signal_frequency;

intwaveform;

switch(control)

{

casePANEL_SCOPEGAIN:

if(event==EVENT_VAL_CHANGED)

GetCtrlVal(panelHandle,PANEL_SCOPEGAIN,&channel_scope_gain);

break;

casePANEL_FREQGAIN:

if(event==EVENT_VAL_CHANGED)

GetCtrlVal(panelHandle,PANEL_FREQGAIN,&channel_frequency_gain);

break;

casePANEL_SCOPE:

if(event==EVENT_COMMIT)

{

GetCtrlVal(panelHandle,PANEL_SCOPE,&signal_scope);

if(channel_signal==0)

Channel1.scope=signal_scope;

else

Channel2.scope=signal_scope;

}

break;

casePANEL_FREQUENCY:

if(event==EVENT_COMMIT)

{

GetCtrlVal(panelHandle,PANEL_FREQUENCY,&signal_frequency);

if(channel_signal==0)

Channel1.frequency=signal_frequency;

else

Channel2.frequency=signal_frequency;

}

break;

casePANEL_WAVEFORM:

if(event==EVENT_COMMIT)

{

GetCtrlVal(panelHandle,PANEL_WAVEFORM,&waveform);

if(channel_signal==0)

Channel1.waveform=waveform;

else

Channel2.waveform=waveform;

}

break;

}

return0;

}

程序3:

通道选择的回调函数

intCVICALLBACKChannel(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

switch(event)

{

caseEVENT_COMMIT:

GetCtrlVal(panelHandle,PANEL_CHANNEL,&channel);

if(channel==0)

{

SetCtrlAttribute(panelHandle,PANEL_CHART,ATTR_NUM_TRACES,1);

SetTraceAttribute(panelHandle,PANEL_CHART,1,ATTR_TRACE_COLOR,VAL_GREEN);

}

if(channel==1)

{

SetCtrlAttribute(panelHandle,PANEL_CHART,ATTR_NUM_TRACES,1);

SetTraceAttribute(panelHandle,PANEL_CHART,1,ATTR_TRACE_COLOR,VAL_RED);

}

if(channel==2)

{

SetCtrlAttribute(panelHandle,PANEL_CHART,ATTR_NUM_TRACES,2);

SetTraceAttribute(panelHandle,PANEL_CHART,1,ATTR_TRACE_COLOR,VAL_GREEN);

SetTraceAttribute(panelHandle,PANEL_CHART,2,ATTR_TRACE_COLOR,VAL_RED);

}

break;

}

return0;

}

程序4:

定时器的回调函数

intCVICALLBACKTimer(intpanel,intcontrol,intevent,

void*callbackData,inteventData1,inteventData2)

{

inti;

switch(event)

{

caseEVENT_TIMER_TICK:

GenerateData();

if(panelHandle==0)

PlotStripChart(panelHandle,PANEL_CHART,Channel1.data,Channel1.pointnum,0,0,VAL_DOUBLE);

if(panelHandle==1)

PlotStripChart(panelHandle,PANEL_CHART,Channel2.data,Channel2.pointnum,0,0,VAL_DOUBLE);

if(panelHandle==2)

PlotStripChart(panelHandle,PANEL_CHART,data,Channel1.pointnum*2,0,0,VAL_DOUBLE);

break;

}

return0;

}

七、实验结果

图1开始时图像

图2调节幅度

图3调节频率

图4调节扫频

图5调节block

图6调节通道和输入信号

图7调节噪声

图8调节通道

八、心得

本次试验所学软件Labwidows/cvi和我正在学习的linux环境下的图形界面开发工具Qtdesigner有很多相似之处,虽然Labwidows/cvi的程序不能直接移植到Qt中运行,但是C和C++的相似相同之处给我提供了更加深刻的理解和广阔的思路,其事件和响应机制更是和Qt中信号与槽的概念的理解完全相同。

这次试验,使我实现了运用labwidows/cvi设计虚拟仪器的方法、步骤和技术,使得自己的创新思维的到了充分的扩展,为我下一步设计媒体播放器提供了新的思路和设计方案,为我进一步学习Qt打好了基础,做好了铺垫。

感谢老师,感谢实验,感谢这门课给我带来了巨大了乐趣。

 

参考文献

[1]张宗橙、张玲华.数字信号处理与应用[M].南京:

东南大学出版社.2006.

[2]罗霄华、虚拟仪器技术的应用与发展[J].科技情报开发与经济.2001(3).

[3]赵勇.虚拟仪器软件平台和发展趋势[J].国外电子测量技术.2002

(1).

[4]沈元隆、周井泉.信号与系统[M].北京:

人民邮电出版社.2003.

[5]赵美泽.关于虚拟教学仪器的设计与实现[J].莱阳农学院学报,2005,22

(2).

[6]杨乐平.LabVIEW程序设计与应用[M].北京:

电子工业出版社,2001.

[7]王霄.虚拟仪器设计及其在教学中的应用[J].现代电子技术.2005,28(8);

[8]张凤均.LabWindows/CVI开发入门和进阶[M].北京:

北京航空航天大学出版社.2001.

[9]张毅、周绍磊、杨秀霞.虚拟仪器技术分析与应用[M].北京:

机械工业出版社.2004.

[10]张易知、肖啸、张喜斌、卫跃春.虚拟仪器的设计与实现[M].西安电子科技大学出版社.2002.

[11]林永平、蔡坚勇.基于网络的虚拟示波器的设计[J].福建师范大学学报:

自然科学版,2005,21

(2).

[12]崔红梅、麻硕士、裴喜春等.基于LabWindows/CVI平台的虚拟数字信号分析仪的研究与开发[J].计量技术,2005(11).

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 中国风

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1