问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Arduino教程:液晶显示器的使用详解

创作时间:
作者:
@小白创作中心

Arduino教程:液晶显示器的使用详解

引用
CSDN
1.
https://blog.csdn.net/wangzhae/article/details/145581679

液晶显示器(LCD)是Arduino项目中常用的人机交互设备,能够直观地显示字符、数字等信息。本文将详细介绍16x2液晶显示器的工作原理、与Arduino的连接方式(并行和串行)、代码实现以及常见操作,帮助读者掌握这一重要组件的使用方法。

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

结构与组成

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

通信接口

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

并行方式硬件连接

材料准备

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

连接步骤

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

连接步骤

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

连接图

串行方式代码实现

使用Adafruit_LiquidCrystal库

#include <Adafruit_LiquidCrystal.h>
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.h>,引入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项目更加丰富和实用。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号