0°

(八)Arduino进阶:使用带I2C的16×2 LCD

简介

在这个教程中,将使用IIC的方式去在LCD显示屏上面显示,这个教程将向您展示如何将LCD连接到I2C,它只有4个引脚来控制和使用LCD。

步骤一 材料准备

(八)Arduino进阶:使用带I2C的16x2 LCD

硬件准备:

  • Arduino Uno*1
  • LCD1602(16×2 )*1
  • I2C扩展板,用于16×2 LCD(不是使用I2C的LCD1602,即4根线的,没有的就要考虑)
  • 若干杜邦线
  • USB数据线

软件准备:

  • Arduino IDE
  • IIC库文件

步骤二 原理说明

教程中的LCD是使用I2C进行通信的,通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。I2C总线上的每一个设备都可以作为主设备或者从设备,而且每一个设备都会对应一个唯一的地址**(可以从I2C器件的数据手册得知),主从设备之间就通过这个地址来确定与哪个器件进行通信,在通常的应用中,我们把CPU带I2C总线接口的模块作为主设备,把挂接在总线上的其他设备都作为从设备。I2C总线上的主设备与从设备之间以字节(8位)为单位进行双向的数据传输。

arduino型号的IIC引脚定义:

Board I2C / TWI pins

Uno, Ethernet A4 (SDA), A5 (SCL)

Mega2560 20 (SDA), 21 (SCL)

Leonardo 2 (SDA), 3 (SCL)

Due 20 (SDA), 21 (SCL), SDA1, SCL1

步骤三 电路搭建

(八)Arduino进阶:使用带I2C的16x2 LCD
(八)Arduino进阶:使用带I2C的16x2 LCD
(八)Arduino进阶:使用带I2C的16x2 LCD
(八)Arduino进阶:使用带I2C的16x2 LCD

连接方式简单:

LCD1602——A4 (SDA), A5 (SCL)

步骤四 编写程序

Arduino IDE中包含一个LCD I2C主库。但是代码中存在一些问题。此库中的所有示例都假定I2C的默认地址为0x27。首先,我们必须找出I2C的地址是什么。我们可以使用I2C扫描器代码完成此操作。一旦我们有了I2C地址,我们就可以在示例代码中替换这个值并开始使用它。

I2C扫描器代码:

#include <Wire.h> 
 
void setup()
{
  Wire.begin();
 
  Serial.begin(9600);
  while (!Serial);             //  等待串口监视器
  Serial.println("\nI2C Scanner");
}
 
 
void loop()
{
  byte error, address;
  int nDevices;
 
  Serial.println("Scanning...");
 
  nDevices = 0;
  for(address = 1; address < 127; address++ )
  {
    // i2c_scanner使用Write.endTransmisstion的返回值来查看设备是否确认了该地址。
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
 
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
 
      nDevices++;
    }
    else if (error==4)
    {
      Serial.print("Unknown error at address 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);           // 等待5秒进行下一次扫描
}

示例代码(显示在串行监视器中输入的字符):

已有1人支付

步骤五 验证结果

(八)Arduino进阶:使用带I2C的16x2 LCD
(八)Arduino进阶:使用带I2C的16x2 LCD

上传代码后,您就可以开始了。对于这个教程,我采用了串行打印代码的例子。所以现在上传代码后,打开串行监视器并输入一个单词,然后单击“发送”。现在您应该看到此值显示在LCD上。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论