基于LabVIEW任意波形发生器(含全部程序截图)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

虚拟仪器课程设计报告

一、综述

1、信号发生器的发展

信号发生器是一种能够提供一定波形、频率和输出电平的信号源设备。40年代开

始出现用于测试各种接收机的标准信号发生器。60年代出现了函数发生器,其多采用模拟电子技术,由分立元件或模拟集成电路构成,一般仅能产生正弦波、方波、锯齿波和三角波等几种比较简单的波形。由于模拟电路漂移问题的存在,其输出稳定性较差,同时要产生较为复杂的信号也比较困难。70年代以后开始出现微处理器,利用微处理器、模数转换器等,使得较复杂波形的产生容易了很多。

信号发生器的种类繁多,按输出波形可分为正弦信号发生器、脉冲波信号发生器、函数

发生器等等。按产生频率的方法又可以分为谐振法和合成法。

2、基于虚拟仪器的信号发生器

虚拟仪器与传统仪器相比有很多优势。就信号发生器而言,利用虚拟仪器可以很轻易地实现对信号的处理,仪器的功能能够根据需要随时进行适当调整,容易进行调试,而避免了传统仪器面临的不断更新换代的问题。同时,虚拟仪器的前面板与传统仪器相比对用户更加友好,使用起来更加清晰。

就信号发生器而言,利用虚拟仪器进行设计可以更加轻易获得所需信号,例如不具有明显周期规律的任意波形。同时,在硬件采集信号设备完好的情况下,很有效的避免了传统信

号发生器的波动不稳定性。

3、任务描述

本次课程设计利用Labview8.5以及实验室的信号采集设备,实现任意波形发生器的功能。该信号发生器除了能够产生正弦波、方波、三角波和锯齿波四种典型波形,还能根据输入的公式产生公式波形,幅值、频率等均可以调节。同时,还实现了通过手绘实现任意波形的输出。输出的信号均可以与幅值可调的均匀白噪声进行迭加。

二、程序说明

1、整体流程

该任意波形信号发生器的整体流程如下:

2、

程序具体说明

1、外层条件结构

该程序最外层用条件结构实现波形类型的选择。共有正弦波、方波、三角波、锯齿波、公式波形和手绘任意波形六种波形类型,用一个文本下拉列表选择,将选择结果传给条件结构的分支选择器,选择与所选波形类型相对应的条件分支进行执行。

2、波形属性设置

波形设置属性包括四种经典波形的幅值,频率,相位设置,方波的占空比设置,公式波形的波形公式规律输入,经典波形和公式波形的采样信息设置(决定产生多长时间的波形)以及包括手绘任意波形在内的所有波形迭加均匀白噪声幅值的设定。

2、经典波形与公式波形的产生

由于在程序设计上,经典波形和公式波形的产生几乎相同。因此这里选取方波为代表介绍。

在方波所对应的条件分支中,调用自带的方波波形VI,分别将设置的波形属性频率、幅值、相位、采样信息输入到方波波形VI,同时通过自带的均匀白噪声波形VI产生设定幅值的白噪与产生的方波波形迭加(本程序中信号的迭加用到元素同址操作,在算法说明部分会详细说明)。迭加后的信号作为条件结构的输出,即最终的信号。

3、手绘任意波形的产生

信号发生器的前面板见上图。当选择手绘任意波形时,需要现在左面的XY图中利用鼠标画出所需波形,点击完成按钮后最终输出波形在右侧的波形图中显示。

手绘任意波形波分对应的条件分支程序如下:

手绘波形过程中数据的获取是利用基于While循环的事件结构。其中结构共响应5种事件。分别是超时,鼠标按下,鼠标移动,鼠标释放和值改变(对应绘制波形完成按钮)。

选择了手绘任意波形后,当鼠标进入XY范围并且按下鼠标时,与这一事件对应的响应时将布尔真值赋给前面板上的布尔输入控件。因此,设置改指示灯的目的是反映鼠标是否按下,同时其属性节点在其他事件分支中也会被使用到。

当鼠标移动时,执行下面的响应。将获得的鼠标实时的位置通过坐标至XY映射函数转

换成XY图上的坐标值,其为一个含有X、Y值两个元素的簇。再利用数组插入函数,不断地将获得到的鼠标新的位置加入数组,组成的数组在While循环结束后输出,并打开While 循环的移位寄存器,这样就可以使得数组保存之前鼠标走过的路线。

在这里,一个比较重要的问题是确保每次获得的新的鼠标位置的X值是不断增大的,即手绘图形的时候不能往回画。为了解决这一问题,只需将获取到的即时鼠标X值与上一X值比较即可,然后用逻辑与,确保只有在X增大和鼠标按下(用到布尔控件的属性节点)同时满足时,才会将得到的即时鼠标位置作为新元素加入到坐标位置数组中。具体是利用数组大小这一函数获得目前坐标位置数组的元素个数,由于数组的元素索引是从0开始,因此将获得到的数组大小减1即为最后一个元素的索引,由于坐标元素都是簇的元素,因此将其按名称接触捆绑获得X坐标,同时也将即时的坐标按名称接触捆绑获得即时X坐标。然后将两者进行大小比较,当满足X增大时得到真值输入到逻辑与中,再将逻辑与的输出接到条件结构的分支选择器,当为真时,则将新获得的即时坐标值作为新元素加入到数组中。将得到的数组赋给“值”,即实现移动鼠标的同时在XY图中绘出图线。

当图线绘制完成时,鼠标释放,此时进行下图中的相应。即将布尔假值赋给指示灯控件,表示鼠标不再按下。同时保留之前绘制的图线坐标。

鼠标释放后,当点击绘制波形完成按钮时,响应值改变的事件,While循环中止,并把最终的坐标数组输出。

三、算法说明

1、任意波形发生器的程序中算法部分比较少,主要是在选择手绘任意波形时要把获得的XY图中的坐标转换成能够输入给波形图的等时间间隔的波形数据。

首先,将根据手绘图线得到的数据通过一个For循环,打开自动索引隧道,在循环中按名称接触捆绑分别获得X值和Y值,循环次数即为初始数组的大小。For循环结束后即分别获得X、Y数组。利用X数组的最后一个元素减去第一个元素,即得到了手绘波形的时间长度,精度为0.01。然后再通过一个For循环获得等时间间隔0.1s,时间长度与手绘波形时间长度相等的数组。对于原始的X、Y数组利用插值,在获得的等时间间隔点上获得Y值,这样就获得了等时间间隔0.01s的波形数据,由于均匀白噪的时间间隔默认为1s,因此需要获取白噪的波形成分Y,再创建时间间隔为0.01s的白噪波形才能和插值得到的波形相迭加。

相关文档
最新文档