LCD1602液晶显示屏使用

本文介绍了LCD1602的原理、连接方式,重点讲解了直接控制方式和IIC通信方法,以及如何使用ESP32通过LiquidCrystal_I2C库驱动LCD1602,包括硬件连接和简单的软件编程示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LCD1602介绍

LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符号。LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,即可以显示出图形。
LCD1062展示

LCD1602连接方式

由图可知,LCD1602由很多引脚,使用单片机驱动LCD1602需要很多的IO引脚,为了减少IO引脚的使用数量,采用IIC通信减少IO口的使用数量

直接控制方式

LCD1602的16个接口与单片机IO相连,其中8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节V0和背光源AK。

序号符号功能序号符号功能
1VSS电源地9D2数据
2VDD电源正极10D3数据
3V0液晶显示偏压11D4数据
4RS数据/命令选择12D5数据
5R/W读/写选择13D6数据
6EN使能信号14D7数据
7D0数据15A背光源正极
8D1数据16K背光源负极

引脚1(VSS/GND):地引脚
引脚2(VDD/VCC):电源引脚
引脚3(V0):液晶显示器对比度引脚,接正电源时对比度最弱,接地时对比度最高,使用时可以通过外接一个电位器调整其对比度。
引脚4(RS):寄存器选择脚,高电平时选择数据寄存器、低电平时选择指令寄存器。
引脚5(R/W):读(read)/写(write)信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或显示地址;当RS为低电平,R/W为高电平时,可以读忙信号;当RS为高电平,R/W为低电平时,可以写入数据。
引脚6(E):使能端,当E端由高电平跳变为低电平时,液晶模块执行命令。
引脚7-14(D0~D7): 8位双向数据线 用于单片机向1602写入数据和从1602读取数据
引脚15(BLA):背光源正极
引脚16(BLK):背光源负极

知道引脚所对应的意义即可对应datasheet的时序写驱动程序,由于时序复杂,本篇文章以第二种,IIC通信的方式驱动LCD1602

间接控制方式

间接控制方式也称为四线制工作方式,实际上给1602屏增加一块IIC驱动版,将1602的16个管脚连接到由PCF8574T作为主要芯片的驱动版上,将接口转换为IIC再连接开发板

符号功能
VCC电源5V
GND接地
SDA数据线
SCK时钟线

实验内容

使用ESP32驱动LCD1602

准备材料

ESP32开发版,LCD1602A液晶屏幕,杜邦线

硬件连接

LCD1602接5V电源,GND连接GND,SCL接D22,SDA接D21,因为GPIO21/22为硬件IIC接口对应的SDA和SCL。
在这里插入图片描述

软件驱动

软件平台

软件选择VScode+PlatformIO,选择Espressif ESP32 Dev Module,Arduino框架

LCD1602库安装

选择Libraries,搜索LiquidCrystal_I2C,点击Add to Project,选择添加的项目
在这里插入图片描述
在这里插入图片描述

LiquidCrystal_I2C库函数介绍

在正式程序编写前需要了解一下LiquidCrystal_I2C库的基本使用,下图为LiquidCrystal_I2C库常用的函数。在这里插入图片描述

程序编写

简单的使用
#include <Arduino.h>
#include <LiquidCrystal_I2C.h>

//构造LCD对象,设置地址,列数,行数
LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
// 初始化lcd对象
  lcd.init();
// 开启背光
  lcd.backlight();
// 打印内容
  lcd.printf("Hello Word!");
// 设置光标开始的位置第2行第一列  
  lcd.setCursor(0,1);
// 打印内容
  lcd.print("Are you ok");

}
void loop() {

}

在这里插入图片描述

此案例只是在液晶屏展示打印内容,注意,打印的字符数量每行小于等于16个

打印从串口的数据
#include <Arduino.h>
#include <LiquidCrystal_I2C.h>

//构造LCD对象,设置地址,列数,行数
LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
// 初始化lcd对象
  lcd.init();
// 开启背光
  lcd.backlight();
// 设置串口波特率
  Serial.begin(9600);

}
void loop() {
// 检测串口输入内容
  if(Serial.available()){
    // 等待一段时间,等待串口输入完毕
    delay(20);
    // 清除上次的展示内容
    lcd.clear();
    // 打印内容
    lcd.printf("You input data!");
    // 设置光标开始的位置第2行第一列  
    lcd.setCursor(0,1);
    // 检测串口缓冲区数据,并展示到LCD屏幕上
    while(Serial.available()){ 
      // 打印内容
      lcd.write(Serial.read());  
    }

  }

}


在这里插入图片描述

从串口助手输入数据,串口检测到输入的内容,把内容在液晶屏上展示,后续使用熟练可配合debug使用,在液晶屏打印断点内容

致谢

写的不好的地方,还请大家多多指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值