Arduino通过I2C控制1602LCD显示屏

    xiaoxiao2022-07-14  166

    出错原因

    对比度太高,实际输出了文字但是无法看到,需要弄螺丝刀电位器,此外出错原因还有地址不对,可通过文末代码进行测试。

    注意事项

    对比度调节地址是否正确接线 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 <Wire.h> #include <LiquidCrystal_I2C.h> //引用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 <Wire.h> 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() {} */

    输出结果

    最新回复(0)