One of my recent RPi projects involved the use of an 20×4 LCD. This an HD44780 driven LCD, they are very popular, this guide is also applicable to all LCDs using this driver e.x. 16×2, 16×4 etc.
There are many different ways of interfacing with the RPi, the two most common ones being:
HD44780 LCDs require a minimum of a 8 GPIO pins (if Backlight control is required otherwise 7) so I opted
for the I2C solution. The most popular choice here is the PFC8574 I2C port Extender. A quick search in Ebay revealed
hundreds of hd44780 based LCDs pre-soldered with a small PFC8574 board at the back. The bad news is – as I was
about to find out soon – that thery are not all wired the same way.
The PCF8574 extender is available in two versions, the PCF8574 and the PCF8574A. The only difference between the two is the I2C base address. The base address for the PCF8574 is 0x20 and the base address for the PCF8574A is 0x38.
Let’s get things from the start. Connectivity between the I2C enabled LCD and the RPi is dead easy. Simply
connect Vcc, GND, SDA and SCL and you are done. Regarding Vcc, 3.3V will do the trick just fine. The chip
itself has no internal I2C pullups, I can not see any on the board, RPi is the Master therefore you can also
conenct Vcc to 5V without worrying of damaging the RPi.