亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino 16×2 LCD 完整教程:连接、编程与数据显示

在本 Arduino 教程中,我们将学习如何连接并使用 LCD(液晶显示器) 与 Arduino 配合工作。这类 LCD 显示器因价格低廉、适合显示简单信息(如传感器数据),广泛应用于各类电子项目中。

我已在多个 Arduino 项目中使用过它们,可参考以下项目:

  • Arduino 安全与报警系统项目
  • DIY 自动售货机——基于 Arduino 的机电一体化项目
  • Arduino 测距仪与数字水平仪项目

您可以观看下方视频或阅读以下图文教程。内容涵盖使用 LCD 字符显示器的所有核心知识:引脚定义、接线图及多个示例代码。

什么是 LCD 字符显示器?

LCD 字符显示器仅能以固定尺寸输出单个 ASCII 字符,通过组合这些字符形成文本。

仔细观察可发现,显示屏由许多微小矩形区域组成,每个区域为 5×8 像素网格。每个像素可独立点亮,从而在每个网格内生成字符。

Arduino 16×2 LCD 完整教程:连接、编程与数据显示

矩形区域的数量决定了 LCD 规格。最常见的是 16×2 LCD,拥两行、每行 16 个字符位。当然也有 16×1、16×4、20×4 等规格,工作原理相同。此外,这些 LCD 的背景色与字符色也有多种选择。

16×2 LCD 引脚定义

共有 16 个引脚,从左至右依次为:

  • GND:地线
  • VCC:接 Arduino 5V 引脚
  • Vo:对比度调节引脚,可接电位器控制显示对比度
  • RS(寄存器选择):低电平时发送指令(如设置光标、清屏),高电平时发送字符数据
  • R/W:读/写选择,通常接地(写模式)
  • E(使能):启用数据写入寄存器
  • D0–D7:8 位数据总线,本教程采用 4 位模式(仅用 D4–D7)
  • A、K:背光阳极与阴极
Arduino 16×2 LCD 完整教程:连接、编程与数据显示

得益于 LiquidCrystal 库,我们无需深究底层时序。该库支持 4 位与 8 位模式,本教程采用 4 位模式以节省 Arduino 引脚。

Arduino 与 LCD 接线图

按下图连接 16×2 LCD 至 Arduino:

Arduino 16×2 LCD 完整教程:连接、编程与数据显示

仅占用 6 个数字引脚:

  • LCD D4–D7 → Arduino D4–D7
  • Enable (E) → Arduino D2
  • RS → Arduino D1
  • R/W → GND
  • Vo → 电位器中间引脚

所需元件

  • 16×2 字符 LCD
  • 电位器(10kΩ)
  • Arduino 开发板
  • 面包板与跳线

调整 LCD 对比度

通过调节 Vo 引脚电压(0–5V)来设置对比度。电位器可实现精细调节。

Arduino 16×2 LCD 完整教程:连接、编程与数据显示

没有电位器怎么办?

可用两个电阻分压替代。实测 1kΩ 与 220Ω 分压得约 1V 效果良好。

Arduino 16×2 LCD 完整教程:连接、编程与数据显示

还可用 Arduino PWM 引脚输出模拟电压控制对比度:

analogWrite(11, 100); // D11 输出 PWM,占空比 100/255 ≈ 2V

LCD Arduino 代码示例

基础示例代码(对应视频第一个例程):

/* Arduino LCD 教程
 * 作者:Dejan Nedelkovski, www.HowToMechatronics.com
 */
#include 
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // (rs, enable, d4, d5, d6, d7)

void setup() {
  lcd.begin(16, 2); // 初始化 LCD,指定 16 列 2 行
}

void loop() {
  lcd.print("Arduino");
  delay(3000);
  lcd.setCursor(2, 1); // 第 2 列、第 1 行(从 0 开始)
  lcd.print("LCD Tutorial");
  delay(3000);
  lcd.clear();
  lcd.blink();      // 闪烁光标
  delay(4000);
  lcd.setCursor(7, 1);
  delay(3000);
  lcd.noBlink();    // 关闭闪烁
  lcd.cursor();     // 下划线光标
  delay(4000);
  lcd.noCursor();   // 隐藏光标
  lcd.clear();
}

