Arduino Uno 点亮LCD1602

实验效果

点亮LCD1602

凌顺实验室(lingshunlab.com分享的本例程使用的是简易接线的方法,占用d4, d5, d6, d7 ,IO口比较少(看着视频接线,已经是风中凌乱了),往后将继续更新I2C的接线方法,只用4条线就能实现对LCD屏幕的控制。

元件说明

LCD(Liquid Crystal Display)显示器的集成极大地促进了您正在开发的项目的交互性,使用户可以直接读取一些输出参数。这些值可以是传感器读取的简单文本或数值,例如温度或压力等。

LCD屏幕可以显示16个字符x2行,也就是LCD1602的意思,每个字符都是由5x8的像素网格组成。

当然大小还有2004,1604等等其他规格。 颜色方面由蓝底白字,绿底黑字等等。

当电流施加到这种特殊类型的晶体上时,它变成不透明,从而挡住了位于屏幕后面的背光。结果,与其他区域相比,特定区域将变暗。这就是在屏幕上显示字符的方式。

所有这些不同大小的LCD都是 "可替换 "的, 如果你用其中一个显示器来构建你的项目,你可以直接拔掉它,然后使用你选择的另一个尺寸/颜色的LCD。您的代码可能需要调整以适应更大的尺寸,但至少接线是一样的。

引脚说明

1602采用标准的16脚接口,其中:

引脚 符号 功能说明
1 VSS 电源地,一般接地
2 VDD 接电源(+5V)
3 V0 液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4 RS RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5 R/W R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。
6 E E(或EN)端为使能(enable)端,写操作时,下降沿使能。

读操作时,E高电平有效 |
| 7 | DB0 | 低4位三态、 双向数据总线 0位(最低位) |
| 8 | DB1 | 低4位三态、 双向数据总线 1位 |
| 9 | DB2 | 低4位三态、 双向数据总线 2位 |
| 10 | DB3 | 低4位三态、 双向数据总线 3位 |
| 11 | DB4 | 高4位三态、 双向数据总线 4位 |
| 12 | DB5 | 高4位三态、 双向数据总线 5位 |
| 13 | DB6 | 高4位三态、 双向数据总线 6位 |
| 14 | DB7 | 高4位三态、 双向数据总线 7位(最高位)(也是busy flag) |
| 15 | BLA | 背光电源正极 |
| 16 | BLK | 背光 电源负极 |

BOM表

名称 数量
Arduino Uno x1
LCD1602液晶屏 x1
面包板 x1
跳线(杜邦线) 若干

接线方式

Arduino Uno 引脚 <-> LCD1602 引脚
GND <-> VSS
5V <-> VDD
Pin 6 <-> V0
Pin 12 <-> RS
GND <-> RW
Pin 11 <-> EN
Pin 5 <-> D4
Pin 4 <-> D5
Pin 3 <-> D6
Pin 2 <-> D7
3.3V <-> BLA(A)
GND <-> BLK(K)

程序提点

函数LiquidCrystal() 概要:

创建一个LiquidCrystal的实例(构造函数).可使用4线或8线方式作为数据线(请注意,还需要指令线).若采用四线方式,将d0-d3悬空不连接.RW引脚可接地而不用接在Arduino的某个引脚上;如果这样接,省略在函数中的rw参数.

语法:
LiquidCrystal(rs, enable, d4, d5, d6, d7) //本例程使用的是这种
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)

参数说明:
rs: rs连接的Arduino的引脚编号
rw: rw连接的Arduino的引脚编号
enable:enable连接的Arduino的引脚编号
d0, d1, d2, d3, d4, d5, d6, d7: 连接的Arduino的引脚编号

程序代码

// by LingShunLAB.com

#include <LiquidCrystal.h> // 加载LCD1602的库

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;  // 定义引脚
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);   // 根据引脚,创建一个 lcd 实例

int contrast = 6 //   定义对比度控制引脚,这里需要选择有PWM功能的引脚

void setup() {
  pinMode(contrast, OUTPUT); // 配置 引脚模式为输出模式
  analogWrite(contrast,130); // 该引脚一个固定频率的PWM信号,例如130

  lcd.begin(16, 2); //   初始化lcd ,并定义LCD1602的规格
  lcd.setCursor(0,0); //   设置指针 在x=0,y=0的位置
  lcd.print("^_^");  //   lcd 显示字符串
  lcd.setCursor(0,1); //   设置指针 在x=0,y=1的位置
  lcd.print("Hello World!"); //   lcd 显示字符串
}

void loop() {
}