目录
https://github.com/marcoschwartz/LiquidCrystal_I2C
Arduino IDE版本:2.3.3.4
主要资料来源:
LiquidCrystal库函数 - Dumblidor - 博客园
一、函数一览:
- LiquidCrystal_I2C () //构造函数
- begin() //指定显示屏尺寸
- clear() //清屏并将光标置于左上角
- home() //将光标置于左上角(不清屏)
- setCursor() //将光标置于指定位置
- write() //(在光标处)显示一个字符
- print() //显示字符串
- cursor() //显示光标(就是一个下划线)
- noCursor() //不显示光标
- blink() //光标闪烁(和8,9一起使用时不保证效果)
- noBlink() //光标不闪烁
- noDisplay() //关闭显示,但不会丢失内容(谁把灯关了?)
- display() //(使用noDisplay()后)恢复显示
- scrollDisplayLeft() //将显示的内容向左滚动一格
- scrollDisplayRight() //将显示的内容向右滚动一格
- autoscroll() //打开自动滚动(具体解释往下拉)
- noAutoscroll() //关闭自动滚动
- leftToRight() //从左向右显示内容(默认)
- rightToLeft() //从右向左显示内容
- createChar() //大奥义·字符创造之术(往下拉)
二、具体解释:
1 LiquidCrystal()
内容:
构造函数,创建一个LiquidCrystal_I2C的实例(LiquidCrystal_I2C是一个类)。LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);.
语法:
LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);
例子:
LiquidCrystal_I2C lcd(0x27,16,2); // 设置LCD1602A的 地址为 0x27,16个字符,2行显示
2 begin ()
内容:
指定显示屏的尺寸(宽度和高度)。
语句:
lcd.begin(cols, rows)
参数设置:
lcd: 液晶类型的名称变量
cols: 显示器可以显示的列数(1602是16列)
rows: 显示器可以显示的行数(1602是2行)
3 clear ()
简介:
清除LCD屏幕上内容,并将光标置于左上角。
语法:
lcd.clear()
参数:
lcd:LiquidCrystal_I2C类的对象
4 home()
内容:
将光标定位在屏幕左上角. 就是说,接下来的字符从屏幕左上角开始显示.如果同时要清除屏幕上的内容,请使用clear()函数代替.
语法:
lcd.home()
参数设置:
lcd: LiquidCrystal_I2C类的对象
5 setCursor()
简介:
将光标定位在特定的位置。
语法:
lcd.setCursor(col, row)
参数:
lcd:LiquidCrystal_I2C类的对象
col: 你要显示光标的列 (从0开始计数)
row: 你要显示光标的行 (从0开始计数)
6 write()
简介:
向LCD写一个字符。
语法:
lcd.write(data)
参数:
lcd: LiquidCrystal_I2C类的对象
data: 你要显示的字符(仅限英文和数字和你自己定义的字符)。
返回值:
byte //write() 将返回写入的字节数,
7 print()
内容:
将文本显示在LCD上.
语法:
lcd.print(data)
lcd.print(data, BASE)
参数:
lcd: 液晶类型的名称变量
data:要显示的数据,可以是char, byte, int, long或者string类型的
BASE (optional): 数制(可选),BIN,DEC,OCT,HEX分别将数字以二进制,十进制,八进制,十六进制方式显示出来.
返回值:
byte //这个返回值通常是用不到的
8 cursor()
内容:
显示光标(光标所在的位置, 就是下一个字符将会被显示的位置)。
语法:
lcd.cursor()
参数设置:
lcd: 液晶类型的名称变量
9 noCursor()
内容:
隐藏光标。
语法:
lcd.noCursor()
参数:
lcd: 液晶类型的名称变量
10 blink()
内容:
显示闪烁的光标。如果和cursor()一起使用,最终结果将取决于您使用的LCD屏幕.
语法:
lcd.blink()
参数设置:
lcd: 液晶类型的名称变量
11 noBlink()
内容:
关闭 光标闪烁功能.
语句:
lcd.noBlink()
参数设置:
lcd: 液晶类型的名称变量
12 noDisplay()
内容:
关闭液晶显示,但原先显示的内容不会丢失. 可使用display()恢复显示.
语法:
lcd.noDisplay()
参数:
lcd: 液晶类型的名称变量
13 display()
简介:
调用noDisplay()隐藏LCD上显示内容后,调用本函数恢复显示.
语法:
lcd.display()
参数:
lcd: 液晶类型的名称变量
14 scrollDisplayLeft()
简介:
使屏幕上内容(光标及文字)向左滚动一个字符。
语法:
lcd.scrollDisplayLeft()
参数:
lcd: 一个LiquidCrystal_I2C类的对象
15 scrollDisplayRight()
简介:
使屏幕上内容(光标及文字)向右滚动一个字符。
语法:
lcd.scrollDisplayRight()
参数:
lcd: 一个LiquidCrystal_I2C类的对象
16 autoscroll()
简介:
打开液晶显示屏的自动滚动,将会使得当一个字符输出到LCD时,令先前的文本移动一个位置.如果当前写入方向为由左到右(默认方向),文本向左滚动.反之,文本向右滚动.它的功能可以理解为,当输出单个字符时,会使得字符总是输出在LCD上的同一个位置.
语法:
lcd.autoscroll()
参数:
lcd: a variable of type LiquidCrystal
17 noAutoscroll()
简介:
关闭自动滚动功能。(后输入的字符可能无法显示)
语法:
lcd.noAutoscroll()
参数:
LCD:LiquidCrystal_I2C类的对象
18 leftToRight()
内容:
默认的方向,将文本从左到右写入屏幕.这意味着,后续字符的显示将是从左向右的,但是这不会影响先前已经显示的字符.
语法:
lcd.leftToRight()
参数设置:
lcd: a variable of type LiquidCrystal
19 rightToLeft()
简介:
设置文本写入LCD的方向为从右向左(默认是从左向右)。这意味着,后续字符将会由右至左写入,但不影响先前的文本的显示。
语法:
lcd.rightToLeft()
参数:
lcd: 一个LiquidCrystal_I2C类的对象
20 createChar()
内容:
创建用户自定义的字符.共可创建8个用户自定义字符,编号从0到7.字符外观由一个8字节数组定义,每行占用一个字节.最低的5个有效位决定像素点所在的行.若要在屏幕显示自定义字符,请使用write()函数.(参数为字符的编号0-7)
语法:
lcd.createChar(num, data)
参数设置:
lcd: a variable of type LiquidCrystal
num: 所创建字符的编号(0-7)
data: 字符的像素数据
三、综合示例:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // 初始化LCD
lcd.backlight(); // 打开背光
lcd.cursor();//显示光标
delay(1000);
// lcd.noBlink();//光标不闪烁
delay(1000);
lcd.blink();//光标闪烁(方形色块闪烁)
delay(1000);
lcd.noBlink();//光标闪烁(方形色块闪烁)
delay(500);
lcd.setCursor(3,1); // 将光标设置到第4列(03)之后,第一行(对于1602来说,取值为0和1,如果不为0,其他任何数值都一直在第2行显示)
//lcd.leftToRight();//从左到右显示文字
lcd.rightToLeft();//从右到左显示文字
//lcd.home(); //home()使光标回到(0,0),回到初始位置,从左到右执行
lcd.setCursor(15,1);// 将光标设置到第15列,
lcd.print("Hello, world!"); // 在LCD上打印"Hello, world!"
delay(1000);
lcd.autoscroll();//打开自动滚动
lcd.scrollDisplayLeft();//显示内容整体向左移动一格
delay(1000);
lcd.scrollDisplayRight();//显示内容整体向右移动一格
delay(1000);
lcd.leftToRight();//从左到右显示文字
lcd.clear();
//lcd.setCursor(0,0);// 将光标设置到第15列,
lcd.print("Hello, world!");
lcd.noAutoscroll();//输出后字符不移动,光标位于下一个字符位置处
//lcd.autoscroll();//滚动书写模式,输出后字符左移,光标位于下一个字符位置处
delay(500);
//lcd.clear();
byte smiley[8] = { //1表示亮,0表示不亮,此例显示一个笑脸
B00000,
B10001,
B00000,
B00000,
B10001,
B01110,
B00000,
};
int x=1; //x可以为0~7的任何数字
lcd.createChar(x , smiley); //将x号字符设置为smiley数组表示的样子
delay(500);
lcd.home();
lcd.write(x);
}
void loop()
{
}
四、LiquidCrystal_I2C库头文件节选
// commands
#define LCD_CLEARDISPLAY 0x01
#define LCD_RETURNHOME 0x02
#define LCD_ENTRYMODESET 0x04
#define LCD_DISPLAYCONTROL 0x08
#define LCD_CURSORSHIFT 0x10
#define LCD_FUNCTIONSET 0x20
#define LCD_SETCGRAMADDR 0x40
#define LCD_SETDDRAMADDR 0x80
// flags for display entry mode
#define LCD_ENTRYRIGHT 0x00
#define LCD_ENTRYLEFT 0x02
#define LCD_ENTRYSHIFTINCREMENT 0x01
#define LCD_ENTRYSHIFTDECREMENT 0x00
// flags for display on/off control
#define LCD_DISPLAYON 0x04
#define LCD_DISPLAYOFF 0x00
#define LCD_CURSORON 0x02
#define LCD_CURSOROFF 0x00
#define LCD_BLINKON 0x01
#define LCD_BLINKOFF 0x00
// flags for display/cursor shift
#define LCD_DISPLAYMOVE 0x08
#define LCD_CURSORMOVE 0x00
#define LCD_MOVERIGHT 0x04
#define LCD_MOVELEFT 0x00
// flags for function set
#define LCD_8BITMODE 0x10
#define LCD_4BITMODE 0x00
#define LCD_2LINE 0x08
#define LCD_1LINE 0x00
#define LCD_5x10DOTS 0x04
#define LCD_5x8DOTS 0x00
// flags for backlight control
#define LCD_BACKLIGHT 0x08
#define LCD_NOBACKLIGHT 0x00
#define En B00000100 // Enable bit
#define Rw B00000010 // Read/Write bit
#define Rs B00000001 // Register select bit
class LiquidCrystal_I2C : public Print {
public:
LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);
void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS );
void clear();
void home();
void noDisplay();
void display();
void noBlink();
void blink();//光标闪烁(方形色块闪烁)
void noCursor();
void cursor();
void scrollDisplayLeft();//显示内容向左移动一格
void scrollDisplayRight();
void printLeft();
void printRight();
void leftToRight();
void rightToLeft();//从右到左显示文字
void shiftIncrement();
void shiftDecrement();
void noBacklight();
void backlight();
void autoscroll();//打开自动滚动
void noAutoscroll();
void createChar(uint8_t, uint8_t[]);
void setCursor(uint8_t, uint8_t);
#if defined(ARDUINO) && ARDUINO >= 100
virtual size_t write(uint8_t);
#else
virtual void write(uint8_t);
#endif
void command(uint8_t);
void init();
compatibility API function aliases
void blink_on(); // alias for blink()
void blink_off(); // alias for noBlink()
void cursor_on(); // alias for cursor()
void cursor_off(); // alias for noCursor()
void setBacklight(uint8_t new_val); // alias for backlight() and nobacklight()
void load_custom_character(uint8_t char_num, uint8_t *rows); // alias for createChar()
void printstr(const char[]);