代码要点解析

  1. 引入 LiquidCrystal 库(IDE 自带:草图 → 包含库 → LiquidCrystal)
  2. 创建 LCD 对象,参数顺序:(RS, Enable, D4, D5, D6, D7)
  3. setup() 中调用 begin(列, 行) 初始化
  4. print() 显示文本,setCursor(列, 行) 定位光标
  5. blink()/noBlink() 控制闪烁块光标,cursor()/noCursor() 控制下划线光标
  6. clear() 清屏

16×2 LCD 文本滚动示例

当文本超过 16 字符,可用 scrollDisplayLeft() 或 scrollDisplayRight() 实现滚动。

#include 
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);

void setup() {
  lcd.begin(16, 2);
  lcd.print("Scrolling Text Example");
}

void loop() {
  lcd.scrollDisplayLeft();
  delay(500);
}

若需更精细控制,可用 for 循环手动移动字符:

void loop() {
  // 向右滚动
  for (int i = 0; i <= 13; i++) {
    lcd.setCursor(i, 0);
    lcd.print("LCD");
    delay(500);
    lcd.clear();
  }
  // 向左滚动
  for (int i = 12; i >= 1; i--) {
    lcd.setCursor(i, 0);
    lcd.print("LCD");
    delay(500);
    lcd.clear();
  }
}

自定义字符(图形)的生成与显示

除 ASCII 字符外,还可定义 8 个自定义字符(每字符 8 字节,对应 5×8 像素)。

Arduino 16×2 LCD 完整教程:连接、编程与数据显示
#include 

byte heart[8] = {
  B00000, B01010, B11111, B11111,
  B01110, B00100, B00000, B00000
};
byte smile[8] = {
  B00000, B00000, B01010, B00000,
  B10001, B01110, B00000, B00000
};
byte lock[8] = {
  B01110, B10001, B10001, B11111,
  B11011, B11011, B11111, B00000
};
byte character[8] = {
  B11111, B10101, B11111, B01010,
  B01110, B11111, B01110, B01110
};

LiquidCrystal lcd(1, 2, 4, 5, 6, 7);

void setup() {
  lcd.begin(16, 2);
  lcd.createChar(0, heart);
  lcd.createChar(1, smile);
  lcd.createChar(2, lock);
  lcd.createChar(3, character);
  lcd.clear();
  lcd.print("Custom Character");
}

void loop() {
  lcd.setCursor(1, 1);  lcd.write(byte(0)); // 心形
  lcd.setCursor(5, 1);  lcd.write(byte(1)); // 笑脸
  lcd.setCursor(9, 1);  lcd.write(byte(2)); // 锁
  lcd.setCursor(13, 1); lcd.write(byte(3)); // 自定义
}

createChar(编号 0-7, 字节数组) 定义字符,write(byte(编号)) 显示。

Arduino 16×2 LCD 完整教程:连接、编程与数据显示

结语

本教程涵盖了 Arduino 驱动 LCD 字符显示器的核心知识。无论 16×2 还是其他规格,原理皆相同。这类显示器是电子项目中极具性价比的信息输出方案。

希望本教程对您有帮助。欢迎在评论区提问,别忘了查看我的 30+ Arduino 项目合集!

制造工艺

  1. 浸入式EDM终极指南:精密电火花成型加工全解析
  2. 铸铁入门:成分、用途、优缺点全解析
  3. 高炉全解析:定义、构造、工作原理与维护
  4. 钻床/钻铣加工中心全解析:类型、操作、维护、选型与工艺优化
  5. 钣金核心知识:材质分类、厚度标准与轧制工艺详解
  6. 铣床综合指南:功能、操作、类型与选型全知道
  7. 龙门刨床完全指南:定义、原理、类型、规格与优劣势
  8. 牛头刨床完全指南:定义、原理、类型、部件、优劣势与操作
  9. 金属加工全解析:从科学原理到工艺实践
  10. CNC 机床综合指南:特性、优势与应用全景
  11. 压力机/冲床完全指南:分类、功能、操作与安全
  12. 液压机原理、结构、分类与优劣势深度解析