目录
简介
在这个教程中,将使用IIC的方式去在LCD显示屏上面显示,这个教程将向您展示如何将LCD连接到I2C,它只有4个引脚来控制和使用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
步骤三 电路搭建
连接方式简单:
LCD1602——A4 (SDA), A5 (SCL)
步骤四 编写程序
Arduino IDE中包含一个LCD I2C主库。但是代码中存在一些问题。此库中的所有示例都假定I2C的默认地址为0x27。首先,我们必须找出I2C的地址是什么。我们可以使用I2C扫描器代码完成此操作。一旦我们有了I2C地址,我们就可以在示例代码中替换这个值并开始使用它。
I2C扫描器代码:
[scu name=”arduino-ide-post” platform=”arduino:avr:uno”]
#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 foundn");
else
Serial.println("donen");
delay(5000); // 等待5秒进行下一次扫描
}
[/scu]
示例代码(显示在串行监视器中输入的字符):
步骤五 验证结果
上传代码后,您就可以开始了。对于这个教程,我采用了串行打印代码的例子。所以现在上传代码后,打开串行监视器并输入一个单词,然后单击“发送”。现在您应该看到此值显示在LCD上。