【史上最全面arduino esp32教程】I2C接口LCD1602的使用

文章目录

  • 前言
  • 一、安装驱动库
  • 二、LCD1602的各种操作
    • 2.1 点亮LCD1602
    • 2.2 LCD1602其他函数
      • 清除显示屏上的所有字符
      • 将光标位置移动到显示屏的起始位置
      • 关闭显示屏,不会显示任何字符
      • 打开显示屏,开始显示字符
      • 关闭光标闪烁
      • 打开光标闪烁,使光标呈现闪烁效果
      • 隐藏光标
      • 显示光标
      • 将显示屏内容向左滚动
      • 将显示屏内容向右滚动
      • 设置打印方向为从左到右
      • 设置打印方向为从右到左
      • 设置光标移动方向为从左到右
      • 设置光标移动方向为从右到左
      • 设置光标右移一位
      • 设置光标左移一位
      • 关闭背光
      • 打开背光
      • 使显示屏内容滚动
      • 停止显示屏内容滚动
      • 自定义字符生成
      • 设置光标的位置
      • 控制背光的具体亮度
  • 总结


前言

欢迎来到史上最全面的Arduino ESP32教程!本教程将重点介绍如何使用I2C接口连接LCD1602液晶显示屏,并通过Arduino ESP32控制显示内容。通过学习本教程,你将学会如何使用I2C通信协议和LCD1602库,以及如何利用ESP32开发板与LCD1602一起创建令人印象深刻的显示效果。


一、安装驱动库

我们只需要进行下面这些操作即可安装好我们的驱动库
在这里插入图片描述

二、LCD1602的各种操作

2.1 点亮LCD1602

我们所需要点亮的是I2C接口的LCD1602,所以我们需要使用arduino的I2C初始化操作
我们通过他的源码可得到他使用的是我们arduino里面的WireI2C对象,所以我们在点亮LCD之前需要先初始化Wire对象
在这里插入图片描述

  1. 初始化Wire对象
    我们把他的数据线和时钟线设置成20和19,时钟频率为400kHz
Wire.begin(20,19,4000000);
  1. 构造LCD1602对象:
    LCD1602的构造函数定义如下:
LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);

参数1为LCD I2C设备的地址,参数2为LCD的列数,参数3为LCD的行数

我们需要使用的是LCD1602,我们可以像下面这样去初始化一个对象

LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C 地址为 0x27,行数为 2,列数为 16
  1. LCD1602 begin
    我们可以使用下面这个函数让LCD1602开始工作:
void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS );

cols:指定LCD的列数,即显示屏每行可以显示的字符数。取值可以是1到16,表示1到16列。
rows:指定LCD的行数,即显示屏的行数。取值可以是1到2,表示1到2行。
charsize(可选参数):指定字符的大小。取值可以是LCD_5x8DOTS(默认值)或LCD_5x10DOTS,分别表示字符尺寸为5x8像素或5x10像素。

  1. 打开背光
    我们可以使用下面这个函数打开背光:
void backlight();

总的代码如下:

#include <Wire.h> // I2C 库
#include <LiquidCrystal_I2C.h> // LiquidCrystal_I2C 库LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C 地址为 0x27,行数为 2,列数为 16void setup() {Wire.begin(20,19,4000000);lcd.begin(16, 2); // 初始化 LCDlcd.backlight(); // 打开背光
}void loop() {// put your main code here, to run repeatedly:delay(10); // this speeds up the simulation
}

他的效果如下:
在这里插入图片描述

2.2 LCD1602其他函数

注意!!!!!!!注意!!!!!!!注意!!!!!!!注意!!!!!!!下面这个非常重要!!!
LiquidCrystal_I2C这个类继承于Print类,所有他可以使用的函数,你也可以使用,他打印出去的东西会显示到LCD1602上面的

清除显示屏上的所有字符

void clear()

作用:清除显示屏上的所有字符。
参数:无。
返回值:无。

