Arduino + LCD1602 初体验总结

LCD1602引脚功能

引脚ID引脚名电平功能
1VSS电源地
2VCC电源正极(+5V)
3V0调节对比度
4RS0/10: 输入指令、1: 输入数据
5R/W0/10: 写、1:读
6E1, 1->0使能信号(1: 读取信息、1->0: 执行指令)
7D00/1数据线0
8D10/1数据线1
9D20/1数据线2
10D30/1数据线3
11D40/1数据线4
12D50/1数据线5
13D60/1数据线6
14D70/1数据线7
15AVCC背光灯正极
16KGND背光灯负极

电路图

在这里插入图片描述


LiquidCrystal 库

  • LiquidCrystal()
    构造方法,有四种重载:
    LiquidCrystal(rs, enable, d4, d5, d6, d7)
    LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
    LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
    LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)

    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
    }
    void loop() {
    }
    
  • begin()
    初始化屏幕,根据实际大小传入参数:
    lcd.begin(cols, rows)

    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
        lcd.begin(16, 2);
    }
    void loop() {
    }
    
  • setCursor()
    移动光标
    lcd.setCursor(col, row)

    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
        lcd.begin(16, 2);
        lcd.setCursor(0, 1);
    }
    void loop() {
    }
    
  • print()
    在屏幕上打印,两种重载
    lcd.print(data)
    lcd.print(data, BASE)

    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
        lcd.begin(16, 2);
        lcd.setCursor(0, 0);
        lcd.print("hello, Mr.He!");
        lcd.setCursor(0, 1);
        lcd.print(16, 2); // 二进制 16 ‘10000’
        lcd.setCursor(6, 1);
        lcd.print(16, 10); // 十进制 16 ‘16’
        lcd.setCursor(9, 1);
        lcd.print(16, 16); // 十六进制 16 ‘1’
    }
    void loop() {
    }
    

    在这里插入图片描述

  • clear()
    清屏同时复原光标位置
    lcd.clear()

    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
        lcd.begin(16, 2);
    }
    void loop() {
        lcd.clear();
        lcd.setCursor(0, 1);
        lcd.print("hello, Mr.He!");
        delay(1000);
        lcd.clear();
        lcd.print("hello, Mr.He!");
        delay(1000);
    }
    

    在这里插入图片描述

  • home()
    光标移动到左上角,等价于setCursor(0, 0)
    lcd.home()

  • write()
    写字符到屏幕上
    lcd.write(data)

    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    int count = 0;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
    	lcd.begin(16, 2);
    	lcd.setCursor(0, 0);
    	lcd.print("hello, Mr.He!");
    }
    void loop() {
    	lcd.setCursor(0, 1);
    	lcd.print(count);
    	lcd.setCursor(8, 1);
    	lcd.write(count);
      	delay(1000);
    	count++;
    }
    

在这里插入图片描述

  • cursor()
    用一个下划线来显示当前光标位置
    lcd.cursor()
    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    int count = 0;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
        lcd.begin(16, 2);
        lcd.setCursor(0, 0);
        lcd.cursor();
        lcd.print("hello, Mr.He!");
    }
    void loop() {
      	for (uint8_t loop = 0; loop < 16; loop++) {
    		lcd.setCursor(loop, 0);
    		delay(1000);
    	}
    }
    

在这里插入图片描述

  • noCursor()
    隐藏用于显示光标位置的下划线
    lcd.noCursor()
  • blink()
    用一个块的闪烁来显示当前光标位置
    lcd.blink()
    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    int count = 0;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
        lcd.begin(16, 2);
        lcd.setCursor(0, 0);
        lcd.cursor();
        lcd.blink();
        lcd.print("hello, Mr.He!");
    }
    void loop() {
     	for (uint8_t loop = 0; loop < 16; loop++) {
    	    lcd.setCursor(loop, 0);
    	    delay(1000);
        }
    }
    

在这里插入图片描述

  • noBlink()
    关闭闪烁
    lcd.noBlink()

  • display()
    默认display,在noDisplay之后重新打开屏幕显示
    lcd.display()

    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    int count = 0;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
    	lcd.begin(16, 2);
    	lcd.display();
    	lcd.print("hello, Mr.He!");
    }
    void loop() {
    	count++;
    	delay(1000);
    	if (count % 2 == 0) {
      		lcd.noDisplay();
    	} else {
      		lcd.display();
    	}
    }
    

在这里插入图片描述

  • noDisplay()
    关闭屏幕显示
    lcd.noDisplay()
  • scrollDisplayLeft()
    将所有显示向左滚动一个字符
    lcd.scrollDisplayLeft()
    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    int count = 1;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
    	lcd.begin(16, 2);
    	lcd.print("hello, Mr.He!");
    }
    void loop() {
    	delay(500);
    	if (count <= 13) {
      		lcd.scrollDisplayLeft();
      		count++;
    	} else {
      		lcd.scrollDisplayRight();
      		count++;
    	}
    	if (count == 43) {
      		count = -15;
    	}
    }
    

在这里插入图片描述

  • scrollDisplayRight()
    将所有显示向左滚动一个字符
    lcd.scrollDisplayRight()
  • autoscroll()
    开启后,每输出一个字符,显示的内容整体都会根据字符输出方向滚动
    lcd.autoscroll()
    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
    	lcd.begin(16, 2);
    	lcd.cursor();
    	lcd.print("hello, Mr.He!");
    	lcd.setCursor(15, 1);
    	lcd.autoscroll();
    	for (int loop = 0; loop < 16; loop++) {
      		delay(500);
      		lcd.print(loop, 16);
    	}
    }
    void loop() {
    }
    

