Arduino操控1602 LCD液晶屏
参考网址:https://lastminuteengineers.com/arduino-1602-character-lcd-tutorial/
ARDUINO项目
原文地址:https://circuitdigest.com/microcontroller-projects/arduino-lcd-interfacing-tutorial
16×2 LCD在此必须理解,每个字符中都有5x10 = 50像素,因此要显示一个字符,所有50像素必须一起工作。但是我们不必担心,因为还有另一个控制器(HD44780)负责控制像素。(您可以在LCD单元中看到它,它是背面的黑眼圈)。
在本教程中,我们将使用ARDUINO UNO连接16x2 LCD。将LCD连接到ARDUINO的过程非常简单。在这里,我们不必担心数据发送和接收。我们只需要定义引脚号,它就可以在LCD上显示数据了。
所需组件
硬件: ARDUINO UNO,电源(5v),JHD_162ALCD(16x2LCD),100uF电容器。
软体: Arduino IDE。
电路图和说明
在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或V0 | 对比度调整,接地(为初学者提供最大对比度),接正极时对比度最弱 |
PIN4或RS(寄存器选择) | ARDUINO UNO的PIN0,1数据寄存器(DR),0指令寄存器(IR) |
PIN5或RW(读/写) | RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。接地(将LCD置于读模式可简化用户的通信) |
PIN6或E(启用) | ARDUINO UNO的PIN1 ,高电平读取信息,负跳变时执行指令 |
PIN11 or D4 | PIN8 of ARDUINO UNO |
PIN12 or D5 | PIN9 of ARDUINO UNO |
PIN13 or D6 | PIN10 of ARDUINO UNO |
PIN14 or D7 | PIN11 of ARDUINO UNO |
PIN15 或 BLA 或A | 背光正极,可选,可以直接接3.3V或接5V添加10KΩ电阻 |
PIN16或BLK 或K | 背光负极,可选 |
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中显示的数据应写为cd.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
}