DRIVING A LIQUID CRYSTAL DISPLAY

Example animated LCD

LCDs have become an inexpensive and popular means of displaying status information or for prompting for data input and they are easy to interface to an Arduino. The most popular LCD controller is the Hitachi HD44780 which, apart from being used by various LCD manufacturers in their own displays, is also available in fully plug-compatible chips and displays. Samsung, Sanyo, Epson and OKI all manufacture HD44780-compatible devices. Display sizes include: 16x2, 40x2, 20x4, etc.

Addressing Schema

The HD44780 addressing schema is designed for all sizes of LCD, which means that the start address for each row does not necessarily follow on the from end address of the previous row. A good explanation can be found here.

The HD44780 can run in two modes: 4-bit or 8-bit. 4-bit is suitable for most applications and the LiquidCrystal Arduino library provides various functions to do this. The minimum connections required for a reliable connection are:

Arduino PinLCD PinLCD Pin Name
GND1GND
+5V2+5V
103Contrast
94RS
125RW
86E
411Data 4
512Data 5
613Data 6
714Data 7

There are websites that show how to connect up LCD devices but there seem to be some displays that require the RW connection in order to drive the display properly.

You can download an example program here and the wiring schematic is shown below.

Hitachi HD44780 chip connected to Arduino