Arduino 第十五章:液晶显示器

引言

在前面的章节中,我们探索了多种 Arduino 输入输出设备的使用方法。在众多 Arduino 项目里,常常需要直观地呈现数据和信息,这时液晶显示器(LCD)就成了至关重要的组件。液晶显示器能够以字符、数字等形式清晰地展示各类信息,是实现人机交互的关键部分。本章将深入剖析 16x2 液晶显示器的工作原理、与 Arduino 的连接方式、代码实现以及常见操作,同时也会介绍双 LCD 的相关内容。

16x2 液晶显示器的工作原理

结构与组成

16x2 液晶显示器主要由液晶显示模块、控制器和驱动电路等构成。液晶显示模块包含液晶材料和玻璃基板,其核心原理是通过精准控制液晶分子的排列,改变光线的透过率,进而显示出字符和数字。控制器的作用是接收来自外部设备(如 Arduino)的指令和数据,并将其转化为液晶显示模块能够识别的信号。驱动电路则为液晶显示模块提供必要的电压和电流,确保其正常工作。

通信接口

常见的 16x2 液晶显示器具备并行接口和串行接口两种类型。并行接口借助多个引脚同时传输数据,具有速度快的优势,但需要占用较多的引脚资源;串行接口则通过较少的引脚以串行方式传输数据,虽然速度相对较慢,却能节省引脚。本章将着重介绍并行接口和串行接口的液晶显示器与 Arduino 的连接和使用方法。

并行方式硬件连接

材料准备

Arduino 开发板(如 Arduino Uno)16x2 液晶显示器电位器(用于调节对比度)杜邦线若干

连接步骤

电源连接:把液晶显示器的 VSS 引脚连接到 Arduino 的 GND 引脚,VDD 引脚连接到 Arduino 的 5V 引脚,为显示器提供稳定的电源。对比度调节:将液晶显示器的 VO 引脚连接到电位器的中间引脚,电位器的另外两个引脚分别连接到 5V 和 GND。通过旋转电位器,可以灵活调节液晶显示器的对比度,使显示内容更加清晰易读。寄存器选择(RS):将液晶显示器的 RS 引脚连接到 Arduino 的数字引脚 12。RS 引脚的作用是选择传输的数据是指令还是字符数据,高电平表示字符数据,低电平表示指令。读写控制(RW):将液晶显示器的 RW 引脚连接到 Arduino 的 GND 引脚。由于在大多数情况下我们只进行写操作,将 RW 接地可以简化电路设计。使能信号(E):将液晶显示器的 E 引脚连接到 Arduino 的数字引脚 11。E 引脚作为使能信号,在数据传输时,通过高低电平的变化来触发数据的读取或写入。数据引脚(D4 - D7):将液晶显示器的 D4 - D7 引脚分别连接到 Arduino 的数字引脚 5 - 8。在 4 位数据传输模式下,仅使用 D4 - D7 这 4 个数据引脚,能够有效减少引脚的使用。背光控制:将液晶显示器的 A(阳极)引脚通过一个 220Ω 的电阻连接到 5V,K(阴极)引脚连接到 GND,为显示器的背光提供电源。

连接图

+5V

|

|

[VDD] (LCD)

[VO] ---- [Potentiometer Middle Pin]

[VSS] ---- GND (Arduino)

[RS] ---- Digital Pin 12 (Arduino)

[RW] ---- GND (Arduino)

[E] ---- Digital Pin 11 (Arduino)

[D4] ---- Digital Pin 5 (Arduino)

[D5] ---- Digital Pin 6 (Arduino)

[D6] ---- Digital Pin 7 (Arduino)

[D7] ---- Digital Pin 8 (Arduino)

[A] ---- [220Ω Resistor] ---- +5V

[K] ---- GND (Arduino)

并行方式代码实现

使用 LiquidCrystal 库

Arduino 提供了 LiquidCrystal 库,极大地方便了我们对液晶显示器的控制。以下是一个简单的示例代码:

#include

int seconds = 0;

// 创建 LiquidCrystal 对象,指定 RS、E、D4、D5、D6、D7 引脚

LiquidCrystal lcd(12, 11, 5, 6, 7, 8);

void setup() {

// 初始化液晶显示器,设置列数为 16,行数为 2

lcd.begin(16, 2);

// 将光标移动到第一行第一列

lcd.setCursor(0, 0);

// 在当前光标位置打印字符串

lcd.print("Hello, World!");

}

