Arduino通过I2C控制1602LCD显示屏

出错原因

对比度太高,实际输出了文字但是无法看到,需要弄螺丝刀电位器,此外出错原因还有地址不对,可通过文末代码进行测试。
Arduino通过I2C控制1602LCD显示屏_第1张图片

注意事项

  • 对比度调节
  • 地址是否正确
  • 接线
    GND ------ 地线
    VCC ------ 电源(5V or 3.3v 电源不同显示效果有点差别)
    SDA ------ I2C 数据线
    SCL ------ I2C 时钟线
  • 注意显示文字长度

常用函数

lcd.init(),lcd初始化
setCursor(x,y),设置起始坐标
lcd.print(),显示内容
lcd.clear(),清空显示屏
lcd.backlight(),开启lcd背光灯

程序代码

下列代码包含两个部分,前半部分为正常驱动LCD显示屏,后半部分(注释掉了)用于寻找LCD物理地址。


//LingShun lab
#include  
#include  //引用I2C库

//设置LCD1602设备地址,这里的地址是0x3F,一般是0x20,或者0x27,具体看模块手册
LiquidCrystal_I2C lcd(0x27,16,2);  

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

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


/*********************************************************************/
//查找LCD地址的程序 I2C Scanner
/*
#include 
void setup() { 
    Serial.begin (115200); // Leonardo: wait for serial port to connect 
    while (!Serial) { } 
    Serial.println (); 
    Serial.println ("I2C scanner. Scanning ..."); 
    byte count = 0; 
    Wire.begin(); 
    for (byte i = 8; i < 120; i++) { 
        Wire.beginTransmission (i); 
        if (Wire.endTransmission () == 0) { 
          Serial.print ("Found address: "); 
          Serial.print (i, DEC); 
          Serial.print (" (0x"); 
          Serial.print (i, HEX); 
          Serial.println (")"); 
          count++; 
          delay (1); // maybe unneeded? 
        } // end of good response 
    } // end of for loop 
    Serial.println ("Done."); 
    Serial.print ("Found "); 
    Serial.print (count, DEC); 
    Serial.println (" device(s).");
} // end of setup
void loop() {}
*/

输出结果
Arduino通过I2C控制1602LCD显示屏_第2张图片

你可能感兴趣的:(Arduino)