原文地址:https://circuitdigest.com/microcontroller-projects/arduino-lcd-interfacing-tutorial

将16x2 LCD与Arduino连接方法

ARDUINO的

经过**迪利普·拉贾(Dilip Raja)** 2015年6月4日19

为了在人的世界和机器的世界之间建立良好的沟通,显示单元扮演着重要的角色。因此,它们是嵌入式系统的重要组成部分。显示单元-不论大小,都遵循相同的基本原理。除了图形显示和3D支付等复杂的显示单元外,还必须知道如何使用16x1和16x2单元之类的简单显示。16x1显示单元将包含16个字符,并在一行中。的16×2 LCD将在总16英寸1 32个字符第一 线和另一条16在2次 线。在此必须理解,每个字符中都有5x10 = 50像素,因此要显示一个字符,所有50像素必须一起工作。但是我们不必担心,因为人机界面中还有另一个控制器(HD44780)负责控制像素。(您可以在LCD单元中看到它,它是背面的黑眼圈)。

在本教程中,我们将使用ARDUINO UNO连接16x2 LCD。与普通的开发板不同,将LCD连接到ARDUINO的过程非常简单。在这里,我们不必担心数据发送和接收。我们只需要定义引脚号,它就可以在LCD上显示数据了。

所需组件

硬件: ARDUINO UNO,电源(5v),JHD_162ALCD(16x2LCD),100uF电容器。

软体: Arduino IDE(Arduino nightly)。

电路图和说明

16x2 LCD显示模块

带有HD44780控制器的16x2 LCD显示模块

之所以命名为**16×2 LCD,**是因为;它有16列和2行。有很多可用的组合,例如8×1、8×2、10×2、16×1等。但是最常用的是16 * 2 LCD,因此我们在这里使用它。

上面提到的所有LCD显示屏都将具有16针,并且编程方法也相同,因此选择权留给您。以下是16x2 LCD模块引脚排列和引脚描述

序号 引脚号 引脚名称 引脚类型 引脚说明 引脚连接
1 引脚1 GND 电源极引脚 这是LCD的接地引脚 连接到MCU /电源的接地
2 引脚2 VCC 电源极引脚 这是LCD的电源电压引脚 连接到电源的电源引脚
3 引脚3 V0 / VEE 控制引脚 调整液晶显示屏的对比度。 连接到可以提供0-5V电源的可变POT
4 引脚4 寄存器选择 控制引脚 在命令/数据寄存器之间切换 连接到MCU引脚并获得0或1。0- > Command Mode 1-> Data Mode
5 引脚5 读/写 控制引脚 在读/写操作之间切换LCD 连接到MCU引脚并获得0或1。0- >写入操作 1->读取操作
6 引脚6 使能 控制引脚 必须保持高电平才能执行读/写操作 连接到MCU并始终保持高电平。
7 引脚7-14 数据位(0-7) 数据/命令引脚 用于将命令或数据发送到LCD的引脚。 在4线模式下, 只有4个引脚(0-3)连接到MCU。在8线模式下,所有8个引脚(0-7)连接到MCU。
8 引脚15 LED正极 LED接脚 正常的LED状操作可照亮LCD 连接到+ 5V
9 引脚16 LED负极 LED接脚 正常的LED像操作一样点亮连接到GND的LCD。 接地

如果您不了解所有引脚的功能也可以,我将在下面详细解释。现在,让我们回头看一下LCD:

好吧,这两个黑色圆圈像是LCD背面的东西吗?

这些黑圈由接口IC及其相关组件组成,可帮助我们将此LCD与MCU配合使用。因为我们的LCD是16 * 2点矩阵LCD,所以它将总共有(16 * 2 = 32)32个字符,每个字符将由5 * 8像素点组成。下图显示了一个启用了所有像素的单个字符。

所以现在,我们知道每个字符都有(5 * 8 = 40)40个像素,对于32个字符,我们将有(32 * 40)1280个像素。此外,还应指示LCD有关像素的位置。

在MCU的帮助下处理所有事情将是一项繁重的任务,因此使用了HD44780之类接口IC,该接口IC安装在LCD模块本身上。该IC的功能是从MCU获取命令和数据,并对它们进行处理,以在我们的LCD屏幕上显示有意义的信息。

让我们讨论必须由控制引脚控制的LCD中可用的不同类型的模式和选项。

*LCD的4位和8位模式*

LCD可以在两种不同的模式下工作,即4位模式和8位模式。在**4位模式下,**我们先将数据半字节发送,首先是高半字节,然后是低半字节。对于那些不知道什么是半字节的人:半字节是一组四位,因此字节的低四位(D0-D3)形成低四位,而高四位(D4-D7)一个字节的形式从较高的半字节开始。这使我们能够发送8位数据。

而**在8位模式下,**由于我们使用了所有8条数据线,因此可以一键直接发送8位数据。

现在您一定已经猜到了,是的,8位模式比4位模式更快,更完美。但是主要的缺点是它需要将8条数据线连接到微控制器。这将使我们用完MCU的I / O引脚,因此广泛使用4位模式。没有控制引脚用于设置这些模式。这只是编程方式的变化。

