虚拟仪器课程设计报告 - 副本

数据采集技术作品设计报告

题目:          声音采集与频谱分析                             

  院:          

          级:                       

  业:                        

  级:                     

  号:                     

  名:                        

  期:                      


声音采集与频谱分析

[摘要] 语音信号的采集与分析技术是一门涉及面很广的交叉科学,它的应用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学科紧密联系。工程师可以利用图形化开发软件方便、高效的创建完全自定义的解决方案,以满足灵活多变的需求趋势。

本次课程设计是基于泛华恒兴公司开发的NextPad的声音采集与频谱分析,实现播放声音文件和录制声音文件,并能显示录音的时长,同时对声音进行傅里叶变换分析,类似于卡拉OK的声音响度,我设计通过LED模拟频谱的幅度值,幅度越大LED亮灯个数越多。

关键词:LabVIEW,声卡,声音采集,频谱分析。


目录

第一章  绪论................................................................................................................ 2

1.1、虚拟仪器介绍............................................................................................ 2

1.2、LabVIEW概述............................................................................................ 2

1.3、LabVIEW 发展......................................................................................... 2

1.4、LABVIEW的广泛应用............................................................................... 3

第二章   硬件资源....................................................................................................... 5

2.1  AI、AO通道............................................................................................... 5

2.2  使能端口DO............................................................................................... 6

2.3  数值通道DO1............................................................................................. 6

第三章   前面板设计.................................................................................................. 7

3.1  系统概述..................................................................................................... 7

3.2  录放音......................................................................................................... 8

第四章   程序框图设计.............................................................................................. 9

4.1  超时事件..................................................................................................... 9

4.1.1Idle....................................................................................................... 9

4.1.2Init....................................................................................................... 9

4.1.3 OpenFileToRec................................................................................... 9

4.1.4 StartRecDaq..................................................................................... 10

4.1.5 Record................................................................................................ 11

4.1.6 OpenFileToPlay................................................................................ 11

4.1.7 StartPlayDaq................................................................................... 12

4.1.8 Play................................................................................................... 12

4.1.9 StopPlayDaq..................................................................................... 13

4.1.10 StopRecDaq..................................................................................... 13

4.2  Record 事件............................................................................................ 14

4.3  Sound 事件.............................................................................................. 14

第五章图片展示与总结.......................................................................................... 15

5.1 效果图片展示........................................................................................... 15

5.2 总结............................................................................................................ 15

参考文献..................................................................................................................... 18


第一章   绪论

1.1、虚拟仪器介绍 

虚拟仪器指具有虚拟仪器面板的个人计算机仪器,它可利用软件在微型机屏幕上构成虚拟仪器面板,在有足够的硬件支持下对信号进行采样,在离线条件下,经软件处理而得到测量结果。它具有一机多用、测量精度高等特点,使用者自己操作这台计算机,就象是在操作一台自己专门设计的传统电子仪器。

 虚拟仪器由硬件设备与接口、设备驱动软件和虚拟仪器面板组成。其中,硬件设备与接口可以是各种以PC为基础的内置功能插卡、通用接口总线接口卡、串行口、VXI总线仪器接口等设备,或者是其它各种可程控的外置测试设备,设备驱动软件是直接控制各种硬件接口的驱动程序,虚拟仪器通过底层设备驱动软件与真实的仪器系统进行通讯,并以虚拟仪器面板的形式在计算机屏幕上显示与真实仪器面板操作元素相对应的各种控件。用户用鼠标操作虚拟仪器的面板就如同操作真实仪器一样真实与方便。

1.2、LabVIEW概述 

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而 LabVIEW则采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。VI指虚拟仪器,是 LabVIEW的程序模块。  

LabVIEW提供很多外观与传统仪器(如示波器、万用表)类似的控件,可用来方便地创建用户界面。用户界面在 LabVIEW中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是图形化源代码,又称G代码。LabVIEW的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。 

1.3、LabVIEW 发展 

