哈尔滨工业大学CVI实验实验二

上传人:z****2 文档编号:200899961 上传时间:2023-04-17 格式:DOCX 页数:11 大小:523.33KB
收藏 版权申诉 举报 下载
哈尔滨工业大学CVI实验实验二_第1页
第1页 / 共11页
哈尔滨工业大学CVI实验实验二_第2页
第2页 / 共11页
哈尔滨工业大学CVI实验实验二_第3页
第3页 / 共11页
资源描述:

《哈尔滨工业大学CVI实验实验二》由会员分享,可在线阅读,更多相关《哈尔滨工业大学CVI实验实验二(11页珍藏版)》请在装配图网上搜索。

1、实验二1 任务编写一个函数发生器,要求 : 能够通过用户界面选择产生正弦波、三角波、锯齿波、方波等函数波形 用曲线图控件绘制用户选择的波形。2实验步骤步骤 1:根据要实现的功能,设计如图 2-1 所示的用户界面,其具体控件属性设置如表 2-1 所示。图 2-1 最终用户界面表 2-1 主要控件的基本属性列表控件类型Constant Name属性设置面板PanelPANEL命令按钮Command ButtonQUITBUTTONCallbackFunctionQuitCallbackLableQuit曲线图控件GraphGRAPH1ControlModeIndicatorData ModeRet

2、ainLable波形显示下拉列表控件RingWAVEFORMCallbackFunctionWaveFormChooseCBLabel波形选择Label/ValuePairsLabel无Value0Label正弦波Value1Label三角波Value2Label锯齿波Value3Label方波Value4步骤2:生成代码框架。选择CodeGeneratefAll Code,生成代码框架,接着添加自 定义函数 show_wave 进行显示。/*下拉列表控件“波形选择”对应的回调函数*/int CVICALLBACK WaveFormChooseCB (int panel, int contro

3、l, int event, void *callbackData, int eventData1, int eventData2)switch (event)case EVENT_COMMIT: show_wave();break;return 0;然后,在函数 show_wave 内添加如下代码。void show_wave(void) int waveForm;/*波形选择变量*/double ample=5.0;/* 幅度 */double phase=0.0,waveDataPOINTS ; /*相位和波形数据变量*/double sampleRate=10000.0,freq=100

4、.0;/* 采样率和频率变量*/GetCtrlVal (panelHandle, PANEL_WAVEFORM, &waveForm);switch (waveForm)case 0: /* 无波形*/DeleteGraphPlot(panelHandle,PANEL_GRAPH1,-1,VAL_IMMEDIATE_DRA W);/*清除所画曲线*/break;case 1:/* 正弦波 */SineWave (POINTS, ample, freq/sampleRate, &phase, waveData); break;case 2:/*三角波*/TriangleWave (POINTS,

5、 ample, freq/sampleRate, &phase, waveData); break;case 3:/*锯齿波*/SawtoothWave (POINTS, ample, freq/sampleRate, &phase, waveData); break;case 4:/*方波*/SquareWave (POINTS, ample, freq/sampleRate, &phase, 50.0, waveData); break;if(waveform)/* 先判断是否选择了波形*/DeleteGraphPlot (panelHandle, PANEL_GRAPH1, -1, VA

6、L_IMMEDIATE_DRAW);PlotWaveform (panelHandle, PANEL_GRAPH1, waveData, POINTS, VAL_DOUBLE, 1.0, 0.0, 0.0, 1.0/sampleRate, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);/* 画出波形*/ 代码中的函数意义及调用方法如下(1) 函数 DeleteGraphPlot 清除所画曲线,调用路径为:LibraryUer Interface LibraryControls/Graphs/Strip Charts. Graph

7、s and Stirp ChartsDelete Graph Plot 其参数设置见图 2-2。( 2)函数 SineWave, TriangleWave, SawtoothWave, SquareWave 分别为正弦波,三角波,锯齿波和方波生成函数。它们都在 Library Advanced Analysis Library Signal Generation 目录下获得,其参数设置如图 2-32-6 所示。(3) 函数PlotWaveform,画曲线图函数,调用路径为:LibraryUer Interface LibraryControls/Graphs/Strip Charts. Gra

