9749浏览
楼主: 驴友花雕

[项目] 【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏

[复制链接]

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:43:23

2、打开网页https://github.com/,搜索LiquidCrystal_I2C

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:45:10

实验接线示意图

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图2

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:46:49

IIC LCD1602A液晶屏显示模块的几个实验
1、程序一:I2C 扫描仪
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序一:I2C 扫描仪
  4.   这里查询结果是“0x27”(这个地址不对的话,实测无法烧录程序)
  5.   Arduino------LCD1602
  6.   5V-------------VCC
  7.   GND-----------GND
  8.   A4-----------SDA IIC 数据线
  9.   A5-----------SCL  IIC 时钟线
  10. */
  11. #include <Wire.h>
  12. void setup() {
  13.   Wire.begin();//等待串口监视器
  14.   Serial.begin(9600);
  15.   Serial.println("\n I2C 扫描仪");
  16. }
  17. void loop() {
  18.   byte error, address;
  19.   int nDevices;
  20.   Serial.println("eagler8 正在扫描......");
  21.   nDevices = 0;
  22.   for (address = 1; address < 127; address++ ) {
  23.     // i2c_scanner 使用的返回值
  24.     // Write.endTransmission 看是否
  25.     // 设备确实确认了地址。
  26.     Wire.beginTransmission(address);
  27.     error = Wire.endTransmission();
  28.     if (error == 0) {
  29.       Serial.print("I2C 设备在地址 0x");
  30.       if (address < 16)
  31.         Serial.print("0");
  32.       Serial.print(address, HEX);
  33.       Serial.println(" !");
  34.       nDevices++;
  35.     } else if (error == 4) {
  36.       Serial.print("地址 0x 出现未知错误");
  37.       if (address < 16)
  38.         Serial.print("0");
  39.       Serial.println(address, HEX);
  40.     }
  41.   }
  42.   if (nDevices == 0)
  43.     Serial.println("没有找到 I2C 设备\n");
  44.   else
  45.     Serial.println("完成\n");
  46.   delay(5000);
  47. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:48:27

(2)实验串口返回情况

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:50:10

程序二:显示字符“Welcome to eagler8”
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序二:显示字符“Welcome to eagler8”
  4.   实验接线
  5.   Arduino------LCD1602
  6.   5V-------------VCC
  7.   GND-----------GND
  8.   A4-----------SDA IIC 数据线
  9.   A5-----------SCL  IIC 时钟线
  10. */
  11. #include <Wire.h>
  12. #include <LiquidCrystal_I2C.h>//导入1602驱动库
  13. // 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
  14. LiquidCrystal_I2C lcd(0x27, 16, 2);
  15. void MyPrintLCD(String MyString){
  16.   for (int i = 0; i < MyString.length(); i++)
  17.     lcd.write(MyString.charAt(i));//写入字符串字符
  18. }
  19. void setup() {
  20.   lcd.init();//初始化液晶屏
  21.   lcd.backlight();
  22.   MyPrintLCD("Welcome to ");
  23.   lcd.setCursor(0, 1);//写入定位
  24.   MyPrintLCD("         eagler8");
  25. }
  26. void loop() {
  27. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:51:17

2)实验场景图

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:53:42

程序三:显示通过串行端口(例如从串行监视器)发送的文本
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序三:显示通过串行端口(例如从串行监视器)发送的文本
  4.   实验接线
  5.   Arduino------LCD1602
  6.   5V-------------VCC
  7.   GND-----------GND
  8.   A4-----------SDA IIC 数据线
  9.   A5-----------SCL  IIC 时钟线
  10. */
  11. #include <Wire.h>
  12. #include <LiquidCrystal_I2C.h>//导入1602驱动
  13. // 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
  14. LiquidCrystal_I2C lcd(0x27, 16, 2);
  15. void setup() {
  16.   lcd.init();                 //初始化液晶屏
  17.   lcd.backlight();            //打开背光
  18.   Serial.begin(9600);         //初始化串口
  19. }
  20. void loop(){
  21.   // 当字符通过串口到达时...
  22.   if (Serial.available()) {
  23.     // 等待整个消息到达
  24.     delay(100);
  25.     //清屏
  26.     //lcd.clear();
  27.     // 读取所有可用字符
  28.     while (Serial.available() > 0) {
  29.       // 将每个字符显示到 LCD
  30.       lcd.write(Serial.read());
  31.     }
  32.   }
  33. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:55:15

2)实验串口发送文本情况

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:56:25

3)实验场景图

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:58:08

程序四:显示"Hello, world!"
1Arduino参考开源代码

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序四:显示"Hello, world!"
  4.   实验接线
  5.   Arduino------LCD1602
  6.   5V-------------VCC
  7.   GND-----------GND
  8.   A4-----------SDA IIC 数据线
  9.   A5-----------SCL  IIC 时钟线
  10. */
  11. #include <Wire.h>
  12. #include <LiquidCrystal_I2C.h>//导入1602驱动
  13. // 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
  14. LiquidCrystal_I2C lcd(0x27, 16, 2);
  15. void setup() {
  16.   lcd.init();                 //初始化液晶屏
  17.   lcd.backlight();            //打开背光
  18.   lcd.setCursor(0, 0);
  19.   lcd.print("Hello, world!");
  20.   lcd.setCursor(0, 1);
  21.   lcd.print("Arduino IIC 1602");
  22. }
  23. void loop(){
  24. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 14:59:32

2)实验场景图

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 15:01:15

