Those of you who tinker with #DIY #Electronics projects might know these types of character-based liquid crystal displays.

This one features 20 characters in four rows. Each cell has 5x8 pixels. The controller has a baked-in font with a (very nonstandard) 8-bit codepage. It can be used to display text, such as "Hello Fediversians!".

1/3

Some of you who are deeper into it may also know that these are based on the #HD44780 IC by Hitachi. They are quirky (for example, in this four-line display, the second row has a higher address than the third row) and the font is baked into the ROM of the chip. Most of the displays you can get use the A00 character set, which is clearly not designed for the European market: the upper half of the 8-bit codepage is dedicated to Japanese symbols.

However, less well-known is that on 5x8 pixel-per-character displays like these, you get 8 characters in the HD44780 RAM you can program freely.

That can be useful in some applications. I once designed a programmable remote camera shutter which would use this to display the battery level, such as seen in the photo below.

2/3

Then I wondered: Can you actually reprogram a character while it is being displayed? Like you may expect in such an old chip, the #HD44780 does *not* latch the customized character anywhere. Instead, every time it scans out the characters to the LCD, it reads the bitmap from RAM again.

That means that if one of the customized characters is in use, it updates immediately on the display when changing it via the parallel #Programming interface.

I don't think anyone has ever these displays to show a 40-band live spectrogram of the music playing on their laptop, but I did now.

3/3

#Electronics #DIY

@jssfr Neat! That's some straight up #demoscene shenanigans right there!

@zash Definitely! It is always very satisfying to push such limited systems to their limits and beyond their intended use.

I said this elsewhere already, but I strongly believe that everyone in IT should have a mandatory yearly practice where they have to do something useful with an ATtiny2313A (128 bytes of RAM, 2 kiB of flash/program memory, 128 bytes of non-volatile memory (EEPROM)) or comparable.

Just so that people realize the luxury of gigabytes of RAM and how wasteful we are with it.

@jssfr nice! I guess it’s only a matter of time before someone gets doom to render on it
skategoat 🐐 🇵🇸 (@[email protected])

Attached: 1 image @[email protected] Throw in some more magic and a bit of misdirection and voilà! Navigation screen on what is supposed to be a 20x4 alphanumeric LCD! Shoutout to @[email protected] for many fonts to work with even in this extremely limited resolution!

Treehouse Mastodon

@jssfr
hedelmae probably use it in the demo below

https://www.youtube.com/watch?v=nxFad7Rxw7Q&t=104s

LCD megademo 2 by hedelmae

YouTube

@jssfr

we have a mission.

@axtrifonov
6 years ago
Can it run Doom?

@MisterHW @jssfr
Nice to see that the LCD Megademo 2 was remembered by others as well.
@MisterHW Wow, that is impressive. Thanks for sharing!
@jssfr Nice. I think this is similar to the technique early 80s home computers like the BBC Micro used to coax bitmap graphics from a text-based display chip, but I'm not 100% up on all the details.
@jssfr Hmm.... it could be that one could re-program those characters during the screen refresh to get 16 characters total. Not sure how one would get the timing right.
@casandro Yeah, I've been pondering that question. Looking at this thread I notice that people have done way crazier stuff than I have (I should not be surprised), so I suppose it is possible if you try hard enough (and are ready to solder some stuff, maybe).
@jssfr Hmm... maybe one could use the power line for that. There's been some research on NEDAP voting machines that indicates that the refresh rate is lower when you have custom character on there.

@jssfr

It would not surprise me one bit if this is how the power-on animation of the Elektron SIDStation was done.

@jssfr you might be interested to see how the grahics of the game "Elite" is rendered on the "NES" console that was built with an tilemap graphics engine
@jssfr aeons ago, once upon a time, back at university, we had an devkit with those displays, two pots, 7 segmnent displays etc. ; As I was done with the usual assignments I implemented pong and used the same technique of live-updating the custom chars to draw ball and paddles. The 7 segment displays showed the score and the two pots were the player inputs.
@jssfr this is perfectly designed to make me go, "oooh".
@jssfr oh nice hack! Kudos. 👌👏

@jssfr Here's how I (ab)used the ability to change a custom character after it's already been placed on the display: "eyes" that follow whoever walks past my office.
https://techhub.social/@DocBohn/111902188292381415

This demonstrates the pupils' movement a little better: https://techhub.social/@DocBohn/111585321697383798

Chris Bohn (@[email protected])

Attached: 1 video I made a thing for people who walk past my office. #xeyes

TechHub

@DocBohn This echoes through time back to Pac-Man on the Nabu computer in 1983. The TMS9918A graphics hardware couldn’t handle drawing more than a few sprites without flickering, so the eyeballs were animated by drawing them into the background character map, temporarily replacing part of the maze. Source code and an explanatory YouTube video exist.

https://github.com/LeoBinkowski/NABU

GitHub - LeoBinkowski/NABU

Contribute to LeoBinkowski/NABU development by creating an account on GitHub.

GitHub