In this intractable we will learn how we can hook up an LCD based on the HD44780 chipset to the SPI bus and drive it with only 3 wires for less than $1. Although I will focus on the HD44780 alphanumeric display in this tutorial, the same principle will work pretty much the same for any other LCD which uses an 8 bit parallel data bus, and it can be very easily adapted to suit displays with 16 bit data buses.
The HD44780 (and compatible) based alphanumeric displays are usually available in 16×2 (2 lines consisting of 16 characters) and 20×4 configurations, but can be found in many more forms. The most ‘complicated’ display would be a 40×4 display, this sort of display is special as it has 2 HD44780 controllers, one for the upper two row and one for the bottom two rows. Some graphic LCDs have two controllers as well.
The HD44780 LCDs are great, they are very cheap, readable and quite easy to work with. But they also have some drawbacks, these displays take up a lot of I/O pins when connected to the Arduino. In simple projects this is not a concern, but when projects get big, with a lot of IO, or where certain pins are needed for things such as an Analog read or PWM, the fact these LCDs require a minimum of 6 pins can become a problem.
But we can solve this problem in a cheap and interesting way.
I used Tayda Electronics for most of the components I used in this project. You can get these parts on ebay as well, but for ease of use, I’ll link you to Tayda.
2 – 74HC595 package DIP16
1 – Generic male header – 2 pins. This is not required, I used this as a way to permanently disable backlight.
3 – Ceramic Capacitor – capacitance 0.1µF; voltage 50V
1 – Electrolytic Capacitor – capacitance 10µF; voltage 35V
1 – Ceramic Capacitor – capacitance 220pF; voltage 50V
1 – NPN-Transistor – part # PN2222A*
1 – 1k Ω Resistor
1 – Trimmer Potentiometer – maximum resistance 5kΩ
1 – 470 Ω Resistor
Read More: 3-Wire HD47780 LCD for less than 1 dollar