LabVIEW的最大特点是图形化的程序语言,又称为“G”语言。使用这种语言编程时,基本上不写程序代码,取而代之的是流程图或框图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念,因此,LabVIEW是一个面向最终用户的工具。它可以增强你构建自己的科学和工程系统的能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试并实现仪器系统时,可以大大提高工作效率。虚拟仪器研究的另一个问题是各种标准仪器的互连及与计算机的连接。目前使用较多的是IEEE488 或 GPIB协议。未来的仪器也应当是网络化的。  

LabVIEW(Laboratory Virtual instrument Engineering Workbench)是一种图形化的编程语言的开发环境,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪器控制软件。LabVIEW集成了与满足 GPIB、VXI、RS-232和RS-485协议的硬件及数据采集卡通讯的全部功能。它还内置了便于应用TCP/IP、ActiveX等软件标准的库函数。这是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟仪器,其图形化的界面使得编程及使用过程都生动有趣。    

1.4、LABVIEW的广泛应用  

LABVIEW有很多优点,尤其是在某些特殊领域其特点尤其突出。  

控制:控制与测试是两个相关度非常高的领域,从测试领域起家的LabVIEW自然而然地首先拓展至控制领域。LabVIEW拥有专门用于控制领域的模块----LabVIEWDSC。除此之外,工业控制领域常用的设备、数据线等通常也都带有相应的LabVIEW驱动程序。使用LabVIEW可以非常方便的编制各种控制程序。  

仿真:LabVIEW包含了多种多样的数学运算函数,特别适合进行模拟、仿真、原型设计等工作。在设计机电设备之前,可以现在计算机上用LabVIEW搭建仿真原型,验证设计的合理性,找到潜在的问题。在高等教育领域,有时如果使用LabVIEW进行软件模拟,就可以达到同样的效果,使学生不致失去实践的机会。    

快速开发:根据笔者参与的一些项目统计,完成一个功能类似的大型应用软件,熟练的LabVIEW程序员所需的开发时间,大概只是熟练的C程序员所需时间的1/5左右。所以,如果项目开发时间紧张,应该优先考虑使用LabVIEW,以缩短开发时间。  

跨平台:如果同一个程序需要运行于多个硬件设备之上,也可以优先考虑使用LabVIEW。LabVIEW具有良好的平台一致性。LabVIEW的代码不需任何修改就可以运行在常见的三大台式机操作系统上:Windows、Mac OS 及 Linux。除此之外,LabVIEW还支持各种实时操作系统和嵌入式设备,比如常见的PDA、FPGA以及运行VxWorks和PharLap系统的RT设备。


第二章   硬件资源

图1(a),(b)分别是声音采集与回放模块和交通灯实验模块的实物图,这是本设计的硬件基础。下面详细介绍用到硬件资源。

 

(a)                                 (b)

图1

2.1  AI、AO通道

本次项目设计中的声音信号属于模拟信号,故无论采集还是回放都是使用模拟通道来完成软硬件交互。使用模拟采集通道(AI)采集声音信号,并将麦克风采集的模拟信号保存为声音文件。同时又可以使模拟通道生成信号(AO)输出模拟信号,并通过硬件扬声器回放声音信号。

使用AI通道采集由麦克风采集到的声音信号,采集到的声音信号可以在软件中做滤波处理,FFT变化得到频谱图,并可同时加上文件I/O线程,来存储采集到的声音信号。

模拟通道的采集思路:初始化、时钟采集、开始采集、循环中断连续读/写数据、结束采集任务清空资源。

2.2  使能端口DO

采集声音的硬件电路设计中,需要有一个使能信号。在开始AI采集之前,需要先将使能端口置高,无需再循环中连续运行更改端口状态。

数字通道DO的程序编写思路:硬件资源配置(通道配置)、通道读\写数据(while循环连续读写操作)、资源释放。

2.3  数值通道DO1

交通灯模块中使用的LED灯,可使用DO通道输出的TTL信号来控制其亮灭,完成对交通灯的逻辑控制。


第三章   前面板设计

本设计用到了选项卡控件。默认的是两个选项卡,可以在后面添加一个,分别命名为“系统概述”、“录放音”、“硬件资源”。

