pcf8574 i2c lcd module brands

This LCD I2C interface adapter can be added to a 16 x 2 or 20 x 4 character LCD display with a standard parallel interface to make it I2C compatible.  It can also be repurposed for other I2C to parallel tasks.

By default, the industry standard HD44780 compatible 16 x 2 and 20 x 4 character LCD displays require 4 or 8 parallel data lines to drive them along with a couple of pins for chip select and chip enable.  This consumes a lot of pins on the MCU.  This adapter board reduces the data pin requirements to only 2 pins which can also be shared with other I2C devices.

The backlight can be controlled ON/OFF, but the intensity is not directly controllable though the I2C interface.  Some modules have a jumper on the board that supplies Vcc power to the backlight.  That jumper can be removed and a voltage applied to the header pin nearest the ‘LED’ markings on the board to provide power to the backlight separately.  Note:  Some modules do not have this header / jumper installed, instead the solder pads have a trace connecting them.  It is possible to cut the trace between the pads and add header pins if desired.

The PCF8574 is a generic I2C to 8-bit I/O device and the module can be repurposed for other uses besides driving LCD modules.  Max I2C clock frequency is 100kHz which makes it most suited to lower speed applications.

VCC =  Connect to 5V.  This can come from the MCU or be a separate power supply.  Some LCD may operate at 3.3V and this module can also operate at 3.3V

The pin-out of the header which is soldered to the LCD follows for reference, but in general you don’t need to worry about it as the I2C interface board and software library takes care of this interface unless you are adapting the module for another use.  These pins are listed starting at the I2C header end of the board.

To use the adapter with an LCD, you will need to insert the 16-pin header into the 16 solder pad holes on the back of the LCD and solder them in place on the front side.  The pins are long and can be cut off before or after soldering.

Soldering the module on is easy to do, but if you already have other pins in those holes, they will need to be removed first before this board can be added.  The picture below shows the adapter mounted to the back of an LCD2004 4 x 20 character LCD.

This is the same module used on our I2C compatible LCD displays we sell and is well supported using the LiquidCrystal_I2C.h and similar libraries.  For using the board with software, you can check out one of the LCDs below that already have this module installed.

The PCF8574 itself is a general purpose 8-bit I/O expander for the I2C bus.  The reverse engineered schematics are provided here mainly for those who may want to adapt the module to other applications.  The I2C bus on this module is limited to a 100kHz clock frequency.

pcf8574 i2c lcd module brands

This is another great IIC/I2C/TWI/SPI Serial Interface. As the pin resources of Arduino controller is limited, your project may be not able to use normal LCD shield after connected with a certain quantity of sensors or SD card. However, with this I2C interface module, you will be able to realize data display via only 2 wires. If you already has I2C devices in your project, this LCD module actually cost no more resources at all. It is fantastic for Arduino based project.

pcf8574 i2c lcd module brands

This is a RoHS compliant I2C Serial LCD Daughter board that can be connected to a standard HD44780 compatible 16×2 , 20×4 or 20×2 Character Display Module that supports 4 bit mode. All Character Modules sold on our site support 4 bit mode, and nearly all commercially available 16×2 and 20×4 line character modules support it too.

