HD44780 LCD
The Hitachi HD44780 is a LCD controller developed by Hitachi in the 1980s. These displays are easily identified by their 16 pin interface. LCD displays using the HD44780 are inexpensive and comes in various sizes.
As of 2020, the 20x4 variants cost about $12 CAD while the smaller 16x02 variants cost about $3 CAD.
Usage
The LCD can be driven in 4-bit operation mode which only requires pins D4-D7. If you do not want to deal with all this but instead would rather use an i2c interface, you can get an adapter board with a PCF8574 for about $1 USD.
Pinouts
The HD44780 has a 16 pin header.
Pin | Description |
---|---|
1 | VSS - Ground |
2 | VDD - 5v |
3 | VE - Contrast voltage |
4 | RS - Register Select |
5 | RW - Read/Write |
6 | En - Enable |
7 | Data 0 - Not used in 4-bit operation |
8 | Data 1 - Not used in 4-bit operation |
9 | Data 2 - Not used in 4-bit operation |
10 | Data 3 - Not used in 4-bit operation |
11 | Data 4 |
12 | Data 5 |
13 | Data 6 |
14 | Data 7 |
15 | Backlight Anode - 5v |
16 | Backlight Cathode - Ground |
User Defined Fonts
The HD44780 has a ROM that contains all the ASCII characters for the 5x8 dot matrix. A limited number of custom characters can be programmed into the device as bitmaps and are stored in the controller's memory. These custom characters will need to be re-programmed after the controller is switched on.
More information at: http://www.quinapalus.com/hd44780udg.html
Troubleshooting
Garbage being rendered on startup
I tried hooking up a HD44780 to an Arduino Pro Mini and tried using the example Hello World sketch but ended up getting garbage being drawn. Adding capacitors didn't help. The odd thing was, the LCD was able to render 'ello, world!' without the first 'H' sometimes but ends up showing garbage again when the microcontroller is reset.
I eventually used another Arduino with the same sketch using jumper wires rather than on the breadboard and it started working. I think the issue was one of the data pins wasn't making a proper connection and the display didn't end up in 4 bit mode? I'm unable to reproduce it however and everything is working reliably.