3.1  系统概述

系统概述里详细说明了系统实现的功能,本系统可以实现播放声音文件、路之所以文件并保存为WAV格式,根据离散傅氏变换的快速算法即快速傅里叶变换(FFT)分析出的声音频谱,得到声音的平均幅值,再根据幅值的大小,使用交通灯中的LED灯来模拟声音强度,灯亮的越多,表示声音越大,二灯亮的越少,表示声音越小。如图2所示:

图2

3.2  录放音

有录音按钮、播放按钮、显示录音时长、波形图标控件对声音频谱进行显示、在播放或者录音时磁带动图显示。如图3所示:

图3

在这里用到了自定义控件,录音按钮、播放按钮、录音磁带动图都是自定义控件。我是按照以下步骤来设计自定义控件的:

1)  打开控件编辑器窗口:右击所需要编辑的控件,高级-自定义。

2)  在控件编辑器窗口将模式切换为“自定义模式”,然后右击控件从文件导入图片。

3)  把布尔量对应的另外一个值用同样的方法也做修改。

4)  切换为“编辑模式”,点击控件查看是否为所需的效果。然后保存控件。

第四章  程序框图设计

应界面按钮响应,在事件结构的超时帧中执行状态机的某个状态,通过移位寄存器和枚举类型传递跳转指令。

状态机的组成有:while循环,移位寄存器,枚举类型,条件结构。本次设计中将枚举型控件变换为自定义控件。状态机种有十种状态:Idle(默认)、Init、OpenFileToRec、StartRecDaq、Record、OpenFileToPlay、StartPlayDaq、Play、StopPlayDaq、StopRecDaq。

4.1超时事件

4.1.1Idle

Idle(默认)状态时直接不进行任何操作,只负责数据流的传递。

4.1.2Init

是初始化时录音和播放控件布尔值均为F,表示未进行录音和播放操作,同时将其属性节点设置为可用,初始化四个通道,如图4所示:

图4

4.1.3 OpenFileToRec

当开始录音时会跳出一个对话框,默认文件名为test.wav,文件类型为wav,格式为声音文件。文件若未取消保存,则播放按钮不可用并且变灰,接着转移到写一个状态StartRecDaq;若取消保存,磁带播放动图不显示,只显示图片,接着返回Idle状态。如图5(a),(b)所示:

(a)

(b)

图5

4.1.4 StartRecDaq

此部分是采集声音信号,初始化通道(采用差分方式)、采样时钟设置、开始采集,同时数字信号输出配置通道、使能化信号置高,最后将声音文件保存。转移到Record状态。如图6所示:

图6

4.1.5 Record

此部分是输出模拟信号,配置通道地址,将采集到的声音信号进行频谱分析,在波形图标中显示出分析的结果,同时在前面板上显示录音时长,写入文件中。如图7所示:

图7

4.1.6 OpenFileToPlay

这个状态和OpenFileToRec类似,打开要播放的文件,此时播放按钮布尔值为假,磁带播放动图不显示,只显示图片,返回Idle状态:若取消打开文件,则录音按钮不可用并且变灰,接着转移到写一个状态StartPlayDaq。状态如下图8所示:

图8

4.1.7 StartPlayDaq

设置信号输出通道地址,设置采样时钟,接着转移到Play状态进行播放声音文件。如图9所示:

图9

4.1.8 Play

此部分进行声音文件的播放,先读取声音文件,接着进行FFT频谱分析,并对高低音以及音量进行处理,最后在波形图标中显示频谱图。根据频谱中幅度的高低来控制LED灯亮灭的个数。

图10

4.1.9 StopPlayDaq

当结束播放时,停止读取任务并清空资源,此时录音按钮可用,转移到Idle状态。如图11所示:

图11

4.1.10 StopRecDaq

当结束录音时,停止采集任务并清空资源,此时播放按钮可用,使能端口置低,转移到Idle状态。如图12所示:

图12


4.2 Record 事件

