LCD1602引脚功能
引脚ID | 引脚名 | 电平 | 功能 |
---|---|---|---|
1 | VSS | 电源地 | |
2 | VCC | 电源正极(+5V) | |
3 | V0 | 调节对比度 | |
4 | RS | 0/1 | 0: 输入指令、1: 输入数据 |
5 | R/W | 0/1 | 0: 写、1:读 |
6 | E | 1, 1->0 | 使能信号(1: 读取信息、1->0: 执行指令) |
7 | D0 | 0/1 | 数据线0 |
8 | D1 | 0/1 | 数据线1 |
9 | D2 | 0/1 | 数据线2 |
10 | D3 | 0/1 | 数据线3 |
11 | D4 | 0/1 | 数据线4 |
12 | D5 | 0/1 | 数据线5 |
13 | D6 | 0/1 | 数据线6 |
14 | D7 | 0/1 | 数据线7 |
15 | A | VCC | 背光灯正极 |
16 | K | GND | 背光灯负极 |
电路图
LiquidCrystal 库
-
LiquidCrystal()
构造方法,有四种重载:
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)#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { } void loop() { }
-
begin()
初始化屏幕,根据实际大小传入参数:
lcd.begin(cols, rows)#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); } void loop() { }
-
setCursor()
移动光标
lcd.setCursor(col, row)#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); lcd.setCursor(0, 1); } void loop() { }
-
print()
在屏幕上打印,两种重载
lcd.print(data)
lcd.print(data, BASE)#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("hello, Mr.He!"); lcd.setCursor(0, 1); lcd.print(16, 2); // 二进制 16 ‘10000’ lcd.setCursor(6, 1); lcd.print(16, 10); // 十进制 16 ‘16’ lcd.setCursor(9, 1); lcd.print(16, 16); // 十六进制 16 ‘1’ } void loop() { }
-
clear()
清屏同时复原光标位置
lcd.clear()#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); } void loop() { lcd.clear(); lcd.setCursor(0, 1); lcd.print("hello, Mr.He!"); delay(1000); lcd.clear(); lcd.print("hello, Mr.He!"); delay(1000); }
-
home()
光标移动到左上角,等价于setCursor(0, 0)
lcd.home() -
write()
写字符到屏幕上
lcd.write(data)#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; int count = 0; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("hello, Mr.He!"); } void loop() { lcd.setCursor(0, 1); lcd.print(count); lcd.setCursor(8, 1); lcd.write(count); delay(1000); count++; }
- cursor()
用一个下划线来显示当前光标位置
lcd.cursor()#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; int count = 0; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.cursor(); lcd.print("hello, Mr.He!"); } void loop() { for (uint8_t loop = 0; loop < 16; loop++) { lcd.setCursor(loop, 0); delay(1000); } }
- noCursor()
隐藏用于显示光标位置的下划线
lcd.noCursor() - blink()
用一个块的闪烁来显示当前光标位置
lcd.blink()#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; int count = 0; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.cursor(); lcd.blink(); lcd.print("hello, Mr.He!"); } void loop() { for (uint8_t loop = 0; loop < 16; loop++) { lcd.setCursor(loop, 0); delay(1000); } }
-
noBlink()
关闭闪烁
lcd.noBlink() -
display()
默认display,在noDisplay之后重新打开屏幕显示
lcd.display()#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; int count = 0; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); lcd.display(); lcd.print("hello, Mr.He!"); } void loop() { count++; delay(1000); if (count % 2 == 0) { lcd.noDisplay(); } else { lcd.display(); } }
- noDisplay()
关闭屏幕显示
lcd.noDisplay() - scrollDisplayLeft()
将所有显示向左滚动一个字符
lcd.scrollDisplayLeft()#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; int count = 1; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); lcd.print("hello, Mr.He!"); } void loop() { delay(500); if (count <= 13) { lcd.scrollDisplayLeft(); count++; } else { lcd.scrollDisplayRight(); count++; } if (count == 43) { count = -15; } }
- scrollDisplayRight()
将所有显示向左滚动一个字符
lcd.scrollDisplayRight() - autoscroll()
开启后,每输出一个字符,显示的内容整体都会根据字符输出方向滚动
lcd.autoscroll()#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); lcd.cursor(); lcd.print("hello, Mr.He!"); lcd.setCursor(15, 1); lcd.autoscroll(); for (int loop = 0; loop < 16; loop++) { delay(500); lcd.print(loop, 16); } } void loop() { }
- noAutoscroll()
关闭自动滚动
lcd.noAutoscroll() - leftToRight()
更改字符输出方向为从左到右(默认)
lcd.leftToRight();#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { lcd.begin(16, 2); lcd.rightToLeft(); lcd.setCursor(15, 0); lcd.print("hello, Mr.He!"); lcd.leftToRight(); lcd.setCursor(0, 1); lcd.print("hello, Mr.He!"); } void loop() { }
- rightToLeft()
更改字符输出方向为从右到左
lcd.rightToLeft(); - createChar()
自定义字符,填充 5 * 8矩阵
lcd.createChar(num, data) ----num取0 ~ 7#include <LiquidCrystal.h> const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { byte heart[8] = { B00000, B00000, B01010, B11111, B11111, B01110, B00100, }; lcd.createChar(0, heart); // ** 需要在begin()之前调用!!!** lcd.begin(16, 2); lcd.print("hello, Mr.He!"); lcd.setCursor(0, 1); lcd.write(byte(0)); lcd.write(byte(0)); lcd.write(byte(0)); } void loop() { }