Simplify Your Wiring: The Ultimate Guide to the PCF8574 I2C LCD Adapter for Arduino

If you have ever connected a standard 16×2 or 20×4 character LCD to an Arduino, you know the struggle.
It works great, but it requires at least 6 digital pins and a mess of wires on your breadboard, leaving you with very few pins for sensors, motors, or buttons.

Wouldn’t it be better if you could control that entire display using just two wires?

Enter the PCF8574 IIC/I2C Serial Interface Adapter Module. This inexpensive “backpack” module
solders directly onto the back of your LCD screen and converts its complex parallel interface into a simple I2C serial protocol.

In this guide, we will walk through exactly how to wire, configure, and code this essential module to clean up your projects and free up your Arduino.


What is the PCF8574 I2C Module?

The PCF8574 is an I/O expander chip. In the context of Arduino LCDs, it acts as a translator. Your Arduino sends simple serial commands over two lines (SDA and SCL), and the chip expands those commands into the multiple parallel signals needed to drive the LCD screen.

Key Benefits:

  • Massive Pin Saving: Uses only 2 pins (A4 & A5 on Uno) instead of 6–12 digital pins.
  • Cleaner Wiring: Eliminates messy “spaghetti wiring” on your breadboard.
  • Built-in Contrast Control: Onboard potentiometer for screen visibility adjustment.

Bill of Materials Needed

  • Arduino Uno R3 (or Mega, Nano, etc.)
  • Standard 16×2 Character LCD
  • PCF8574 I2C Interface Module
  • 4x Jumper Wires (Male–Female)

Wiring Guide: The Connection Diagram

Connecting the module is incredibly straightforward. You only need to connect power (VCC/GND) and the I2C data lines (SDA/SCL).
Below is the complete wiring diagram:

Pinout and Wiring Table (Arduino Uno)

PCF8574 Pin Arduino Uno Pin Function
GND GND Ground connection
VCC 5V Power supply
SDA A4 Serial Data Line
SCL A5 Serial Clock Line

Note for Arduino Mega users: SDA = pin 20, SCL = pin 21.


Software Setup: Installing the Library

To communicate with this module, install the LiquidCrystal I2C library:

  1. Open Arduino IDE
  2. Go to Sketch → Include Library → Manage Libraries…
  3. Search for LiquidCrystal I2C
  4. Install the version by Frank de Brabander

The Code: Hello World

Before uploading, note that the common I2C addresses are 0x27 and 0x3F.

Use this code to test the display:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
  lcd.init();
  lcd.backlight();

  lcd.setCursor(0,0);
  lcd.print("Hello, World!");

  lcd.setCursor(0,1);
  lcd.print("I2C Adapter");
}

void loop()
{
  // Nothing needed here
}

Critical Troubleshooting: Why Can’t I See Anything?

1. The Contrast Potentiometer

This is the #1 cause of blank screens. The small blue knob controls contrast.
While the Arduino is powered, rotate the screw slowly until the characters appear.

2. Wrong I2C Address

If 0x27 doesn’t work, try:

LiquidCrystal_I2C lcd(0x3F, 16, 2);

Conclusion

The PCF8574 I2C module is a game-changer for Arduino projects that require an LCD.
By using only two analog pins, you unlock a clean, efficient display solution without clutter.
This module is a must-have for any maker’s toolbox.

Leave a Reply