在这里插入图片描述

  • noAutoscroll()
    关闭自动滚动
    lcd.noAutoscroll()
  • leftToRight()
    更改字符输出方向为从左到右(默认)
    lcd.leftToRight();
    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
    	lcd.begin(16, 2);
        lcd.rightToLeft();
        lcd.setCursor(15, 0);
        lcd.print("hello, Mr.He!");
        lcd.leftToRight();
        lcd.setCursor(0, 1);
        lcd.print("hello, Mr.He!");
    }
    void loop() {
    }
    

在这里插入图片描述

  • rightToLeft()
    更改字符输出方向为从右到左
    lcd.rightToLeft();
  • createChar()
    自定义字符,填充 5 * 8矩阵
    lcd.createChar(num, data) ----num取0 ~ 7
    #include <LiquidCrystal.h>
    const int rs = 7, en = 8, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
    LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    void setup() {
    	byte heart[8] = {
    		B00000,
    		B00000,
    		B01010,
    		B11111,
    		B11111,
    		B01110,
    		B00100,
    	};
    	lcd.createChar(0, heart); // ** 需要在begin()之前调用!!!**
    	lcd.begin(16, 2);
    	lcd.print("hello, Mr.He!");
    	lcd.setCursor(0, 1);
    	lcd.write(byte(0));
    	lcd.write(byte(0));
    	lcd.write(byte(0));
    }
    void loop() {
    }
    
    在这里插入图片描述

### 回答1: Arduino是一种开源电子平台,用于快速开发原型应用和交互式项目。它可以通过编程控制各种传感器、执行器和其他电子设备,以实现各种功能。 LCD1602是一种常见的字符型液晶显示器,它可以显示2行16列的字符。通过使用Arduino,我们可以通过控制LCD1602来显示各种信息,如文本、数字和图标等。 BME280是一种集成温度、湿度和气压传感器的模块。它可以提供高精度的环境数据监测和测量功能。通过连接BME280模块到Arduino,我们可以使用编程语言来读取并处理传感器数据,并根据需要显示在LCD1602上。 通过组合使用ArduinoLCD1602和BME280,我们可以实现许多有趣和实用的应用,如实时显示室内温度、湿度和气压数据、气象站监测、智能温控系统等。通过编写适当的代码,我们可以根据传感器数据的变化来触发特定的操作,或根据用户的输入来控制其他外部设备。 总之,ArduinoLCD1602、BME280模块的结合可以帮助我们在嵌入式系统和物联网领域开发各种有趣和实用的项目,从而提高我们对电子技术的理解和创造力。 ### 回答2: Arduino是一种开源的电子原型平台,它可以用来创建各种各样的电子项目。它基于易于使用的硬件和软件,可以让初学者和专业人士快速开发电子原型。Arduino具有低成本、易于使用、灵活等特点,因此受到了广大爱好者的喜爱。 LCD1602是一种常用的液晶显示器模块,它具有16列和2行的字符显示。它可以通过数码管显示字符、数字等各种信息。LCD1602广泛应用于各种电子设备中,如计算器、时钟、温度计等。 BME280是一种先进的环境传感器,它可以测量温度、湿度和气压。BME280具有高精度、低功耗、小尺寸等特点,使得它在各种气象站、温控设备和工业应用中得到了广泛应用。 将ArduinoLCD1602BME280结合在一起,可以实现更多有趣和实用的功能。比如,我们可以使用Arduino连接LCD1602和BME280,通过读取BME280测得的温湿度信息,并将其显示在LCD1602屏幕上。这样,我们就可以实时监测当前的环境温湿度。另外,我们还可以编写程序,让LCD1602显示其他自定义的文字、图形等,以满足不同项目的需求。 总的来说,ArduinoLCD1602BME280是两种常用的电子元件,它们可以通过连接和编程实现各种有趣和实用的功能。无论是初学者还是专业人士,都可以利用它们进行创造性的电子设计和开发。 ### 回答3: Arduino是一种开源的硬件平台,广泛应用于各种物联网设备和机器人项目中。它基于易于使用和理解的编程语言,可以用于控制各种传感器、执行各种操作,并与电脑或其他设备进行通信。 LCD1602是一种常见的液晶显示屏,具有16列2行的字符显示。它可以通过与Arduino连接,并通过程序控制来实现文本、数字或符号的显示功能。它的显示效果清晰,具有较好的可读性,适用于各种项目中的实时信息显示。 BME280是一种环境传感器,可以测量环境的温度、湿度和大气压力。它还具有高精度和低功耗的特点,可以通过I2C或SPI接口与Arduino进行通信。通过将BME280与ArduinoLCD1602等其他组件连接,可以实现实时监测和显示环境参数的功能。 以一个具体的示例来说明,假设我们要制作一个室内温湿度监测器。我们可以将BME280传感器与Arduino连接,通过编程读取温湿度数据,并将其通过LCD1602显示在液晶屏上。当温度或湿度超过设定阈值时,我们可以通过Arduino控制其他设备,例如风扇或加湿器,来调节室内环境。 通过使用ArduinoLCD1602和BME280等组件,我们可以实现各种不同的项目,例如智能家居、气象站、智能农业等。这些组件具有易于使用、灵活性强的特点,为各种物联网和机器人项目提供了良好的硬件基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值