void loop() {

// 将光标移动到第二行第一列

lcd.setCursor(0, 1);

// 打印 Arduino 程序的运行时间(秒)

lcd.print(millis() / 1000);

// 延迟 1 秒,使显示的时间每秒更新一次

delay(1000);

}

代码解释

库的引入

#include :引入 LiquidCrystal 库,该库提供了一系列控制液晶显示器的函数和方法。

液晶显示器对象的初始化

LiquidCrystal lcd(12, 11, 5, 6, 7, 8);:创建一个 LiquidCrystal 对象 lcd,并明确指定 RS、E、D4、D5、D6、D7 引脚的连接。

setup() 函数

lcd.begin(16, 2);:对液晶显示器进行初始化操作,设置其列数为 16,行数为 2。lcd.setCursor(0, 0);:将光标精准地移动到第一行第一列。lcd.print("Hello, World!");:在当前光标位置打印字符串 “Hello, World!”。

loop() 函数

lcd.setCursor(0, 1);:将光标移动到第二行第一列。lcd.print(millis() / 1000);:打印 Arduino 程序从启动开始的运行时间(以秒为单位)。delay(1000);:延迟 1 秒,确保显示的时间每秒更新一次。

串行方式硬件连接

材料准备

Arduino 开发板(如 Arduino Uno)16x2 液晶显示器I2C 转接板杜邦线若干

连接步骤

电源连接:把 I2C 转接板的 VCC 引脚连接到 Arduino 的 5V 引脚,GND 引脚连接到 Arduino 的 GND 引脚,为转接板和液晶显示器提供稳定的电源。I2C 通信线连接:将 I2C 转接板的 SDA 引脚连接到 Arduino 的 SDA 引脚,SCL 引脚连接到 Arduino 的 SCL 引脚,实现串行通信。

连接图

串行方式代码实现

使用 Adafruit_LiquidCrystal 库

#include

int seconds = 0;

// 创建 Adafruit_LiquidCrystal 对象

Adafruit_LiquidCrystal lcd(0);

void setup() {

// 初始化液晶显示器,设置列数为 16,行数为 2

lcd.begin(16, 2);

// 在当前光标位置打印字符串

lcd.print("Hello, World!");

}

void loop() {

// 将光标移动到第二行第一列

lcd.setCursor(0, 1);

// 打印秒数

lcd.print(seconds);

// 打开背光

lcd.setBacklight(1);

// 延迟 500 毫秒

delay(500);

// 关闭背光

lcd.setBacklight(0);

// 延迟 500 毫秒

delay(500);

// 秒数加 1

seconds++;

}

代码解释

库的引入

#include :引入 Adafruit_LiquidCrystal 库,该库专门用于控制支持 I2C 接口的液晶显示器。

液晶显示器对象的初始化

Adafruit_LiquidCrystal lcd(0);:创建一个 Adafruit_LiquidCrystal 对象 lcd,参数 0 表示设备地址。

setup() 函数

lcd.begin(16, 2);:初始化液晶显示器,设置其列数为 16,行数为 2。lcd.print("Hello, World!");:在当前光标位置打印字符串 “Hello, World!”。

loop() 函数

lcd.setCursor(0, 1);:将光标移动到第二行第一列。lcd.print(seconds);:打印变量 seconds 的值。lcd.setBacklight(1);:打开液晶显示器的背光。delay(500);:延迟 500 毫秒。lcd.setBacklight(0);:关闭液晶显示器的背光。delay(500);:再延迟 500 毫秒。seconds++;:变量 seconds 的值加 1。

常见操作

清屏

lcd.clear();

该函数的作用是清除液晶显示器上的所有内容,并将光标移动到第一行第一列。

光标控制

lcd.setCursor(col, row);

col 表示列数(从 0 开始计数),row 表示行数(从 0 开始计数)。该函数用于将光标移动到指定的位置。

显示字符和数字

lcd.print("Text"); // 显示字符串

lcd.print(123); // 显示数字

print() 函数非常强大,可以用于显示字符串、数字等各种数据类型。

总结

通过本章的学习,我们全面了解了 16x2 液晶显示器的工作原理,熟练掌握了其与 Arduino 的并行和串行硬件连接方式,并学会了使用 LiquidCrystal 库和 Adafruit_LiquidCrystal 库来控制液晶显示器显示字符和数字。同时,我们也探讨了双 LCD 的连接和代码实现。液晶显示器能够为 Arduino 项目提供直观的信息显示功能,在数据监测、智能设备等领域有着广泛的应用。在后续的项目中,你可以根据实际需求进一步扩展功能,如显示传感器数据、实现菜单界面等,让你的 Arduino 项目更加丰富和实用。

友情链接: