Arduino: LCD with SPLC780D1 Driver (Liquid Crystal Library)
I found a good alternative of LCDs with SPLC780D1 driver. The SPLC780D1 uses an extended character set, which makes printing of letters for lot of European languages very easy.
The Character Set of the SPLC780D1 LCD
The SPLC780D1 LCD is available in several versions. For European languages you need the character set 003A of the SPLC780D1. The displays are often sold as "European". At the end of the page you find a link where you can buy these displays. The SPLC780D1 003A ROM contains more characters than the Hitachi HD44780U A00 ROM. In total 240 characters are defined:
There are some interesting things to find:
- Column 0x01 contains some mathematical symbols.
- The columns 0011 - 0111 are nearly compatible to ANSI/ASCII. In contrast to the HD44780 even the backslash and the tilde are available. Only the last character 0x7F differs.
- In column 0x08 - 0x0A we find characters from Latin-1 and Latin-2 used for "Western European" (ISO/IEC 8859-1), Scandinavian and Southern European languages.
- In column 0x0B - 0x0C there are more mathematical symbols
- In column 0x0D - 0x0F you find Greek letters
Arduino Library for the SPLC780D1 LCD
The SPLC780D1 should work with any Liquid Crystal Library. But printing of special characters might get cumbersome. Therefore I made an extension in the library "Noiasca Liquid Crystal". This library offers the easy support for special characters on the SPLC780D1.
Depending on the hardware interface, you just add the converter for the SPLC780D1 as last parameter. For example the constructor for I2C expanders:
LiquidCrystal_I2C lcd(addr, cols, rows, convert_SPLC780D1_003A);
This enables the easy access to Latin-1 (Western European languages) and Latin-2. That includes for example German, Norwegian, Swedish, Spanish, Italian. More special characters from Latin-2 are needed for French, Hungarian, Czech, Slovak, Slovenian, Croatian, Polish, ...
The library contains an example sketch which shows lot of special characters used in several European languages. For some languages (Danish, English, Swedish) all characters can be shown:
German uses the Greek beta for the ß (sharp s):
Some languages use diacritic marks (acutes, grave...) on letters which are not available in the character ROM but are replaced with plain letters:
The French and Italian LCD examples show very clear, that the support of small letters is better than for capital letters:
In Hungarian some of the special characters are supported:
Spanish and Catalan will show up quite well:
And even Slavic languages have quite a good support:
And even if there is none of the special characters available, at least the print out doesn't break and each letter is replaced by the standard ASCII letter. This comes handy for Polish and Slovenian:
By the way: If you need Cyrillic for Russian, Ukrainian or Bulgarian, there are ROM variants available with Cyrillic also. Mostly they are sold as "Russian". So far I haven't implemented the Cyrillic mapping. If you are interested in the support of the Cyrillic letters, contact me by email so that I know the need and to get a beta tester ;-) .
The SPLC780D1 LCD is currently THE solution if you want to use a character LCD for European Languages. The SPLC780D1 supports lot of Latin-1 and Latin-2 characters. Even some characters from Latin-3 are available. If you need an easy to use Arduino library, use the "Noiasca Liquid Crystal" with the prepared constructors for the SPLC780D1 chip.