Rothschopf Werner

rowex ganz privat


Arduino: LCD with HD44780 Display Driver IC

I guess everyone who starts with Arduino will connect a LCD one day. There are several tutorials how to connect a LCD online. This page describes the usage of the "Noiasca Liquid Crystal".

The LCD Parallel Interface in 4 bit Mode

The "Noiasca Liquid Crystal" library is just one of many out there, supporting the 4 bit mode of a LCD directly connected to an Arduino. The class for the parallel interface come more from curiosity: I have already written a library for I2C expanders, needed a SPI expander and had a "LCD keypad shield" from the early Arduino days laying around. Therefore I decided to combine all my LCD libraries into one and to the parallel LCD also.

The Character Set of the HD44780U A00 ROM

The "Noiasca Liquid Crystal" library does just a little bit more than other libraries: a character mapping from UTF-8 to the existing characters in the Hitachi HD44780U A00 ROM. As example some special characters in the second row of the display:

Sonderzeichen am LCD fr Arduino

(Degree, Division, middle Point, n with tilde, Pound, Yen, Tilde, Sqareroot, Proportional to, Infinity, Left Arrow, Right Arrow, Backslash)

You can read more about this character mapping in the Introduction or in the German section of this site. For the beginning you should know that you don't need to enter the octal ROM addresses of the special characters manually and these print can be done by a simple:


The Hardware Driver for the LCD

The library offers a basic class for displays connected directly to GPIOs on the Arduino. It uses the 4bit mode only. Nevertheless two additional pins are needed for RS and EN. If you don't need the backlight pin, set it to 255.

The necessary #include and the constructor are:

#include <NoiascaLiquidCrystal.h> 
#include <NoiascaHW/lcd_4bit.h>
LiquidCrystal_4bit lcd(rs, en, d4, d5, d6, d7, bl, cols, rows);

Your own Character Converter

If you need a different converter for the characters you can hand over a callback function as optional last parameter.

Obviously - you also have to implement the callback function to do all the magic.

See the general example how to write your own character converter.

German Umlauts

For my German readers: the default constructor enables the support for the small letters and . The large German umlauts will be converted to their counterpart A O U. If you want to try other variants, you can use following constructors:

LiquidCrystal_4bit lcd(rs, en, d4, d5, d6, d7, bl, cols, rows);                      // use the standard converter ( gets A)
//LiquidCrystal_4bit lcd(rs, en, d4, d5, d6, d7, bl, cols, rows, convert_ae);        // an Umlauts like  becomes Ae
//LiquidCrystal_4bit lcd(rs, en, d4, d5, d6, d7, bl, cols, rows, convert_small);     // an Umlauts like  becomes 
//LiquidCrystal_4bit lcd(rs, en, d4, d5, d6, d7, bl, cols, rows, convert_special);   // an Umlauts like  becomes  using custom character 


If you need an easy support of the given character set of a HD44870 display, take the "Noiasca Liquid Crystal" library in consideration.



First upload: 2020-09-02 | Version: 2020-09-07