PCA9555 interfaced with HD44780 LCD display.
PCA9555 interfaced with HD44780 LCD display.


PCA9555 32-Bit GPIO Expander with Arduino and LCD Display

by Lewis Loflin


Note: the PCA9555 only comes in a surface mount version and will need a carrier board.

YouTube Video for this project: PCA9555 32-Bit GPIO Expander with Arduino

In this series I'll be connecting the PCA9555D 32-bit GPIO expander board to an Arduino micro-controller. First we started out simple with counting from 0 to 255 in binary on eight LEDs. See Part 1 for technical information and getting started.

Here in part four we have connected a type a Hd44780 type LCD display and learn how to enter data and manipulate character date and strings. In addition to the LCD display we will scan a keypad, use hardware interrupts, all connected through a single PCA9555 module. In addition I'll reveal some code little discussed with Arduino and we will convert/manipulate code for output to the LCD display.

In part two we learned to connect a 4X4 keypad to an 8-bit port. Using "polling" the routine getKey() we will check for a key press and return a BCD value from 0 to 16 displayed on the eight LEDs. See Part 2

In part three we learned to use the interrupt pin to jump to the key scan routine only when a key is pressed. A BCD value is output on the eight LEDs. See Part 3

How to connect LCD display:
E = connected display pin 6 (E), hi to lo transition will clock info into display. Register for command or data is selected by RS. Data is output in port0, two bits of port1 on the MCP23060 (bits 6, 7) are to control E and RS. R/W goes to ground. Pins 15 and 16 are the back light.

PCA9555 Demo Board
PCA9555 Demo Board



4X4 keypad used in this demo.


PCA9555 pin connections and Adapter Board
PCA9555 pin connections and Adapter Board


Update for 2023: the above demo board with two PCA9555s is no longer available. Because the PCA9555 only comes in surface mount, a conversion or Adapter board is needed along with 24, 2.5mm pin headers. (Two rows of twelve.)

For this project one will need two PCA9555s and two Adapter boards.

The "SOIC-24 / SOP24 SMD to DIP Adapter" (search Ebay) sells for $10 for a 10 pack. The PCA9555 sells for ~$2.50 each at www.mouser.com. They have 29,000 in stock as of March 2023.


Arduino code for this project: arduino6d.txt.

Web site Copyright Lewis Loflin, All rights reserved.
If using this material on another site, please provide a link back to my site.