将光标位置移动到显示屏的起始位置

void home()

作用:将光标位置移动到显示屏的起始位置(左上角位置)。
参数:无。
返回值:无。

关闭显示屏,不会显示任何字符

void noDisplay()

作用:关闭显示屏,不会显示任何字符。
参数:无。
返回值:无。

打开显示屏,开始显示字符

void display()

作用:打开显示屏,开始显示字符。
参数:无。
返回值:无。

关闭光标闪烁

void noBlink()

作用:关闭光标闪烁。
参数:无。
返回值:无。

打开光标闪烁,使光标呈现闪烁效果

void blink()

作用:打开光标闪烁,使光标呈现闪烁效果。
参数:无。
返回值:无。

隐藏光标

void noCursor()

作用:隐藏光标。
参数:无。
返回值:无。

显示光标

void cursor()

作用:显示光标。
参数:无。
返回值:无。

将显示屏内容向左滚动

void scrollDisplayLeft()

作用:将显示屏内容向左滚动。
参数:无。
返回值:无。

将显示屏内容向右滚动

void scrollDisplayRight()

作用:将显示屏内容向右滚动。
参数:无。
返回值:无。

设置打印方向为从左到右

void printLeft()

作用:设置打印方向为从左到右。
参数:无。
返回值:无。

设置打印方向为从右到左

void printRight()

作用:设置打印方向为从右到左。
参数:无。
返回值:无。

设置光标移动方向为从左到右

void leftToRight()

作用:设置光标移动方向为从左到右。
参数:无。
返回值:无。

设置光标移动方向为从右到左

void rightToLeft()

作用:设置光标移动方向为从右到左。
参数:无。
返回值:无。

设置光标右移一位

void shiftIncrement()

作用:设置光标右移一位。
参数:无。
返回值:无。

设置光标左移一位

void shiftDecrement()

作用:设置光标左移一位。
参数:无。
返回值:无。

关闭背光

void noBacklight()

作用:关闭背光。
参数:无。
返回值:无。

打开背光

void backlight()

作用:打开背光。
参数:无。
返回值:无。

使显示屏内容滚动

void autoscroll()

作用:使显示屏内容滚动。
参数:无。
返回值:无。

停止显示屏内容滚动

void noAutoscroll()

作用:停止显示屏内容滚动。
参数:无。
返回值:无。

自定义字符生成

void createChar(uint8_t, uint8_t[])

作用:自定义字符生成,可以在显示屏上显示自定义的图标或特殊字符。
参数:
uint8_t:自定义字符的索引号(0-7),可以创建8个自定义字符。
uint8_t[]:自定义字符的像素数据,包含8个字节的数组表示字符的图案。
返回值:无。

设置光标的位置

void setCursor(uint8_t, uint8_t)

作用:设置光标的位置。
参数:
uint8_t:列号(从0开始计数),指定光标所在的列。
uint8_t:行号(从0开始计数),指定光标所在的行。
返回值:无。

控制背光的具体亮度

void setBacklight(uint8_t new_val);
我们可以设置一个0~255的数值进去,进而设置背光的亮度


总结

本教程通过详细的介绍和示例代码,帮助你了解了如何使用I2C接口连接LCD1602液晶显示屏,并实现与Arduino ESP32的通信。我们首先简要介绍了LCD1602和I2C通信协议的基本原理,然后详细讲解了如何在ESP32上配置I2C通信,并使用LCD1602库控制液晶显示屏。

在本教程的示例代码中,我们展示了几个常见的操作,包括初始化LCD1602、显示文本、清除屏幕内容和移动光标等。通过这些示例,你可以理解LCD1602与ESP32的交互方式,并且可以根据自己的需求进行更复杂的操作和扩展。

通过学习本教程,你不仅会掌握使用I2C接口连接LCD1602的方法,还会了解如何充分利用ESP32的功能来实现更多交互效果,例如显示数据、传感器信息等。此外,你还能够将本教程中的知识应用到其他项目中,为你的电子制作增添更多创意和趣味。