8、phs and Stirp ChartsPlotWaveform, 其参数设置见图 2-7。图 2-2 DeleteGraphPlot 函数面板图 2-3 正弦波生成函数面板图 2-4 三角波生成函数面板图 2-5 锯齿波生成函数面板图 2-6 方波生成函数面板图 2-7 PlotWaveform 函数面板步骤3:运行程序。选择RunDebug exl_dbg.exe。选做: 任务:波形的频率幅度可调; 用曲线图控件绘制波形频谱。步骤 1:根据功能需要,我们添加一曲线图控件和两数值控件,其具体设置如表 2-2 所 示。表 2-2 添加控件的基本属性列表控件类型Constant Name属性设置

9、曲线图控件GraphGRAPH2ControlModeIndicatorData ModeRetainLable频谱显示数值控件NumericAMPLECallbackFunctionChangeAmpleCBLable幅度FREQCallbackFunctionChangeFreqCBLable频率最终界面如图 2-8 所示。图 2-8 最终用户界面完成用户界面后,编写回调函数ChangeAmpleCB和ChangeFreqCB,注意把其事件改 为 EVENT_VAL_CHANGED,其代码如下。/*数值控件AMPLE对应的回调函数*/int CVICALLBACK ChangeAmpleC

10、B (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)switch (event)case EVENT_VAL_CHANGED:/*事件不是 EVENT_COMMIT*/ show_wave();break;return 0;/*数值控件 FREQ 对应的回调函数*/int CVICALLBACK ChangeFreqCB (int panel, int control, int event,void *callbackData, int eventData1, int

11、eventData2)switch (event)case EVENT_VAL_CHANGED: show_wave();break;return 0;然后还需要对 show_wave 函数作如下改动:void show_wave(void)int waveForm;double ample;double phase=0.0,waveDataPOINTS,filterDataPOINTS,specDataPOINTS;double sampleRate=10000.0,freq;double cutoff_freq=3000.0;/* 设置截止频率*/GetCtrlVal (panelHand

12、le, PANEL_WAVEFORM, &waveForm);GetCtrlVal (panelHandle, PANEL_AMPLE, & ample);/* 获得幅度值 */GetCtrlVal (panelHandle, PANEL_FREQ, & freq);/* 获得频率值 */ switch (waveForm)case 0:DeleteGraphPlot(panelHandle,PANEL_GRAPH1,-1,VAL_IMMEDIATE_DRAW); break;case 1:SineWave (POINTS, ample, freq/sampleRate, &phase, wa

13、veData); break;case 2:TriangleWave (POINTS, ample, freq/sampleRate, &phase, waveData); break;case 3:SawtoothWave (POINTS, ample, freq/sampleRate, &phase, waveData); break;case 4:SquareWave (POINTS, ample, freq/sampleRate, &phase, 50.0, waveData); break;if(waveform)DeleteGraphPlot (panelHandle, PANEL

14、_GRAPH1, -1, VAL_IMMEDIATE_DRAW);PlotWaveform (panelHandle, PANEL_GRAPH1, waveData, POINTS, VAL_DOUBLE, 1.0, 0.0, 0.0,1.0/sampleRate, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, 1, VAL_RED);Bw_LPF (waveData, POINTS, sampleRate, cutoff_freq, 5, filterData);/* 低通滤波*/ CopylD (filterData, POINTS, specDa

15、ta);/* 复制数据*/Spectrum (specData, POINTS);/* 进行功率谱分析*/DeleteGraphPlot (panelHandle, PANEL_GRAPH2, -l, VAL_IMMEDIATE_DRAW);PlotWaveform (panelHandle, PANEL_GRAPH2, specData, POINTS, VAL_DOUBLE, l.0, 0.0, 0.0,sampleRate/POINTS, VAL_THIN_LINE, VAL_EMPTY_SQUARE, VAL_SOLID, l, VAL_RED);/*画出信号的功率谱*/ 上面代码中的

16、函数意义及调用方法如下(1) 函数 Bw_LPF巴特沃兹低通滤波器函数,其调用路径为:Library Advanced Analysis Library Signal ProcessingIIR Digital Filters One-step Filters FunctionsLowpass Butterworth,其参 数设置见图 2-8。(2) 函数 Copy1D数组拷贝函数, 其调用路径为: Library Advanced Analysis Library Array OperationsID Operations,其参数设置见图 2-9。( 3) 函数 Spectrum 功率谱函数,其调用路径为: Library Advanced Analysis Library Signal Processing Frequency DomainPower Spectrum,其参数设置见图 2-10。图 2-8Bw_LPF 函数面板图 2-9 Copy1D 函数面板图 2-10 Spectrum 函数面板最后,保存并运行程序。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!