support for 40x4 (dual enable line) LCD

Issue #44 new
Former user created an issue

Is there any chance to add support for dual HD44780 40x4 LCD to a 4bit I2C code ? Such LCD have two enable lines for controlling rows.

Comments (15)

  1. Francisco Malpartida repo owner

    Perhaps, but it will take some time before I can get round to continue to enhance this library.

    Sorry for the inconvenience.

  2. Hjalmar Skovholm Hansen

    HI just use 2 instances of this VERY fine library

    LiquidCrystal lcd(31, 29, 28, 27, 26, 32, 33); LiquidCrystal lcd2(31, 29, 30, 27, 26, 32, 33);

    lcd.begin(40, 2); lcd2.begin(40, 2);

    lcd.setCursor(2, 1); lcd.print("min tur til at lege");

    lcd2.setCursor(0, 0); lcd2.print(" den 3 linje som man kan");

    it works fine on a chipkit ;o)


  3. Cobus


    Thank you Hjalmar for your bright idea of using two instances of this library ! But, as the original poster, I would like to use I2C to drive a (not yet bought) 40x4 LCD.

    I successfully drive a 20x4 LCD with an I2C backpack with the following instance :

    //                                   addr,en,rw,rs,d4,d5,d6,d7,LED,polarity
    LiquidCrystal_I2C lcd_2004_all_lines(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

    As far as I know, there is no I2C backpack for 40x4 displays. I plan to use a 20x4 I2C backpack. Following Hjalmar's idea, should I sacrifice the LED management and use the following instances with I2C ?

    //                                   addr,en,rw,rs,d4,d5,d6,d7      
    LiquidCrystal_I2C lcd_4004_lines_0_1(0x27, 2, 1, 0, 4, 5, 6, 7);
    LiquidCrystal_I2C lcd_4004_lines_2_3(0x27, 3, 1, 0, 4, 5, 6, 7);

    Side note : I can use an I2C DAC (digital to analog converter) to manage backlight. It seems, your library does not handle dimming, though.

    Any other way to use I2C to drive a 40x4 LCD ?

    I found 40x4 displays driven by S6A0069 or KS0066 or SPLC780D or twin ST7066U. Should all of them work or are there known incompatibilities ?

    Have a nice day !


  4. Francisco Malpartida repo owner

    I haven't tried it out. You just need to control the current to the backlights they are just leds.

  5. Francisco Malpartida repo owner

    One thing I forgot to mention, you can use a simple PWM to control the back light intensity. That's how I use it.

  6. Francisco Malpartida repo owner

    I missed my ne of the question :-). I use two instances for these displays. It works very well.

  7. Cobus


    Do you ever put the R/W pin in the read state, or is it always in the write state ? I want to connect R/W to ground (always in the write state) to save a pin of the PCF8574 for E2.

  8. Yves De Saedeleer

    Hi community,

    Any furhter news on this topic? Want to use the library with a ESP32...

    I am a newbie on LCD's



  9. Gregory

    @Cobus Looking at the code, _Rw is not used anywhere, so you may specify any value for it and use the pin for other purposes.

  10. Carles

    Dear sir. First of all, thanks for this very good library. My level is so low, without this, couldn’t manage to run HD44780 LCD’s 🙂
    Ok, something I was trying, and exhausted searching on google: 4004-1 series 40x4 LCD module, + PCF8574T I2C… And with the help who didit the same wiring direct, in a previous post… 😏

    pin R/W of LCD Module → GND
    pin Enable2 of LCD Module → pin 5 of I2C BackPack (port P1 of PCF8574T) (previous used to R/W)
    pin Enable1 of LCD Module → pin 6 of I2C BackPack (port P2 of PCF8574T), and rest of pins, as usual…

    LiquidCrystal_I2C lcd1 (0x27, 2, 255, 0, 4, 5, 6, 7);
    LiquidCrystal_I2C lcd2 (0x27, 1, 255, 0, 4, 5, 6, 7);

    lcd1.begin (20, 4);
    lcd2.begin (20, 4);

    And that’s it! 🙂

  11. Steve Tobias

    What model of 40x4 LCD are you using. I have 3x TM404A displays I am looking to use and looking for information on them.

  12. Log in to comment