There are many examples on internet for using this board with Arduino. Do a search for "Arduino LCD PCF8574". The I2C address is 0x3F by default, but this can be changed via 3 solder jumpers provided on the board. This allows up to 3 LCD displays to be controlled via a single I2C bus (giving each one it"s own address).

There are many Arduino libraries for a I2C display with the PCF8574 chip. We tested the library from Francisco Malpartida, and it works without any problems. For info see this page. We also made this library available on our site located here. To test this board with a LCD, do the following:

pcf8574 i2c lcd module brands

This is a RoHS compliant I2C Serial LCD Daughter board that can be connected to a standard HD44780 compatible 16×2 , 20×4 or 20×2 Character Display Module that supports 4 bit mode. All Character Modules sold on our site support 4 bit mode, and nearly all commercially available 16×2 and 20×4 line character modules support it too.

There are many examples on internet for using this board with Arduino. Do a search for "Arduino LCD PCF8574". The I2C address is 0x3F by default, but this can be changed via 3 solder jumpers provided on the board. This allows up to 3 LCD displays to be controlled via a single I2C bus (giving each one it"s own address).

There are many Arduino libraries for a I2C display with the PCF8574 chip. We tested the library from Francisco Malpartida, and it works without any problems. For info see this page. We also made this library available on our site located here. To test this board with a LCD, do the following:

pcf8574 i2c lcd module brands

Want to display sensor readings in your ESP32 projects without resorting to serial output? Then an I2C LCD display might be a better choice for you! It consumes only two GPIO pins which can also be shared with other I2C devices.

True to their name, these LCDs are ideal for displaying only text/characters. A 16×2 character LCD, for example, has an LED backlight and can display 32 ASCII characters in two rows of 16 characters each.

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

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.

An important point here is that several companies manufacture the same PCF8574 chip, Texas Instruments and NXP Semiconductors, to name a few. And the I2C address of your LCD depends on the chip manufacturer.

According to the Texas Instruments’ datasheet, the three address selection bits (A0, A1 and A2) are placed at the end of the 7-bit I2C address register.

According to the NXP Semiconductors’ datasheet, the three address selection bits (A0, A1 and A2) are also placed at the end of the 7-bit I2C address register. But the other bits in the address register are different.

So your LCD probably has a default I2C address 0x27Hex or 0x3FHex. However it is recommended that you find out the actual I2C address of the LCD before using it.

Connecting I2C LCD to ESP32 is very easy as you only need to connect 4 pins. Start by connecting the VCC pin to the VIN on the ESP32 and GND to ground.

Now we are left with the pins which are used for I2C communication. We are going to use the default I2C pins (GPIO#21 and GPIO#22) of the ESP32. Connect the SDA pin to the ESP32’s GPIO#21 and the SCL pin to the ESP32’s GPIO#22.

After wiring up the LCD you’ll need to adjust the contrast of the display. On the I2C module you will find a potentiometer that you can rotate with a small screwdriver.

Plug in the ESP32’s USB connector to power the LCD. You will see the backlight lit up. Now as you turn the knob on the potentiometer, you will start to see the first row of rectangles. If that happens, Congratulations! Your LCD is working fine.

Filter your search by typing ‘liquidcrystal‘. There should be some entries. Look for the LiquidCrystal I2C library by Frank de Brabander. Click on that entry, and then select Install.

The I2C address of your LCD depends on the manufacturer, as mentioned earlier. If your LCD has a Texas Instruments’ PCF8574 chip, its default I2C address is 0x27Hex. If your LCD has NXP Semiconductors’ PCF8574 chip, its default I2C address is 0x3FHex.

So your LCD probably has I2C address 0x27Hex or 0x3FHex. However it is recommended that you find out the actual I2C address of the LCD before using it. Luckily there’s an easy way to do this. Below is a simple I2C scanner sketch that scans your I2C bus and returns the address of each I2C device it finds.

After uploading the code, open the serial monitor at a baud rate of 115200 and press the EN button on the ESP32. You will see the I2C address of your I2C LCD display.

But, before you proceed to upload the sketch, you need to make a small change to make it work for you. You must pass the I2C address of your LCD and the dimensions of the display to the constructor of the LiquidCrystal_I2C class. If you are using a 16×2 character LCD, pass the 16 and 2; If you’re using a 20×4 LCD, pass 20 and 4. You got the point!

First of all an object of LiquidCrystal_I2C class is created. This object takes three parameters LiquidCrystal_I2C(address, columns, rows). This is where you need to enter the address you found earlier, and the dimensions of the display.

In ‘setup’ we call three functions. The first function is init(). It initializes the LCD object. The second function is clear(). This clears the LCD screen and moves the cursor to the top left corner. And third, the backlight() function turns on the LCD backlight.

After that we set the cursor position to the third column of the first row by calling the function lcd.setCursor(2, 0). The cursor position specifies the location where you want the new text to be displayed on the LCD. The upper left corner is assumed to be col=0, row=0.

lcd.scrollDisplayRight() function scrolls the contents of the display one space to the right. If you want the text to scroll continuously, you have to use this function inside a for loop.

lcd.scrollDisplayLeft() function scrolls the contents of the display one space to the left. Similar to above function, use this inside a for loop for continuous scrolling.

If you find the characters on the display dull and boring, you can create your own custom characters (glyphs) and symbols for your LCD. They are extremely useful when you want to display a character that is not part of the standard ASCII character set.

CGROM is used to store all permanent fonts that are displayed using their ASCII codes. For example, if we send 0x41 to the LCD, the letter ‘A’ will be printed on the display.

CGRAM is another memory used to store user defined characters. This RAM is limited to 64 bytes. For a 5×8 pixel based LCD, only 8 user-defined characters can be stored in CGRAM. And for 5×10 pixel based LCD only 4 user-defined characters can be stored.

Your imagination is limitless. The only limitation is that the LiquidCrystal_I2C library only supports eight custom characters. But don’t be discouraged, look at the bright side, at least we have eight characters.

After the library is included and the LCD object is created, custom character arrays are defined. The array consists of 8 bytes, each byte representing a row of a 5×8 LED matrix. In this sketch, eight custom characters have been created.

pcf8574 i2c lcd module brands

I2C Adapter Board fits right on the back of standard LC character display modules with 1 x Hitachi HD44780 or compatible display controller. The on-board PCF8574 or PCF8574A 8-bit I/O expander encodes the signals for the 4 data bits, the read/write select, register select, the enable signal, and the backlight-ON signal.

The supported I2C addresses depend on the version of the expander IC – please refer to the manufacturer PDF or find plenty of information online (for example Arduino forum).

Additional circuit design information: The I2C bus on development boards like the Arduino series of boards doesn’t have the necessary pull-up resistors already installed. To make the I2C connection happen, you will need pull-up resistors from VDD to SDA and SCL. The value of these resistors is not critical, as long as the connections are short and the data rate low. For just 1 or 2 displays on 5V logic level is a value of 2k to 20k a good choice.

pcf8574 i2c lcd module brands

However a better approach is to install from the IDE Library Manager, Bill Perry’s “HD44780” library and use the test program and examples from that instead of the older LiquidCrystal_I2C.