5、程序五:显示所有键码
1Arduino参考开源代码
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序五:显示所有键码
  4.   实验接线
  5.   Arduino------LCD1602
  6.   5V-------------VCC
  7.   GND-----------GND
  8.   A4-----------SDA IIC 数据线
  9.   A5-----------SCL  IIC 时钟线
  10. */
  11. #include <Wire.h>
  12. #include <LiquidCrystal_I2C.h>//导入1602驱动
  13. #if defined(ARDUINO) && ARDUINO >= 100
  14. #define printByte(args)  write(args);
  15. #else
  16. #define printByte(args)  print(args,BYTE);
  17. #endif
  18. uint8_t bell[8]  = {0x4, 0xe, 0xe, 0xe, 0x1f, 0x0, 0x4};
  19. uint8_t note[8]  = {0x2, 0x3, 0x2, 0xe, 0x1e, 0xc, 0x0};
  20. uint8_t clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0};
  21. uint8_t heart[8] = {0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0};
  22. uint8_t duck[8]  = {0x0, 0xc, 0x1d, 0xf, 0xf, 0x6, 0x0};
  23. uint8_t check[8] = {0x0, 0x1, 0x3, 0x16, 0x1c, 0x8, 0x0};
  24. uint8_t cross[8] = {0x0, 0x1b, 0xe, 0x4, 0xe, 0x1b, 0x0};
  25. uint8_t retarrow[8] = {  0x1, 0x1, 0x5, 0x9, 0x1f, 0x8, 0x4};
  26. // 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
  27. LiquidCrystal_I2C lcd(0x27, 16, 2);
  28. void setup() {
  29.   lcd.init();                 //初始化液晶屏
  30.   lcd.backlight();            //打开背光
  31.   lcd.createChar(0, bell);
  32.   lcd.createChar(1, note);
  33.   lcd.createChar(2, clock);
  34.   lcd.createChar(3, heart);
  35.   lcd.createChar(4, duck);
  36.   lcd.createChar(5, check);
  37.   lcd.createChar(6, cross);
  38.   lcd.createChar(7, retarrow);
  39.   lcd.home();
  40.   lcd.print("Hello world...");
  41.   lcd.setCursor(0, 1);
  42.   lcd.print(" i ");
  43.   lcd.printByte(3);
  44.   lcd.print(" arduinos!");
  45.   delay(5000);
  46.   displayKeyCodes();
  47. }
  48. // 显示所有键码
  49. void displayKeyCodes(void) {
  50.   uint8_t i = 0;
  51.   while (1) {
  52.     lcd.clear();
  53.     lcd.print("Codes 0x"); lcd.print(i, HEX);
  54.     lcd.print("-0x"); lcd.print(i+16, HEX);
  55.     lcd.setCursor(0, 1);
  56.     for (int j=0; j<16; j++) {
  57.       lcd.printByte(i+j);
  58.     }
  59.     i+=16;
  60.     delay(4000);
  61.   }
  62. }
  63. void loop(){
  64. }
复制代码



回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 15:02:40

(2)实验场景图

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图2

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 15:03:58

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 15:05:11

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 15:07:08

5、程序六:闪烁的小星星(光标)
1Arduino参考开源代码
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   程序六:闪烁的小星星(光标)
  4.   实验接线
  5.   Arduino------LCD1602
  6.   5V-------------VCC
  7.   GND-----------GND
  8.   A4-----------SDA IIC 数据线
  9.   A5-----------SCL  IIC 时钟线
  10. */
  11. #include <Wire.h>
  12. #include <LiquidCrystal_I2C.h>//导入1602驱动
  13. // 将 LCD 地址设置为 0x27 以实现 16 个字符和 2 行显示
  14. LiquidCrystal_I2C lcd(0x27, 16, 2);
  15. void setup() {
  16.   lcd.init();                 //初始化液晶屏
  17.   lcd.backlight();            //打开背光
  18. }
  19. void loop() {
  20.   bool blinking = true;//判断布尔闪烁
  21.   lcd.cursor();
  22.   while (1) {
  23.     if (blinking) {  
  24.       lcd.clear();
  25.       lcd.print("No cursor blink");//光标不闪烁
  26.       lcd.noBlink();
  27.       blinking = false;
  28.     } else {        
  29.       lcd.clear();
  30.       lcd.print("Cursor blink");//光标闪烁
  31.       lcd.blink();
  32.       blinking = true;
  33.     }
  34.     delay(4000);
  35.   }
  36. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 15:08:24

2)实验场景图

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图2

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 15:09:53

5、程序七:最简显示字符A和B
1)实验开源仿真编程(Linkboy V4.63)

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 15:11:16

2)实验场景图

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 15:12:34

程序八:显示六个随机数字
1)实验开源仿真编程(Linkboy V4.63)

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-5-10 15:14:05

2)实验场景图

【Arduino】168种传感器模块系列实验(88)--- LCD1602液晶屏图1

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail