驴友花雕
发表于 2022-5-10 14:43:23
2、打开网页https://github.com/,搜索LiquidCrystal_I2C
驴友花雕
发表于 2022-5-10 14:45:10
实验接线示意图
驴友花雕
发表于 2022-5-10 14:46:49
IIC LCD1602A液晶屏显示模块的几个实验1、程序一:I2C 扫描仪(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序一:I2C 扫描仪
这里查询结果是“0x27”(这个地址不对的话,实测无法烧录程序)
Arduino------LCD1602
5V-------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCLIIC 时钟线
*/
#include <Wire.h>
void setup() {
Wire.begin();//等待串口监视器
Serial.begin(9600);
Serial.println("\n I2C 扫描仪");
}
void loop() {
byte error, address;
int nDevices;
Serial.println("eagler8 正在扫描......");
nDevices = 0;
for (address = 1; address < 127; address++ ) {
// i2c_scanner 使用的返回值
// Write.endTransmission 看是否
// 设备确实确认了地址。
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0) {
Serial.print("I2C 设备在地址 0x");
if (address < 16)
Serial.print("0");
Serial.print(address, HEX);
Serial.println(" !");
nDevices++;
} else if (error == 4) {
Serial.print("地址 0x 出现未知错误");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
}
}
if (nDevices == 0)
Serial.println("没有找到 I2C 设备\n");
else
Serial.println("完成\n");
delay(5000);
}
驴友花雕
发表于 2022-5-10 14:48:27
(2)实验串口返回情况
驴友花雕
发表于 2022-5-10 14:50:10
程序二:显示字符“Welcome to eagler8”(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序二:显示字符“Welcome to eagler8”
实验接线
Arduino------LCD1602
5V-------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCLIIC 时钟线
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>//导入1602驱动库
// 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
LiquidCrystal_I2C lcd(0x27, 16, 2);
void MyPrintLCD(String MyString){
for (int i = 0; i < MyString.length(); i++)
lcd.write(MyString.charAt(i));//写入字符串字符
}
void setup() {
lcd.init();//初始化液晶屏
lcd.backlight();
MyPrintLCD("Welcome to ");
lcd.setCursor(0, 1);//写入定位
MyPrintLCD(" eagler8");
}
void loop() {
}
驴友花雕
发表于 2022-5-10 14:51:17
(2)实验场景图
驴友花雕
发表于 2022-5-10 14:53:42
程序三:显示通过串行端口(例如从串行监视器)发送的文本(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序三:显示通过串行端口(例如从串行监视器)发送的文本
实验接线
Arduino------LCD1602
5V-------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCLIIC 时钟线
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>//导入1602驱动
// 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); //初始化液晶屏
lcd.backlight(); //打开背光
Serial.begin(9600); //初始化串口
}
void loop(){
// 当字符通过串口到达时...
if (Serial.available()) {
// 等待整个消息到达
delay(100);
//清屏
//lcd.clear();
// 读取所有可用字符
while (Serial.available() > 0) {
// 将每个字符显示到 LCD
lcd.write(Serial.read());
}
}
}
驴友花雕
发表于 2022-5-10 14:55:15
(2)实验串口发送文本情况
驴友花雕
发表于 2022-5-10 14:56:25
(3)实验场景图
驴友花雕
发表于 2022-5-10 14:58:08
程序四:显示"Hello, world!"(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序四:显示"Hello, world!"
实验接线
Arduino------LCD1602
5V-------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCLIIC 时钟线
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>//导入1602驱动
// 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); //初始化液晶屏
lcd.backlight(); //打开背光
lcd.setCursor(0, 0);
lcd.print("Hello, world!");
lcd.setCursor(0, 1);
lcd.print("Arduino IIC 1602");
}
void loop(){
}
驴友花雕
发表于 2022-5-10 14:59:32
(2)实验场景图
驴友花雕
发表于 2022-5-10 15:01:15
5、程序五:显示所有键码(1)Arduino参考开源代码 /*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序五:显示所有键码
实验接线
Arduino------LCD1602
5V-------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCLIIC 时钟线
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>//导入1602驱动
#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args)write(args);
#else
#define printByte(args)print(args,BYTE);
#endif
uint8_t bell= {0x4, 0xe, 0xe, 0xe, 0x1f, 0x0, 0x4};
uint8_t note= {0x2, 0x3, 0x2, 0xe, 0x1e, 0xc, 0x0};
uint8_t clock = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0};
uint8_t heart = {0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0};
uint8_t duck= {0x0, 0xc, 0x1d, 0xf, 0xf, 0x6, 0x0};
uint8_t check = {0x0, 0x1, 0x3, 0x16, 0x1c, 0x8, 0x0};
uint8_t cross = {0x0, 0x1b, 0xe, 0x4, 0xe, 0x1b, 0x0};
uint8_t retarrow = {0x1, 0x1, 0x5, 0x9, 0x1f, 0x8, 0x4};
// 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); //初始化液晶屏
lcd.backlight(); //打开背光
lcd.createChar(0, bell);
lcd.createChar(1, note);
lcd.createChar(2, clock);
lcd.createChar(3, heart);
lcd.createChar(4, duck);
lcd.createChar(5, check);
lcd.createChar(6, cross);
lcd.createChar(7, retarrow);
lcd.home();
lcd.print("Hello world...");
lcd.setCursor(0, 1);
lcd.print(" i ");
lcd.printByte(3);
lcd.print(" arduinos!");
delay(5000);
displayKeyCodes();
}
// 显示所有键码
void displayKeyCodes(void) {
uint8_t i = 0;
while (1) {
lcd.clear();
lcd.print("Codes 0x"); lcd.print(i, HEX);
lcd.print("-0x"); lcd.print(i+16, HEX);
lcd.setCursor(0, 1);
for (int j=0; j<16; j++) {
lcd.printByte(i+j);
}
i+=16;
delay(4000);
}
}
void loop(){
}
驴友花雕
发表于 2022-5-10 15:02:40
(2)实验场景图
驴友花雕
发表于 2022-5-10 15:03:58
驴友花雕
发表于 2022-5-10 15:05:11
驴友花雕
发表于 2022-5-10 15:07:08
5、程序六:闪烁的小星星(光标)(1)Arduino参考开源代码 /*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序六:闪烁的小星星(光标)
实验接线
Arduino------LCD1602
5V-------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCLIIC 时钟线
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>//导入1602驱动
// 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init(); //初始化液晶屏
lcd.backlight(); //打开背光
}
void loop() {
bool blinking = true;//判断布尔闪烁
lcd.cursor();
while (1) {
if (blinking) {
lcd.clear();
lcd.print("No cursor blink");//光标不闪烁
lcd.noBlink();
blinking = false;
} else {
lcd.clear();
lcd.print("Cursor blink");//光标闪烁
lcd.blink();
blinking = true;
}
delay(4000);
}
}
驴友花雕
发表于 2022-5-10 15:08:24
(2)实验场景图
驴友花雕
发表于 2022-5-10 15:09:53
5、程序七:最简显示字符A和B(1)实验开源仿真编程(Linkboy V4.63)
驴友花雕
发表于 2022-5-10 15:11:16
(2)实验场景图
驴友花雕
发表于 2022-5-10 15:12:34
程序八:显示六个随机数字(1)实验开源仿真编程(Linkboy V4.63)
驴友花雕
发表于 2022-5-10 15:14:05
(2)实验场景图