Saturday, October 31, 2026

Character and graphics LCDs of the 80s

LCD stands for liquid crystal display.
LCD technology was born in the late 60s and early 70s but the breakthrough occured in the 80s.
Watches and calculators were the first devices to use LCDs.
The Yamaha FB-01 FM sound generator that I stripped down for parts used a 16x1 front panel display.
16x1 means it displays 16 characters in one line.
I love its amber color! Most LCDs are white, green, yellow or blue.
A 20x4 was the second display I came across.
Both are so-called character displays.
They use the HD44780 dot matrix liquid crystal display controller and driver or a compatible controller.
I first used LCDs in my reZet80 DEV project.
A wide range of graphics LCDs with a resolution of up to 640x400 were also available in the 80s like the LM213 (256x64 dots) and LM021 (479x24 dots) from Hitachi.
They used the HD61830 liquid crystal display timing controller or a compatible controller.
Early modules did not provide a backlight, they were either yellow-green or gray like the 40x1 module LM058 from Hitachi that I use in my reZet80 SENTINEL project.
Character displays display characters as 5x7 dot patterns.
These are fixed alpha-numeric font patterns where the 6th column serves as a separator between the chars.
The 8th row is used for the cursor.
Eight 5x7 or 5x8 (if you switch off the cursor) custom characters can be defined.
Sadly, only 8! You very quickly reach the limits of sprite design.
As a workaround, you can use the available alpha-numeric characters.
Just as I used "o" and "O" in my Dino Chase game.
Forget about smooth animations, but hey, it's actually quite OK for a tiny game.
The HD44780 can store 80 characters.
So a 40x4 display (it displays 40 characters across four lines) uses two HD44780 controllers.
That means 16 custom characters sprites per screen!
Will be available in the R3 release (the one after next) of the reZet80 SENTINEL.
Back to my 16x1 display:
This module was built without an extension driver, so strictly speaking it's an 8x2 display.
So it must be programmed as an 8x2 display, not as a 16x1 display.
The HD44780 provides 40 segment signals (enough for 8 characters) and 16 common signals (sufficient for 2 lines). It is usually accompanied by one or more HD44100 liquid crystal display drivers that provide 40 additional segment signals.
On closer inspection I realised that there is a separating row between the 7th and 8th character row.
The distinction between the characters and the cursor is clearer.
But 5x8 custom characters would look strange.
So apparently 1-line displays cannot show 5x10 chars that are also supported by the HD44780.
Both above mentioned LCD controllers were designed to connect to Motorola's 680x line of processors because they require a high-active E enable signal.
Hitachi also developed a version of the 6809 processor, the 6309.
Thus, an additional hardware inverter is needed for the low-active Z80.
For the reZet80 SENTINEL I'll continue to use character LCDs (16x1, 40x1 and 16x2 in R2).
I intend to introduce the 40x4 display in R3 and graphics LCDs (both LM213 and LM021) in R4.
Reusing an Amstrad NC100 LCD (480x64 dots, 80 chars, 8 lines) is yet another story...