*LCD的读写模式:*

如前所述,LCD本身包含一个接口IC。MCU可以对该接口IC进行读取或写入。在大多数情况下,我们只会写IC,因为读取会使它变得更复杂,而且这种情况很少见。如果需要,可以读取诸如光标位置,状态完成中断等信息,但这不在本教程的讨论范围之内。

大多数LCD中使用的接口IC是**HD44780U,**为了对LCD进行编程,我们应该学习IC的完整数据表。该数据表是这里给出。

*LCD命令:*

LCD中有一些预设命令指令,我们需要通过一些微控制器将这些指令发送到LCD。以下是一些重要的命令说明:

十六进制代码 LCD指令寄存器的命令
0F LCD亮,光标亮
01 清除显示画面
02 回家
04 减少光标(向左移动光标)
06 增量光标(向右移动光标)
05 右移显示
07 左移显示
0E 显示开,光标闪烁
80 强制光标到第一行的开头
C0 强制光标移至第二行的开头
38 2行和5×7矩阵
83 光标线1位置3
3C 激活第二行
08 显示关闭,光标关闭
C1 跳至第二行,位置1
0C 显示开启,光标关闭
C1 跳至第二行,位置1
C2 跳至第二行,位置2

在16x2 LCD中,如果有背光,则全部有16个引脚,如果没有背光,则有14个引脚。一个人可以给背光灯插针供电或悬空。现在,在14个引脚中,有8个数据引脚(7-14或D0-D7),2个电源引脚(1&2或VSS&VDD或GND&+ 5v),第三个用于对比度控制的引脚(VEE控制字符的粗细)如图所示)和3个控制引脚(RS&RW&E)。

在电路中,可以观察到我只接了两个控制引脚,这给了灵活性。对比度位和READ / WRITE并不经常使用,因此它们可以接地。这使LCD处于最高对比度和读取模式。我们只需要控制ENABLE和RS引脚即可相应地发送字符和数据。

LCD的连接如下所示:

  • PIN1或VSS接地

  • PIN2或VDD或VCC至+ 5v电源

  • PIN3或VEE接地(为初学者提供最大对比度)

  • PIN4或RS(寄存器选择)到ARDUINO UNO的PIN0

  • PIN5或RW(读/写)接地(将LCD置于读模式可简化用户的通信)

  • PIN6或E(启用)到ARDUINO UNO的PIN1

  • PIN11或D4至ARDUINO UNO的PIN8

  • PIN12或D5至ARDUINO UNO的PIN9

  • PIN13或D6至ARDUINO UNO的PIN10

  • PIN14或D7至ARDUINO UNO的PIN11

ARDUINO IDE允许用户以4位模式使用LCD。这种通信类型使用户能够减少ARDUINO上的引脚使用,这与其他ARDUINO无需单独编程以在4 it模式下使用有关,因为默认情况下ARDUINO设置为以4位模式进行通信。在电路中,您可以看到我们使用了4位通信(D4-D7)。

因此,仅从上表的观察,我们就将LCD的6个引脚连接到控制器,其中4个引脚是数据引脚,另外2个是控制引脚。

上图显示了连接到ARDUINO UNO的16x2 LCD的电路图

原理

要将LCD连接到ARDUINO UNO,我们需要了解一些事情。

 #include <LiquidCrystal.h>lcd.begin(16,2);
LiquidCrystal LCD(0,1,8,9,10,11);
lcd.print(“ hello,world!”);

如上表所示,我们只需要查看这四行即可在ARDUINO和LCD之间建立通信。

