(1)简介
如下图所示,LCD1602是工业现场中比较常用的一款液晶显示器,管脚比较多,本文介绍一种4位传输线的控制方法(可节省4个IO口)
可显示字母、数字等,不能显示汉字
(2)接线
LCD1602 | UNO |
---|---|
VSS | GND |
VDD | VCC |
VO | 接3k电阻接地,或10k电位器调节 |
RS | 12 |
RW | GND |
EN | 11 |
D4 | 5 |
D5 | 4 |
D6 | 3 |
D7 | 2 |
A | VCC |
K | GND |
其中,D0–D3这4个管脚悬空不使用
(3)程序
/*
引脚说明
* LCD VSS-----GND
* LCD VDD-----VCC
* LCD VO(接3k电阻然后接GND,实际阻值根据电流调节)
* LCD RS-----12
* LCD RW-----GND
* LCD En-----11
* LCD D4-----5
* LCD D5-----4
* LCD D6-----3
* LCD D7-----2
* LCD A-----VCC
* LCD K-----GND
*/
#include <LiquidCrystal.h> //液晶显示头文件
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//initialize the library with the numbers of the interface pins
void setup() {
lcd.begin(16, 2); // set up the LCD's number of columns and rows:
lcd.print("hello, world!"); // Print a message to the LCD.
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0,1);
lcd.print(millis()/1000); // print the number of seconds since reset:
}
(4)补充——Arduino中其他LCD语法
函数名 | 功能 | 语法 | 其他 |
---|---|---|---|
ps | 一些说明 | 语法位置为空意味着默认加上函数即可 | 例如lcd.clear()、lcd.home() |
LiquidCystal() | 构造函数,用来初始化LCD | LiquidCrystal(rs,rw,enable,d4,d5,d6,d7) | rs为连接至RS引脚,rw同理,enable为E引脚 |
8线连接时 | LiquidCrystal(rs,rw,enable,d0,d1,d2,d3,d4,d5,d6,d7) | ||
begin | 设置显示宽高 | led.bdgin(cols,rows) | 因为时1602,所以为begin(16,2) |
clear | 清楚所有内容并把光标固定在左上角 | ||
home | 光标复位至左上角 | ||
文本输出 | lcd.write(data,BASE) | data为需要输出的数据(char、byte、int、string。。)BASE为输出进制形式 | |
setCursor | 移动光标位置 | lcd. serCursor(col,row) | setCursor(3,0)是将光标固定在第一排第四列 |
cursor | 显示光标,在光标所在位置划出一条线 | ||
noCursor | 隐藏光标 | ||
blink | 开启闪烁光标 | 需提前开启显示光标 | |
noBlink | 关闭闪烁光标 | ||
display | 开启LCD显示 | 会显示noDisplay函数发生之前的内容 | |
noDisplay | 关闭LCD显示 | ||
autoscroll | 自动滚屏 | ||
noAutoscroll | 关闭自动滚屏 | ||
leftToRight | 从左到右输入 | ||
rightToLeft | 从右到左输入 | ||
scrollDisplayLeft | 向左滚屏,将LCD上显示的所有内容都向左移动一格 | ||
scrollDisplayRight | 向右滚屏 | ||
createChar | 创建自定义字符,最多支持8个(num最多到8),每个自定义字符使用一个8B的数组进行保存 | lcd.createChar(num.date) | num为自定义字符的编号,data为自定义字符的像素数据,但需要输出时还要用到write()函数 |
setRowOffsets | 应该是纵向滚屏,因为没有lcd,查看了下源码 | lcd.serRowOffsets(1,2,3,4) | 输入数字为多少,向下滚屏多少行 |