---
title: 用 LabVIEW 制作示波器和波形发生器
date: '2025-11-17'
summary: 用 LabVIEW 制作示波器和波形发生器，记录控件、接线与实现过程。
lang: zh
category: Engineering
legacy_url: https://dozybot001.github.io/2025/11/17/2025-11-17-labview-vi/
---

## 简介

LabVIEW（Laboratory Virtual Instrument Engineering Workbench）是由美国国家仪器公司（National Instruments）开发的一款图形化编程平台，主要用于数据采集、仪器控制和工业自动化等领域。其核心特点是使用 “数据流” 编程模型，通过连接图标和连线的方式构建程序，而非传统的文本代码。

### 主要特点：

1. 图形化编程：使用 G 语言，通过框图（Block Diagram）和前面板（Front Panel）设计程序，直观易学。
2. 硬件集成：支持与多种硬件设备（如 DAQ 卡、PXI、GPIB 等）无缝连接，便于实时数据采集和控制。
3. 广泛应用：常用于测试测量、自动化控制、信号处理、教育科研等领域。
4. 丰富的函数库：提供大量内置函数和工具箱，用于数据分析、信号生成、滤波等操作。

### 典型应用：

- 构建虚拟仪器（如示波器、频谱分析仪、波形发生器等）
- 工业自动化与监控系统
- 实时控制系统
- 学术实验与科研项目

---

## 准备工作

### 内容简述

这一篇博客，我们用 LabVIEW 搭建一个简单的示波器和波形发生器。掌握基本技能后你也能自己设计各种虚拟仪器。
系统版本：Windows 10 Workstation 22H2
软件版本：LabVIEW 2025 Q3 专业版 (64 位)

### 软件安装