首先,我们需要启用头文件(’#include <LiquidCrystal.h>’),该头文件中写入了指令,这使用户能够以4位模式将LCD连接到UNO,而不会产生任何绒毛。使用此头文件,我们不必将数据一点一点地发送到LCD,这一切都将得到解决,我们也不必编写用于向LCD发送数据或命令的程序。

其次,我们需要告诉主板我们在这里使用哪种类型的LCD。由于我们有许多不同类型的LCD(例如20x4、16x2、16x1等)。在这里,我们将16x2 LCD连接到UNO,因此得到“ lcd.begin(16,2);”。对于16x1,我们得到’lcd.begin(16,1);’。

在此说明中,我们将告诉主板我们引脚的连接位置。连接的引脚需要按“ RS,En,D4,D5,D6,D7”的顺序表示。这些引脚应正确表示。由于我们已将RS连接到PIN0等,如电路图所示,我们将板上的引脚号表示为LiquidCrystal lcd(0,1,8,9,10,11);。需要在LCD中显示的数据应写为lcd.print(“ hello,world!”);。使用此命令,LCD会显示“ hello,world!”。

如您所见,我们不必担心任何其他事情,我们只需要初始化即可,UNO将准备显示数据。我们不必在此处编写程序循环来通过BYTE发送数据BYTE。

LCD和UNO之间的通信方式在下面给出的C代码中逐步说明:

#include <LiquidCrystal.h>// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(0, 1, 8, 9, 10, 11); /// REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PINvoid setup()
{// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
}void loop()
{
// set the cursor to column 0, line 1
lcd.print("   CIRCUIT DIGEST");//print name
lcd.setCursor(0, 1); // set the cursor to column 0, line 2
lcd.print("www.circuitdigest.com");//print name
delay(750);//delay of 0.75sec
lcd.scrollDisplayLeft();//shifting data on LCD
lcd.setCursor(0, 0);// set the cursor to column 0, line1
}

将16x2 LCD与Arduino连接方法相关推荐

  1. 使用Arduino连接一个LCD显示屏

    本文转载自https://www.yiboard.com/thread-1086-1-1.html 使用Arduino连接一个LCD显示屏,为您的项目提供显示. 将字符LCD显示屏连接到Arduino ...

  2. arduino连接1602LCD方法

    arduino连接1602LCD方法 测试代码: /*LiquidCrystal Library - display() and noDisplay()Demonstrates the use a 1 ...

  3. 树莓派触摸屏连接方法(微雪7寸LCD)

    微雪 7寸LCD 触摸屏 显示器 适用 树莓派 BB BLACK 电脑 HDMI高清,购买地址如下: https://detail.tmall.com/item.htm?spm=a220o.10008 ...

  4. 使用Arduino 连接旋转编码器

    文章目录 1. 所需的材料 2. 连接导线旋转编码器是如何工作的? 3. 旋转编码器的类型 4. KY-040旋转编码器引脚和说明 5. Arduino与旋转编码器的连接电路图 6. 编写用于旋转编码 ...

  5. 【从零开始的ROS四轴机械臂控制】(七)- ROS与arduino连接

    从零开始的ROS四轴机械臂控制(七) 十.ROS与arduino连接 1.虚拟机与arduino的连接 (1)arduino连接与IDE (2)PCA9685模块支持与测试 2.ROS与arduino ...

  6. 用撸Arduino的方法撸STM32F103xx

    http://www.pret-page.com/%E7%94%A8%E6%92%B8arduino%E7%9A%84%E6%96%B9%E6%B3%95%E6%92%B8stm32f103xx/ 2 ...

  7. 关于Arduino连接L298N供电问题

    关于Arduino连接L298N供电问题 查看原文 该L298N板声称有一个5V稳压器为Arduino供电,在这种情况下,您可以使用单个电源,并让电机板为Arduino供电. 关于为Arduino和电 ...

  8. 笔记本投影仪连接方法

    一.笔记本电脑和投影机的链接 出现投影机罢工的原因以及解决方法.请各位教师严格按照以下的操作步骤来进行操作,以下是链接的正确方法: 1.链接投影仪和笔记本前一定要将投影仪和笔记本关掉,否则可能会产生严 ...

  9. 红外传感器模块与 Arduino 连接

    红外传感器模块与 Arduino 连接 原文地址 Arduino 红外传感器接口 红外**接近传感器或红外传感器它发射红外光以感知周围环境,并可用于检测物体的运动.由于这是一个无源传感器,它只能测量红 ...

最新文章

  1. Vue生命周期函数详解
  2. 泊松分布E(X^2)
  3. 线程间怎么交换数据_2 万字长文详解 10 大多线程面试题|原力计划
  4. python经济_python生成器——懒到欠揍,但很经济
  5. ERROR: Process pool report error: Can‘t pickle
  6. jquery中AddClass()方法问题
  7. js实现购物车,原理简单,代码解释-->详细
  8. vdbench数据校验翻译
  9. SpaceVim - 让你的vim变得更加高效和强大
  10. 马云:全面进军芯片领域!打响第一炮!中国科技当自强!!
  11. 树莓派mysql重置密码_树莓派忘记密码了?四步重设密码 | 树莓派实验室
  12. Android判断手机的电池状态
  13. OpenAI在Dota 2游戏中虽败犹荣
  14. 串口通讯协议和RS-232的介绍以及USB/TTL转232模块的工作原理
  15. 2017年8月21日 星期一
  16. SICE:基于CNN的多曝光图像增强网络论文解读
  17. Oracle表空间扩展
  18. 外部环境因素分析(转载)
  19. EXCEL 图表相关,如何在一个图表里有2种图形?比如折线+ 柱状图?
  20. php安装sqlsrv扩展

热门文章

  1. 【JavaWeb 爬虫】Java文本查重网页版 爬取百度搜索结果页全部链接内容
  2. 语音合成 java_语音合成 JAVA SDK
  3. 移动端web页面响应式布局(文字、图片、表格)
  4. 树莓派3B+ubunt server配置WiFi
  5. C++转换为C需要注意的各项问题
  6. 安卓查询助手 q绑查 前端源码+测试apk+新接口
  7. 如何快速找到小红书素人资源?怎么找到大量素人
  8. 控制空间光调制器(SLM)的不同控制方法小结
  9. 2 thinkcmf5.0 pc端和移动端自动切换
  10. 飞桨创意赛火热进行中,总有一款AI时代Chatbot适合你