LCD Screen Controller I²C / I2C Driver for 1602 & 2004 LCD - PCF8574T

  • Was  RM12.00 
  • RM6.00

  • Product Code: LCD Controller Module
  • Availability: In Stock

Almost every electronics enthusiast has run into pin issues with 1602, 2004 or the like LCDs. This module has a PCF8574T / PCF8574 onboard which reduces the number of data pins needed to control the LCD down to 2! This excludes the power/ground pins which are also required. This I2C-Backpack featuring the PCF8574T-I2C-Driver can be soldered behind a standard 1602- or 2004-LCD - after that, only 2 I/O-Pins are required to get the LCD up and running.Additionally, you can adjust the contrast with a potentiometer on the backpack, as well as completely disable the backlight with a jumper.


  • For all standard 5V 16 Chars, 2 Lines and 20 Chars, 4 Lines LCD
  • PCF8574T / PCF8574 Driver
  • Potentiometer for Contrast
  • Disable Backlight by jumper
  • Connector Pins: SDA / SCL / VCC / GND
  • Arduino-Library LiquidCrystalI2C available
  • Arduino IDE Example
  • Size: 40mm x 18mm


Connect I2C Driver Module to an Arduino

For this experiment it is necessary to download and install the “Arduino I2C LCD” library. First of all, rename the existing “LiquidCrystal” library folder in your Arduino libraries folder as a backup, and proceed to the rest of the process.


Arduino Sketch:

#include <Wire.h> // Include Wire.h to control I2C
#include <LiquidCrystal_I2C.h> //Download & include the code library can be downloaded below

LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE); // Initialize LCD Display at address 0x27 
void setup()
 lcd.begin (16,2);
void loop()
  lcd.setBacklight(HIGH); //Set Back light turn On
  lcd.setCursor(0,0); // Move cursor to 0
  lcd.print("QQtrading - TEST"); 
  lcd.print("Ideas Comes Real");


If you are 100% sure that everything is okay, but you don’t see any characters on the display, try to adjust the contrast control pot of the backpack and set it a position where the characters are bright and the background does not have dirty boxes behind the characters.


Still not working?

You will need to find the I2C address by yourself by running an I2C scanner:

//Written by Nick Gammon
// Date: 20th April 2011

#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;

  for (byte i = 1; 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 (")");
      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() {}

Then open the serial monitor and select 115200 baud to get the address.


Find your sketch:

  LiquidCrystal_I2C lcd(0x27,

Replace 27 to your module address.


Some change to 3F will do

  LiquidCrystal_I2C lcd(0x3F,


Write a review

Note: HTML is not translated!
    Bad           Good


Related Products

Tags: LCD, I2C