Arduino: LCD with ST7070 Driver (liquid crystal I2C)
ST7070 LCD uses an extended character set, which makes printing of letters for lot of
European languages very easy.
ST7070: Serial or Parallel
The ST7070 display
can be used in in 8bit or 4bit mode - very similar to HD44780U modules. My ST7070 LCD
is equipped with an additional header for serial communication (3 und 4 wire
SPI). There is a coding jumper on the LCD to define to choose either the
s-serial or p-parallel interface:
After coding to p-parallel, the liquid crystal library can use an I2C PCF8574 out of the box.
The Character Sets of the ST7070 LCD
The character set of the ST7070 contains much more characters than the standard Hitachi HD44780U
A00 ROM. In total 240 characters are defined:
Additional 256 characters can be found in pattern 2:
There are some interesting things to find:
- In column 0001 starts the Latin-1 character set used for "Western European" languages (ISO/IEC 8859-1).
- The columns 0011 - 0111 and 1100 - 1100 are compatible to the HD44780
character set A00. The ST7070 display can be used as direct replacement for
a Hitachi HD44780 LCD.
- In column 1000 - 1010 there are more special characters like § © ® ™
larger/equal to, smaller/equal to.
- In contrast to the HD44780 the ST7070 has usable second character set ("pattern 2"). It gives you additional 256
characters on the same chip. In pattern 2 there is the rest of the Latin-1
letters, additional letters from Latin-2 (Eastern European Languages)
and Cyrillic letters for Russian or Ukrainian.
- To activate the second pattern you have to set the same registers like to blink the HD44780
cursor. Switching off "blinking" will return to the pattern
lcd.blink(); // activate pattern 2 on ST7070
lcd.noBlink(); // activate pattern 1 on ST7070
Arduino Library for the ST7070 LCD
As mentioned already the ST7070 should work with just any Liquid Crystal
Library. Printing of special characters might get difficult, therefore I wrote
the Library "Noiasca Liquid Crystal". This library offers the easy support
for special characters. There are two different ST7070 constructors: in Noiasca
Liquid Crystal for the ST7070:
LiquidCrystal_I2C_ST7070 lcd(addr, cols, rows);
enables the easy access to Latin-1 (Western European languages). This
includes for example
German, Norwegian, Swedish, Spanish, Italian.
More special characters from Latin-2 can be used with the extended
LiquidCrystal_I2C_ST7070_Ext lcd(addr, cols, rows);
which will be needed for French, Hungarian, Czech, Slovakian, Slovenian, Croatian, Polish, ...
The library contains an example sketch to show up lot of special characters
used in European languages:
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 ;-) :
empa0815-noiasca1 [at] yahoo [dot] com
Nowadays the ST7070 LCD are hard to find. If you need support for European
languages, the a LCD with
SPLC780D1 chip might be easier to find.
The ST7070 LCD is a nice solution if you want to use a character LCD for
southern or eastern European
Languages. The ST7070 has full support of Latin-1 and Latin-2. 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
First upload: 2020-05-21 | Version: