top of page

If you’ve ever tried to connect an LCD display to an Arduino, you might have noticed that it consumes a lot of pins on the Arduino. Even in 4-bit mode, the Arduino still requires a total of seven connections – which is half of the Arduino’s available digital I/O pins.

The solution is to use an I2C LCD display. It consumes only two I/O pins that are not even part of the set of digital I/O pins and can be shared with other I2C devices as well.

A typical I2C LCD display consists of an HD44780 based character LCD display and an I2C LCD adapter. 

I2C LCD Adapter

At the heart of the adapter is an 8-bit I/O expander chip – PCF8574. This chip converts the I2C data from an Arduino into the parallel data required for an LCD display.

The board also comes with a small trimpot to make fine adjustments to the display’s contrast.

In addition, there is a jumper on the board that supplies power to the backlight. To control the intensity of the backlight, you can remove the jumper and apply external voltage to the header pin that is marked ‘LED’.

I2C Address of LCD

If you are using multiple devices on the same I2C bus, you may need to set a different I2C address for the LCD adapter so that it does not conflict with another I2C device.

To do this, the adapter has three solder jumpers (A0, A1 and A2) or solder pads.

Each of these is used to hardcode the address. If a jumper is shorted with a blob of solder, it sets the address.

I2C LCD display Pinout

An I2C LCD has only 4 pins that connect it to the outside world. The connections are as follows:

GND is a ground pin. Connect it to the ground of the Arduino.

VCC supplies power to the module and LCD. Connect it to the Arduino’s 5V output or an external 5V power supply.

SDA is the I2C data pin. Connect it to the Arduino’s I2C data pin.

SCL is the I2C clock pin. Connect it to the Arduino’s I2C clock pin.

LCD 16X2 with I2C Pcb


Related Products