2019 年 NI 推出可以非商用免费使用的 LabVIEW 社区版，建议直接去 NI 官网注册账号后下载：[LabVIEW 下载链接](https://www.ni.com/zh-cn/support/downloads/software-products/download.labview.html)。~由于我的电脑上不知怎的出现了已经激活的全套专业版，所以就顺手拿来用了。~

---

## 波形发生器

### 概览
我们要制作的波形发生器前面板如下：

![](/blog/assets/2025-11-17-labview-vi/202511160952456.png)

所谓前面板，即仪器的外观面板，你想把仪器设计成什么样子，各种按键、旋钮的摆放，整体配色等等，都在这里修改。

程序面板：

![](/blog/assets/2025-11-17-labview-vi/202511160953965.png)

所谓程序面板，即仪器的逻辑实现面板，在这里进行图形化编程，实现各种功能。

### 简单入门——电源键

我们打开 LabVIEW，创建一个空白 VI(Virtual Instrument)，

![](/blog/assets/2025-11-17-labview-vi/20251112075909.png)

会自动弹出前面板和程序面板。

![](/blog/assets/2025-11-17-labview-vi/20251112080114.png)

在前面板空白处单击右键，弹出控件选板，可以在里面选择不同风格的按键、旋钮。对应地，程序面板空白处单击右键，弹出函数选板。一般地，在前面板的控件选板中选中控件，拖入面板中后，会在程序面板生成该控件对应的函数，例如我们在前面板添加一个按钮，在程序面板则会同步出现一个函数组件，这是一个布尔类型变量，

![](/blog/assets/2025-11-17-labview-vi/20251112080504.png)

我们将这个变量连接上 While 结构框的循环控制条件，

![](/blog/assets/2025-11-17-labview-vi/20251112080929.png)

就实现了这个按钮按下后，while 循环框内的内容开始循环的效果，显然这可以当成仪器的电源键。

![](/blog/assets/2025-11-17-labview-vi/20251112081223.png)

### 从前面板开始

创建一个虚拟仪器，我个人的习惯是从前面板开始，从产品定位以及最基本的功能出发，逐步扩展或优化功能。首先，一个波形发生器的最基本的功能是输出波形，所以要有输出波形的端口，虚拟仪器通过主机或者笔记本的端口输出。其次，我们可以将这个波形展示出来，那么就要一个屏幕。之后，我们可以选择不同的波形，再然后，选择波形的各种参数 ...... 假想自己是用户，如何更方便地操作仪器实现功能，逐步构建出前面板。然后将这些控件排列整齐，自己设计按钮、屏幕的大小、位置等等。我的波形发生器前面板：

![](/blog/assets/2025-11-17-labview-vi/202511160958591.png)

分别包含了这些功能的交互区域：

1. 波形显示
2. 波形选择
3. 波形参数调节
4. 波形参数显示
5. 附加波形
6. 波形输出

对应的，我的波形发生器程序面板如下：

![](/blog/assets/2025-11-17-labview-vi/202511161004840.png)

也分别对应了这 6 个功能。

### 外围结构

可以看到外围为两个结构框，一个开始按钮连接 case structure 包 while loop，这两个函数均在 structures 类里，表明一旦点击开始按钮，case structure 内的内容便执行，即进行 while 循环。

![](/blog/assets/2025-11-17-labview-vi/202511161012743.png)

### 内部功能

我们在内部再添加一个 case structure，右键点击方框顶部的 selector label，可以添加 case，

![](/blog/assets/2025-11-17-labview-vi/202511161021775.png)

下方还有多个选项进行 case 管理，这样就做好了一个多选择 case structure，可以连接上前面板中拉出来的菜单选择器对应的函数。

![](/blog/assets/2025-11-17-labview-vi/202511161028589.png)

每一个 case 对应的方框中的信号流程都不同，需要依次连接，例如在我的波形发生器的程序面板中，主波形选择方框中不同 case 的方框放置了不同类型的仿真波形，以此实现波形选择的功能。

![](/blog/assets/2025-11-17-labview-vi/202511161031646.png)

LabVIEW 的核心特点是 “数据流” 编程，可以看到，波形信号（蓝色线条）从主波形框中产生，再经过附加波形框，进入了 ** 波形图表 ** 和 **DAQ 助手 ** 两个端口中，DAQ 助手是与数据采集卡相关的函数组件，分别实现了波形显示与波形输出功能。

图中左侧的橙色组件，为前面板的旋钮控件对应的函数，前面版旋钮选择数据后通过这个控件传入程序面板，这里将其接入了仿真信号中，设置仿真信号的参数。为了，显示这些信息，我们可以直接再拉出一条信号线接入测量组件中得到波形参数数据，这里我们可以通过创建 Property Node 中的 value，

![](/blog/assets/2025-11-17-labview-vi/202511170515051.png)

直接调用这些值，然后输入显示面板对应的函数组件，即程序面板中的测量框中的内容。

![](/blog/assets/2025-11-17-labview-vi/202511170523078.png)

这样就简单地制作了一个波形发生器虚拟仪器，配合笔记本电脑或主机的端口，能够实现一个真正的波形发生器的功能。

---

## 示波器

### 概览

既然是设计自己的虚拟仪器，那么无需考虑成本，再大胆也无妨，甚至设计过四个屏幕的波形发生器，之前的设计图：

![](/blog/assets/2025-11-17-labview-vi/202511181411356.png)
![](/blog/assets/2025-11-17-labview-vi/202511181412564.png)

我们要制作的示波器前面板和程序面板如下：

![](/blog/assets/2025-11-17-labview-vi/202511092250429.png)
![](/blog/assets/2025-11-17-labview-vi/202511092251306.png)

可以看到这里我给示波器设计了两个屏幕.

示波器的基本功能就是显示波形，所以大大的主屏就用来显示原本的波形，并提供了波形参数的测量手段和显示窗口以及窗口操作方式。此外，还额外增加了对原始波形进行加窗、滤波、变换三个信号处理方式，处理后的波形就显示在副屏上。额外地，增加了一个导出图像的功能，能够将主屏或副屏的图像保存为到本地。

### 功能实现

观察深蓝色的数据流，这是外部输入的待显示、处理的信号数据。首先是一条支线直接连接到了主屏，另一条支线通过动态数据转换组件转换为数组后，进行加窗、滤波、变换操作。

![](/blog/assets/2025-11-17-labview-vi/202511170539028.png)

值得注意的是，通过修改主屏坐标轴范围实现对主屏窗口的移动，这里也是采用 Property Node 实现，

![](/blog/assets/2025-11-17-labview-vi/202511170815397.png)

例如，如果我们在前面板加入一个屏幕：

![](/blog/assets/2025-11-17-labview-vi/202511170819782.png)

那么右键单击程序面板中对应的函数组件，依照此路径就可以创建一个控制 X 轴最大值的 Property Node：

![](/blog/assets/2025-11-17-labview-vi/202511170820980.png)

这里的 AS 和 RS 分别代表 Autoset 和 Reset，均是通过对四个前面板输入量的反向输入，实现对主屏窗口的操作：

![](/blog/assets/2025-11-17-labview-vi/202511170830738.png)

拆开来看，其实利用 LabVIEW 创建一个虚拟仪器非常简单，软件本身就集成了很多非常强大的功能，只需要搭积木一样将其按照自己的想法组合起来即可。
