为什么使用I2C接口?因为省IO口啊,只需要4条线,可以看看之前发的实验,接线多复杂呀,对吧。还有背光灯,和可调节对比度(就是背面蓝色那块可以旋转的调),使用i2c模块之前需要首先下载并安装直接LiquidCrystalI2C库文件从github.com下载:https://github.com/marcoschwartz/LiquidCrystalI2C 这里会下载一个zip文件,不用解压直接导入到Arduino ide里面,如有问题自行百度。

具体怎么实现解决问题,请往下看:

引脚说明

GND —— 地线

VCC —— 电源(5V or 3.3v 电源不同显示效果有点差别)

SDA —— I2C 数据线

SCL —— I2C 时钟线  

接线方法

LCD1602 i2c模块                         Ardunio Uno

GND                           <——>        GND接地线

VCC                           <——>         5V 接电源

SDA                           <——>         A4

SCL                           <——>         A5  

程序实现

需要用到LCD1602 I2C的库,下载地址是 https://github.com/marcoschwartz/LiquidCrystal_I2C 把下载的库导入到Arduino ide里

#include    
#include  //引用I2C库  
//设置LCD1602设备地址,具体地址请看下面 
LiquidCrystal_I2C lcd(0x3F,16,2);    

void setup()  
{  
  lcd.init();                  // 初始化LCD  
  lcd.backlight();             //设置LCD背景等亮  
}  

void loop()  
{  
  lcd.setCursor(0,0);                //设置显示指针  
  lcd.print("LCD1602 iic Test");     //输出字符到LCD1602上  
  lcd.setCursor(0,1);  
  lcd.print("         by L.L.");  
  delay(1000);  
} 

对于程序中i2c地址的设定,请看上图对应设定,淘宝上很多都像图中一样只有一个跳帽,一般地址为0x27,其他有三个跳线帽的参照上图。 这下1602就能正常显示了。

但是不知道什么问题,我的1602总是只显示一个字符,剩下的就不显示了,说明程序还是有问题滴 在代码中添加一个函数(如果添加在loop后面,请在setup函数签名添加函数声明):

void LCDPrint(String MyString)  
{
for (int i=0;i<MyString.length();i++)  
lcd.write(MyString.charAt(i));  
}

然后在原来代码中把lcd.print(“*”) 函数替换为LCDPrint(“*”)即可。