将16x2 LCD与Arduino连接方法

原文地址: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显示模块带有HD44780控制器的16x2 LCD显示模块

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

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

16x2-LCD-Module-Pinouts

序号引脚号引脚名称引脚类型引脚说明引脚连接
1引脚1GND电源极引脚这是LCD的接地引脚连接到MCU /电源的接地
2引脚2VCC电源极引脚这是LCD的电源电压引脚连接到电源的电源引脚
3引脚3V0 / 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引脚15LED正极LED接脚正常的LED状操作可照亮LCD连接到+ 5V
9引脚16LED负极LED接脚正常的LED像操作一样点亮连接到GND的LCD。接地

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

16x2-LCD-模块接口-IC

好吧,这两个黑色圆圈像是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指令寄存器的命令
0FLCD亮,光标亮
01清除显示画面
02回家
04减少光标(向左移动光标)
06增量光标(向右移动光标)
05右移显示
07左移显示
0E显示开,光标闪烁
80强制光标到第一行的开头
C0强制光标移至第二行的开头
382行和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个是控制引脚。
在这里插入图片描述
带有HD44780控制器的16x2 LCD显示模块上图显示了连接到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 pins

LiquidCrystal lcd(0, 1, 8, 9, 10, 11); /// REGISTER SELECT PIN,ENABLE PIN,D4 PIN,D5 PIN, D6 PIN, D7 PIN

void 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
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值