虚拟仪器研究生试题(1112-1)

更新时间:2024-01-13 19:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

光电学院 学 院 10-11级研究生 考试日期: 月 日 形 式 密 开 卷 编 号: 闭 卷

印刷份数: 份

上 海 理 工 大 学

研 究 生 试 题

2011 /2012 学年第 1 学期

课程名称: 虚拟与智能仪器技术

教 师 签 章: 年 月 日

教研室主任审查意见:

签 章: 年 月 日 1.试题原稿请于考试前2周送研究生部。

2.编号栏由研究生部填写。

上海理工大学研究生课程试题 *

共 页 第 页 2011 /2012 学年第 1 学期 考试课程 虚拟与智能仪器技术 学 号 112260264 姓 名 凌 国 得 分

一.命题一:基于声卡的音频信号获取与分析系统

1.功能

a)在LABVIEW环境中对声卡信号进行采集并进行测试分析。系统有以下三个测试功能。

(1)音频信号的采集并实时显示 (2)音频信号的实时存储

(3)音频信号的频域分析并显示

b)以上三个测试项在测试过程中连续进行,并且功能可选。 c)系统具有独立的音频信号回放功能。 2.主要内容及要求 (1)界面设计

A)主界面

主要包括以下模块:

a)实时信号观察窗口

b)时域观察窗口 c)频域观察窗口

B)声卡参数设置界面 包括采样频率、采样精度(A/D位数)、声道选择(mono/stereo)。 C)音频回放界面

可以设置启停和音量控制。 (2)程序设计

根据多线程及模块化的结构设计Main VI和Sub VI。

二.命题二:基于声卡的虚拟声控亮灯系统

1.功能

a)在LABVIEW环境中对声卡信号进行采集并进行分析。系统有以下三个测试功能。

(1)收集声音样本,设置不同的声音参数亮灯的方案。 (2)设计系统中灯的个数及布局,可参考音乐喷泉的效果。 (3)可选择输入声音文件,或者实时输入声音信号,根据设置

的亮灯方案,声音信号实时控制亮灯。

b)以上三个测试项在测试过程中要运行流畅。 2.主要内容及要求 (1)界面设计

A)主界面

主要包括以下模块:

*

注:考题全部写在框内,不要超出边界。内容一律用黑色墨水书写或计算机打印,以便复印。

a)输入信号选择模块

b)美观的亮灯布局 c)正常的界面控件

B)声控参数设置界面 (2)程序设计

根据多线程及模块化的结构设计Main VI和Sub VI。

三.成绩评定

1.以上两个命题任选一题完成。 2.测试面试部分评分依据

1)合理的程序功能设计(30%) 2)美观的程序界面设计 (20%) 3)流畅的程序功能运行(30%) 4)规范的设计说明书书写(20%)

实验室只提供LABVIEW7.1版本软件进行调试。如使用高版本, 面试的时候请自带电脑。面试的时候请同时带好纸质设计说明书。 3.考试材料提交

1)提交纸质设计说明书一份(封面为该试卷)

内容包括:

(1)系统功能、系统整体设计的思想或设计方案、系统结构(硬件和软件)、设计方法、设计技巧、软件流程图等。

(2)程序中为哪些控件创建了局部变量和属性节点?如何对它们进行操作?在程序中的作用是什么?

(3)说明移位寄存器的作用和工作原理。 (4)程序中的顺序结构、选择结构、循环结构的作用是什么? 2)程序代码打包上交

(将设计说明书电子稿和源代码,放于一文件夹,文件夹命名为:

学号+姓名,打包发至邮箱14899166@qq.com)

课程设计说明书

基于声卡的音频信号获取与分析系统

班 级: 测试计量技术及仪器 姓 名: 凌 国 学 号: 112260264 指导教师: 金晅宏

2011年11月

一、 系统介绍 1.系统功能

a)在LABVIEW环境中对声卡信号进行采集并进行测试分析。系统有以下三个测试功能。

(1)音频信号的采集并实时显示 (2)音频信号的实时存储

(3)音频信号的频域分析并显示

b)以上三个测试项在测试过程中连续进行,并且功能可选。 c)系统具有独立的音频信号回放功能。 2.设计方案

本次声卡的音频信息获取与分析的设计主要基于Labview7.1的软件应用平台。将整个程序分割成三大模块,即初试化操作、录音存储、录音文件回放。根据要求实现的测试功能,考虑每个模块所用的控件和function,还有注意对每个控件属性的设置,以完成基本功能。设计功能实现后,要在前面板对布局进行适当地调整,尽量做到美好和友好的界面。 3.系统结构 a)硬件

本次声音采集系统设计使用的硬件主要由带声卡和声卡驱动的PC机以及带耳麦的耳机。声卡一般有line in和mic in两个信号输入插孔。由于mic in输入声音时,容易引入噪声和信号过负荷,一般使用line in输入,其噪声干扰小且动态特性良好。

Labview对声音采集的设置默认于其所处的操作系统,我们所使用的PC机一般为普通的声卡,对于高级的声卡采集信号时,要注意关闭如混响之类的一些特效,避免影响测量结果的真实性。 b)软件