希望你通过本教程的学习,能够更好地掌握Arduino ESP32和LCD1602的应用,为你的电子制作项目带来更丰富的功能和展示效果。祝你在学习和创作过程中取得丰硕的成果!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/283736.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

踩了一天Prophet的fbprophet坑

pip怎么安装Prophet 安装了这个不行,要安装fbprophet 然后安装不起 哦豁 anaconda虚拟环境安装好将其导入pycharm from fbprophet import Prophet 然后不报错了,很稀奇对吧,不报错了 但是运行还是给你显示 没有fbprophet 绝望了,找人吧 通过官方网站安装最新版Prophet,但是…

洛谷_P1873 [COCI 2011/2012 #5] EKO / 砍树_python写法

P1873 [COCI 2011/2012 #5] EKO / 砍树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) n, m map(int,input().split())data list(map(int,input().split())) h 0 def check(mid):h 0for i in data:if i>mid:h (i-mid)if h < m:return Trueelse:return Falsel 0 r …

游戏反云手机检测方案

游戏风险环境&#xff0c;是指独立于原有设备或破坏设备原有系统的环境。常见的游戏风险环境有&#xff1a;云手机、虚拟机、虚拟框架、iOS越狱、安卓设备root等。 这类风险环境可以为游戏外挂、破解提供所需的高级别设备权限&#xff0c;当游戏处于这些风险环境下&#xff0c…

【保姆级】前端使用node.js基础教程

文章目录 安装和版本管理&#xff1a;npm 命令&#xff08;Node 包管理器&#xff09;&#xff1a;运行 Node.js 脚本&#xff1a;调试和开发工具&#xff1a;其他常用命令&#xff1a;模块管理&#xff1a;包管理&#xff1a;调试工具&#xff1a;异步编程和包管理&#xff1a…

python的O2O生鲜食品订购flask-django-nodejs-php

用户只能通过一些类似软件进行查看生鲜超市&#xff0c;这样的管理方式仍然是比较机械传统的&#xff0c;本文通过对市面上常见的线上管理系统与现实生活中结合问题的讨论&#xff0c;从一个微信小程序的O2O生鲜食品订购角度进行需求分析&#xff0c;提供一些新的思路&#xff…

使用Lerna搭建业务组件库

Lerna基本概念 Lerna 是一个用来优化托管在 git\npm 上的多 package 代码库的工作流的一个管理工具,可以让你在主项目下管理多个子项目&#xff0c;从而解决了多个包互相依赖&#xff0c;且发布时需要手动维护多个包的问题。 主要功能&#xff1a; 为单个包或多个包运行命令 …

基于Gabor滤波器的指纹图像识别,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

vben admin路由跳转拿不到param参数问题

vben admin路由跳转拿不到param参数问题 问题原因&#xff1a; 也就是说&#xff0c;从Vue Router的2022-8-22 这次更新后&#xff0c;我们使用上面的方式在新页面无法获取&#xff1a; vue也给我们提出了解决方案&#xff1a; ​ 1.使用 query 的方式传参 ​ 2.将参数放…

阿里云服务器租用一年多少钱?2024年最新阿里云租用价格

2024年阿里云服务器租用费用&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元&#xff0c;ECS u1服务器2核4G5M固定带宽199元一年&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;2核4G服务…

C# 对App.config、Web.config的appSettings节点数据进行加密

appSettings加密原因&#xff0c;就是因为容易暴露服务器账号和密码&#xff0c;而且客户也不允许 使用ASP.NET提供的命令工具aspnet_regiis来创建加密命令&#xff1b;aspnet_regiis是提供了直接对配置文件加密的功能的&#xff1b;并且使用aspnet_regiis加密的配置节点在读取…

Warning logs 2024-03-23

给旧的笔记本安装ubuntu系统&#xff0c;并实现ssh远程连接 1、下载ubuntu系统 ubuntu下载链接 选择带桌面版本 2、准备U盘 3、使用UltraISO制作启动盘 破解UltraISO软件 输入 注册名&#xff1a;王涛 注册码&#xff1a;7C81-1689-4046-626F 使用UltraISO&#xff0c…

【python_往企业微信群中发送文件】

python_往企业微信群中发送文件 这个是用企业微信群机器人的功能&#xff0c;没有用到后台应用。群机器人 #-*- coding:utf-8-* import requests#类型&#xff1a;voice,file file_type"file" file_path"D:\desktop\不过.jpg" webhookkey"xxxx"#…

vue项目:使用xlsx导出Excel数据

文章目录 一、安装xlsx二、报错及解决三、编写公共方法四、方法使用 一、安装xlsx 执行命令&#xff1a;npm i xlsx file-saver --save 二、报错及解决 使用时&#xff1a;import XLSX from "xlsx"; 发现如下报错信息 报错原因&#xff1a;xlsx版本不兼容。 解…

RabbitMQ部署指南

RabbitMQ部署指南 RabbitMQ部署指南1.单机部署1.1.下载镜像1.2.安装MQ 2.安装DelayExchange插件2.1.下载插件2.2.上传插件2.3.安装插件 3.集群部署2.1.集群分类2.2.获取cookie2.3.准备集群配置2.4.启动集群2.5.测试 4.镜像模式4.1.镜像模式的特征4.2.镜像模式的配置4.3.测试 5.…

Modbus TCP转Profinet网关如何实现Modbus主站与多设备通讯

在工业控制领域中&#xff0c;Modbus TCP转Profinet网关&#xff08;XD-ETHPN20&#xff09;扮演着连接不同设备间通讯的重要角色。当将Modbus主站与十几台服务器进行通讯时&#xff0c;通过modbus tcp转profinet网关&#xff08;XD-ETHPN20&#xff09;设备将不同协议间的数据…

Spring-声明式事务实例(有详细注释)

前提知识 Spring-IOC容器注解方式使用https://blog.csdn.net/m0_61160520/article/details/136784799?spm1001.2014.3001.5501切点表达式https://blog.csdn.net/m0_61160520/article/details/136782885?spm1001.2014.3001.5501 案例 1.创建项目 2.导入依赖 <dependen…

3、Jenkins持续集成-Jenkins安装和插件管理

文章目录 一、Jenkins安装1. 安装JDK2. 获取jenkins安装包3. 安装包上传到服务器&#xff0c;进行安装4. 修改Jenkins配置&#xff08;1&#xff09;低版本Jenkins的rpm包&#xff08;2&#xff09;高版本Jenkins的rpm包 5. 启动Jenkins6. 打开浏览器访问7. 获取并输入admin账户…

公司内部局域网怎么适用飞书?

随着数字化办公的普及&#xff0c;企业对于内部沟通和文件传输的需求日益增长。飞书作为一款集成了即时通讯、云文档、日程管理、视频会议等多种功能的智能协作平台&#xff0c;已经成为许多企业提高工作效率的首选工具。本文将详细介绍如何在公司内部局域网中应用飞书&#xf…

Docker学习笔记 - 常用命令

目录 基本概念常用命令使用docker compose启动脚本创建自己的image Docker命令文档 1. 下载一个image 从hub.docker.com下载一个image。 docker pull [image name]下载时指定image的tag。 docker pull [image name]:<tag>举例&#xff0c;下载postgre的tag为alpine…

拷贝他人maven仓库jar包到自己本地仓库,加载maven依然提示无法下载对应依赖

所遇问题&#xff1a; 拷贝他人maven仓库jar包到自己本地maven仓库repository下的对应依赖位置&#xff0c;重新加载idea的maven依然提示无法下载对应依赖。 解决办法&#xff1a; 在maven->repository找到对应报错依赖路径&#xff0c;删除xxx.repositories 和 xxx.lastU…