简介
欢迎来到另一篇 Velxio 教程!今天我们将使用 20x4 LCD 显示屏 和 Arduino Uno 构建一个经典的 Hello World 项目。这是一个非常适合初学者的项目,旨在学习如何将字符 LCD 与微控制器连接。我们将使用流行的 LiquidCrystal 库,它让控制显示屏变得轻而易举。
通过本文,您将学会如何连接 20x4 LCD、编写代码在多行上显示文本,甚至显示动态数据(如运行时间)。让我们开始吧!
电路讲解

我们的电路由两个主要组件组成:一个 Arduino Uno 和一个 20x4 LCD(型号 wokwi-lcd2004)。LCD 有 16 个引脚,但我们只需要其中 6 个用于数据和控制。接线如下:
- RS(寄存器选择) – 连接到 Arduino 引脚 12(绿色线)
- E(使能) – 连接到 Arduino 引脚 11(绿色线)
- D4 – 连接到 Arduino 引脚 5(蓝色线)
- D5 – 连接到 Arduino 引脚 4(蓝色线)
- D6 – 连接到 Arduino 引脚 3(蓝色线)
- D7 – 连接到 Arduino 引脚 2(蓝色线)
我们使用的是 4 位模式,只需要四条数据线(D4–D7),而不是八条。这节省了宝贵的 I/O 引脚。LCD 还需要电源(5V)和接地,但在 Velxio 中,放置组件时会自动连接这些。
要在 Velxio 中构建此电路:
- 打开 LCD Hello World 示例 或新建一个项目。
- 使用 组件选择器 添加一个 Arduino Uno 和一个 20x4 LCD。

- 点击引脚并拖动导线以匹配上述连接。您可以通过点击颜色样本更改导线颜色。
- 您的画布应如上方的电路图所示。
代码讲解

现在让我们看看代码。在 Velxio 中打开代码编辑器(您会看到带有语法高亮的 Monaco 编辑器)。以下是完整的代码:
// LiquidCrystal Library - Hello World
// Demonstrates the use a 20x4 LCD display
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(20, 4);
// Print a message to the LCD.
lcd.print("Hello, Arduino!");
lcd.setCursor(0, 1);
lcd.print("Velxio Emulator");
lcd.setCursor(0, 2);
lcd.print("LCD 2004 Test");
}
void loop() {
// set the cursor to column 0, line 3
lcd.setCursor(0, 3);
// print the number of seconds since reset:
lcd.print("Uptime: ");
lcd.print(millis() / 1000);
}
工作原理
- 包含库:
#include <LiquidCrystal.h>让我们能够使用所有 LCD 函数。 - 定义引脚:我们为引脚号创建常量:
rs = 12、en = 11、d4 = 5、d5 = 4、d6 = 3、d7 = 2。这些与我们的接线匹配。 - 创建 LCD 对象:
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);告诉库哪些引脚已连接。 - 在
setup()中:lcd.begin(20, 4);初始化显示屏,设置为 20 列和 4 行。lcd.print()在当前光标位置写入文本。lcd.setCursor(col, row)将光标移动到特定位置(从 0 开始)。
- 在
loop()中:- 我们将光标移动到第 3 行、第 0 列。
- 打印 “Uptime: ” 后跟
millis() / 1000(自复位以来的秒数)。
要运行代码,请点击工具栏中的 编译 按钮,然后点击 运行。

关键概念
- 4 位模式 vs 8 位模式:仅使用 4 条数据线(D4–D7)可节省引脚。LiquidCrystal 库会处理协议。
- 光标定位:
setCursor(col, row)– 记住行和列从 0 开始。 millis():返回程序启动以来的毫秒数。除以 1000 得到秒数。- 库管理:Velxio 默认包含 LiquidCrystal 库。您可以通过库管理器添加更多库。

常见问题与调试技巧
- 接线错误:仔细检查每条导线是否连接到正确的引脚。D4 和 D5 接反会导致字符乱码。
begin()尺寸错误:如果在 20x4 显示屏上使用lcd.begin(16, 2),文本可能会显示不全或错位。- 缺少库:如果编译时出现关于
LiquidCrystal.h的错误,请确保已安装该库(默认应已安装)。 - 光标不可见:默认情况下光标是隐藏的。使用
lcd.cursor()显示下划线光标。 - 文本不更新:在循环中,打印新数据前可能需要清除该行。使用
lcd.setCursor(0, 3); lcd.print(" ");来清除该行。
建议的扩展功能
在基本 Hello World 运行成功后,尝试以下增强功能:
- 滚动文本:使用
lcd.scrollDisplayLeft()或lcd.scrollDisplayRight()创建滚动消息。 - 显示传感器数据:读取模拟传感器(例如电位器)并在 LCD 上显示其值。
- 自定义字符:使用
lcd.createChar()创建自己的符号。 - 按钮输入:添加一个按钮来更改显示的消息。
- 多屏显示:使用状态机循环显示不同的信息页面。
亲自尝试!
准备好构建自己的 LCD 项目了吗?在 Velxio 中打开 LCD Hello World 示例 并开始实验。您可以修改代码、更改接线或添加新组件——全部在浏览器中完成,无需硬件。
祝创作愉快!