That is not what this is about. That's an old demo, using only the documented features of the LCD. As far as I can tell ~everything on there is done using the standard charset and the 8 customizable characters.
There is no demo for what this article talks about; it kind of ends in a cliffhanger and it seems the author hasn't quite gotten to the implementation stage yet.
I kinde of see that screen shaking it's head at the end of it going "WTF just happend" like it's waking from some crazy dream it just had. That's not what I'm supposed to be used for at all!! Sort of like it was just given the choice of a red/blue pill
The WEH001602A is pin compatible to the HD44780, with OLED output instead of LCD. In 8-bit parallel mode with an FPGA you can exceed the recommended clock rate to drive quite a bit of data into the displays: https://twitter.com/qrs/status/1088240598971310081
Similar higher-than-rated-bandwidth can be achieved on the TRS-80 Model 100, which uses an array of 10 HD44102 controllers. With an FPGA it is possible to draw full motion video on the LCD: https://twitter.com/qrs/status/1092410264316653568
I thought I remembered the name from the LCD display on my Apple Network Server, which was supported under Linux and gave me a mini 'top' on the front of the box... and... I think that was enough, thanks.
There is so many clones of these displays, sometimes it's hard to get something working, especially to initialise the screen consistently.
I remember spending so many evenings getting display to reset without having to disconnect power physically.
There is no documentation, or documentation is plainly wrong. If you are lucky to get any example code from manufacturer, chances are it will not work anyway.
But I admit it was fun to "hack" those.
I went through a bit of having trouble getting them to initialize consistently too. But I eventually went back to the original Hitachi "LCD Driver Data Book" from 1985 and used the initialization timing and sequence from that, and since then I've never had an issue with any of the clones.
Nice! This is a million times cooler than my modest toying with these useful little devices.
I have a few of those displays, for a hobby server "front panel" project. (3 CrystalFontz with buttons and USB, and an Adafruit RGB-backlight one plus USB backpack.) I only got as far as using the small set of software-defined characters to do a charts/bars:
I was planning to use one for my GPU server, and then another for a self-contained simple admin console for a home network router (no needing SSH/Web to do basic admin functions, nor needing to find a sufficiently trustworthy separate device for that).
You can get 5.25" drive bay mounts for some of the CrystalFontz ones, including room for D-pad, OK, and Cancel buttons. And besides their display and input features, some of them can hook into ATX motherboards, and a perform watchdog function, to reboot a frozen box.
If you're buying CrystalFontz units that aren't factory-sealed, beware that they might've had downstream firmware put on them (that's how I got a FireEye one, and a Honeywell one, accidentally). A CrystalFontz person told me that the stock firmware can only be put on at the factory, but I haven't verified this (and I do have a sealed unit from the factory now, which I suppose might be cloned).
(Oh, if you're playing with the Adafruit ones, IIRC, the one I have seemed to be doing some kind of nonvolatile storage write for each color change, at least the way I knew to change the color. If that's the case, I don't know whether or how soon a write cycle limit on that would be hit.)
Amazing. HD47780 displays are not only commercially ubiquitous, they were used everywhere when casemodding was still a thing. But so far, hardly anyone seems to have thought to exploit the possibilities.
Long ago, many devices that needed simple text output, like super market checkout registers, had simple LCD modules in them with e.g. 2 rows with 16 characters each.
Those modules are just bricks with a display on them that you can control using a parallel interface. Because of their simplicity, they are/were also very popular with micro controller hobbyists long before Arduino was a thing.
The HD44780 (and clones) are very widely used controllers on those modules. They can be connected in 4 bit or 8 bit parallel mode, you can send over characters that it should display (using a built in raster font) or some special command sequences for e.g. clear the display, set the cursor position, ... kind of like a very simple terminal.
The displays with 4 rows instead of 2 typically just had 2 of those controllers in them that you needed to interface to. One for the bottom 2 rows and one for the top.
Some variants of the controller clones can load a custom font lookup table. By breaking a graphical image up into blocks and loading those into the font lookup table, you can use the device as a very hacky graphics display.
Alternatively, if you rely on semi-documented internals and get the timing just right, you can swap out the data while it is drawing a character and splice your graphics together that way using the built in font. This will also get you a more decent refresh rate. Both variants are discussed here.
All variants support 8 custom characters at least. I don't know if some nonstandard clones can do more.
The 4x20 displays do not use two controllers. They are just a single controller configured for 2x40 mode, except the display is laid out differently. Logically, the rows are ordered 0, 2, 1, 3 on those, for this reason, and horizontal scroll is funny.
Interesting! I'm sorry if I'm a bit hazy on the details, but I was around 12 when I fiddled around with this stuff. Back then, I saved up some cash and bought a mail order AVR board with some LEDs, sensors on it plus an expansion board with an IIRC 2*16 LCD module on it and spent the summer copying assembly listings from ELV journal and some tutorial websites. I played around with a custom character set but never did anything as fancy as this.
Although I did know that modules with 4 rows exist, those where pretty much Unobtanium for me at the time and I jumped at every forum thread that mentioned them, trying to find out how I could get my hands on one. IIRC I once saw a post on a German phpBB Forum (roboternetz.de? mosfetkiller.de?) with grainy pictures where somebody had such a module and couldn't get it to work. Someone else responded that those controllers only supports 2 rows with 20 characters maximum and modules with more characters or rows simply have 2 on them ("see, there are 2 black blobs on the rear..."). I remembered that from there. From my experience, I guess they won't be very happy if I dig up the ~20 year old thread and post a response now :-).
That demo does not use any of the techniques described in this article. Everything in that demo is done using character mode, the standard charset, and the 8 customizable characters. If you look closely you'll see there are never more than 8 or so distinct nonstandard character glyphs on screen.