本次软件设计部分全部由Labview来完成和实现声音采集的功能。我们知道,Labview程序的前面板是一个交互式的用户界面,相当于真实物理测试仪器的仪器面板。本次程序的界面主要有三个部分组成,A)主界面主要包括时域观察窗口和频域观察窗口;B)声卡参数设置界面主要包括采样频率、采样精度(A\\D位数)、声道选择(mono\\stereo);C)音频回放界面可以设置启停和音量控制。界面效果图如下图显示。

图1 界面图

4.设计方法

各个模块之间的互转用state machine实现。State machine主要有while循环、case语句和移位寄存器组成,当然一般还要配上自定义型枚举常量。利用状态机可以比较自由和系统地进行程序运行状态间的转换。

本设计没有过多的运用子vi程序的调用,程序在回放的过程中调用了一个convert的子程序。主要是为了将录制的wav文件分割成很多段,每段的采样点可以由用户自定,但建议分割完成后的每段的采样点数不能太少。分割文件主要意图是为了想标记文件播放结束的时刻点,因为用户在播放操作中如果没有进行停播操作,那么文件播放结束后状态机的状态难以进行及时的转换,必须等待用户去进行停播操作。既然找到了文件播放结束的时刻点,那么程序可以自行去调整按键的状态,以进行状态机运行状态的切换。

在启动程序前可以设置相应的声卡参数也可以在启动程序后设置。为了满足不同数据的存储格式和性能要求,Labview提供了多种文件类型:文本文件、表单文件、二进制文件、数据记录文件、XML文件、配置文件、波形文件、基于文本的测量文件、数据存储文件等。在本次程序设计中,我们将声音输入格式设置为‘.wav’声音数据保存文件,文件保存的默认名定为sound.wav,文件保存路径由用户自行指定,文件是否保存也有用户指定。声音数据保存文件设置好以后,就可以对声卡里面的声音进行相应的采集了。通过耳麦,我们可以录制声音,也可以用播放器录制歌曲,在声音采集过程中,可以对声音数据进行实时显示和频域分析。由刚采集到的声音数据所在的指定路径,也可以对声音进行回放操作。如果用户忘记加载文件路径,系统会提示用户进行录音文件的加载。调节音量的控件可以帮助用户在播放声音文件时调节声音的大小,可以分别调节左声道和右声道的音量。

系统设计过程中避免了一些误操作,比如播放文件时错误顺序操作会提示加载文件;执行各个模块功能时对一些不相关的模块中的控件按钮disable,使用户无法去点击。

5.软件流程图

部分程序框图如下

图2 录音状态程序框图

图3 回放状态程序框图

软件流程图如下

录音模块 程序开始 系统初始化设置 回放模块 结束

图4 主程序流程图

PC机声卡通道输入

识别声音输入设备,设置声音采样模式 声卡参数设置,打开声音保存路径对音频信号进行写输入

声音信号采集结束关闭声音保存文件,清除缓冲器里面的声音数据,系统返回默认设置值 程序结束 判断任务输入是否有错误以及停录按键来控制While Loop的启停 显示时域信号和由函数傅里叶变换得到音频的频域信号 利用While Loop添加移位寄存器以及对音频数据写操作来对声音信号进行采样 图5 录音模块流程图

程序初始化设置 Y 判断文件路径 是否为空 N 加载录音文件 提示加载文件 对路径里的声音文件进行读操作

本模块程序结束 对输入声音设置启停 将读取的声音数据输入到指定设备(耳机) 由while loop对输入的声音文件进行读取 指定声音文件数据输入到设备 控制音量 声音播放结束,关闭声音文件,清除缓冲器里面的声音数据,系统返回默认设置值 图6 回放模块流程图

二.附属说明

1. 在本次的程序设计中,创建了一些布尔量的局部变量和属性节点,局部变量的设定是为了多次判断同一个布尔量值引发的不同操作和对布尔量值的改写,属性节点的作用大部分是为了避免产生误操作。比如说控件stop的局部变量每次运行系统时都会被赋值为false,是为了弹起stop控件,消除上次运行带来的影响,还有在初始化中判断了stop局部变量的值来是否结束运行;在初始化中属性节点的创建对控件进行enable,以及在不同模块中为了防止误操作而创建是为了disable相应的控件,对tab控件的属性节点的创建是为了方便page select的自由切换。

2. 移位寄存器是Labview中在循环结构中经常用到一种数据处理方式,即把第i次循环执行的结果作为第i+1次循环的输入。移位寄存器中的数据直到关闭VI时才从内存中消除。如果没有初始化移位寄存器,就会导致在关闭VI之前前后两次运行VI的结果截然不同。因此必须初始化移位寄存器。本次程序设计中采用移位寄存器的目的是将声音数据连续不断的存储到声音保存路径和声音保存文件中去,以及对错误输出进行相应的处理。

3. while loop、case结构主要构成machine state,sequence结构的应用更多的是为了时序的控制。各个模块程序中while loop来连续不断的采集声音数据以及播放声音数据,case语句来选择系统的各项功能实现。

本文来源:https://www.bwwdw.com/article/3x4o.html

Top