若开始录音,则磁带显示动图,即动图上的图片属性不可见,同时指向OpenFileRec状态;若未开始录音则图片可见,转向StopRecDaq状态。如       下图13所示:

图13

4.3 Sound 事件

这个事件的执行和Recoed 事件执行过程类似。如图14所示:

图14


第五章  图片展示与总结

5.1 效果图片展示

    

(a)                                                                                                                                     

                                  (b)

图15

5.2  总结

9月1号到9月10号,我们进行了虚拟仪器技术教程的学习。在此期间,在学到了很多关于labview的知识。这期间我们学习的内容包括: 

一,虚拟仪器的基本概念和特点,虚拟仪器的基本构成及相应的硬件设备,以及LabVIEW简介,运行机制,操作模板,帮助和初步操作等。 

二,各种程序结构包括循环结构、分支结构、顺序结构、公式节点和反馈节点。 

三,数组、簇结构和波形数据。 

四,图形显示,包括Graph控件、Chart控件、XY Graph、Express XY Graph 和其他图形的表达与显示。 

五,字符串和文件I/O,包括字符串、件I/O节点简介、文本文件的输入输出、电子表格文件的输入输出、二进制文件的输入和输出、数据记录文件的输入输出、波形文件的输入输出以及利用Express VIs进行文件的输入和输出操作。 

六,LabVIEW程序设计技巧,包括局部变量和全局变量、属性节点和VI属性设置。 

学之前,心里有着一丝害怕和担忧,因为潜意识里认为labview很难很难,就跟C语言似的,到了学的时候才发现比我想象的有趣,因为都是图形语言,看着也简单点,做的过程中,像是在造房子,挺有趣的。 

Labview还有一个很大的优点,就跟C语言似的,可以具体显示错误的地方。如果一个VI程序存在语法错误,则在面板工具条上的运行按钮将会变成一个折断的箭头,表示程序不能被执行。这时这个按钮被称作错误列表。点击它,则labview弹出错误清单窗口,点击其中任何一个所列出的错误,则出错的对象或端口就会变成高亮。在labview的工具条上有一个画着灯泡的按钮,点亮可以使程序以比较慢的速度运行,没有被执行的代码灰色显示,并显示数据流线上的数据值。这样,我们就可以在根据数据的流动状态跟踪程序的执行。为了查找程序总的逻辑错误,我们也可以使框图程序一个节点一个节点地执行,使用断点工具可以在程序的某一地点终止程序执行,用探针或者单步方式查看数据。 

当指导老师问及我们学的怎么样的时候,我很兴奋的回答:不是很难,挺有意思的。老师说,这刚学的都是入门,所以比较简单,但是要想真正学好,还是要下很多功夫的。学到后期,就印证了老师说的话,果然不能小看这门语言! 

到了后期学长们给我们布置一些小程序让我们自己编,编的过程中,我们都积极思考,这个时候才发现labview比我想象的难多了,确实不能小看,看学长运行给我们看的时候,觉得程序蛮简单的,可到自己编的时候,就遇到好多问题,运行的效果可能跟自己想要的差很多。在以后学习labview的过程中,得小心谨慎,认真对待! 

总之,这次学习中,我的收获颇为丰富,既学习了,也体验到学习这门课程的乐趣,尤其是在自己编出一个程序的时候,心里产生的那种自豪感。这样,即使再苦再累,也都是值得的


参考文献

[1] 杨树学 刘萱  LabVIEW宝典    [M].北京:电子工业出版社,2011.3

[2] 郑对元  精通LabVIEW虚拟仪器程序设计 [M].北京:清华大学出版社 2012.5

[3] 刘晋霞 胡仁喜 康士廷  Labview2012 中文版虚拟仪器从入门到精通[M].北京:机械工业出版社,2012.12.  

[4] 杨乐平 李海涛.北京LabVIEW高级程序设计[M].北京:清华大学出版社,2003.1-305

[5] 陈锡辉.Labview8.20程序设计从入门到精通[M].北京:清华大学出版社,2007.

    [6] 陈飞 谢启 应俊.虚拟仪器技术教程----基于nextboard的项目教学

相关推荐