回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【雕爷学编程】Arduino动手做(85)---LCD1602液晶屏模块6 中等

头像 驴友花雕 2023.07.25 13 1

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

 

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验八十五:LCD1602液晶显示屏1602A模块 蓝屏黄绿屏灰屏5V 3.3V焊排针 IIC/I2C

 

12.1-01.jpg
12.1-02.jpg

Arduino实验接线示意图

 

12.1-25.jpg

12.1-26.jpg

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

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序三:显示通过串行端口(例如从串行监视器)发送的文本
  实验接线
  Arduino------LCD1602
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 数据线
  A5-----------SCL  IIC 时钟线
*/

#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());
    }
  }
}

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

12.1-29.jpg

(3)实验场景图

 

12.1-30.jpg

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

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序四:显示"Hello, world!"
  实验接线
  Arduino------LCD1602
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 数据线
  A5-----------SCL  IIC 时钟线
*/

#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(){
}

(2)实验场景图
 

12.1-31.jpg

5、程序五:显示所有键码
(1)Arduino参考开源代码
 

 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序五:显示所有键码
  实验接线
  Arduino------LCD1602
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 数据线
  A5-----------SCL  IIC 时钟线
*/

#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[8]  = {0x4, 0xe, 0xe, 0xe, 0x1f, 0x0, 0x4};
uint8_t note[8]  = {0x2, 0x3, 0x2, 0xe, 0x1e, 0xc, 0x0};
uint8_t clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0};
uint8_t heart[8] = {0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0};
uint8_t duck[8]  = {0x0, 0xc, 0x1d, 0xf, 0xf, 0x6, 0x0};
uint8_t check[8] = {0x0, 0x1, 0x3, 0x16, 0x1c, 0x8, 0x0};
uint8_t cross[8] = {0x0, 0x1b, 0xe, 0x4, 0xe, 0x1b, 0x0};
uint8_t retarrow[8] = {  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(){
}

(2)实验场景图
 

12.1-32.jpg
12.1-33.jpg
12.1-34.jpg
12.1-35.jpg
12.1-36.jpg
12.1-37.JPG

程序六:闪烁的小星星(光标)
(1)Arduino参考开源代码
 

代码
/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序六:闪烁的小星星(光标)
  实验接线
  Arduino------LCD1602
  5V-------------VCC
  GND-----------GND
  A4-----------SDA IIC 数据线
  A5-----------SCL  IIC 时钟线
*/

#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);
  }
}

(2)实验场景图
 

12.1-38.jpg
12.1-39.jpg

评论

user-avatar
  • hacker_

    hacker_2023.08.08

    666

    0
    icon 他的勋章
      展开更多