[Wenting Zhang] is clearly a fan of old school STN LCD displays, and was wondering how various older portable devices managed to drive monochrome LCDs panels with multiple grey levels. If the display controller supports multiple bits per pixel, it can use various techniques, such as PWM, in order to produce a pseudo-grayscale image. But, what if you have a monochrome-only display controller? With a sufficiently high pixel clock, can you use software on the application side of things to flip those pixels in such a manner as to give a reasonable looking grayscale image?
[Wenting] goes through multiple techniques, showing the resulting image quality in a clear, systematic manner. The first idea is to use a traditional dithering technique. For each pixel, it is set to black if the grey value is below some threshold. The resulting error value, is then propagated to neighbouring pixels. This error diffusion process smears the error out over the whole display, so spatially speaking, on average the pixel values correspond roughly to the original gray values. But, the pixels themselves are still either on or off. This isn’t quite enough. The next idea is to PWM the individual pixels over multiple frames, to approximate different grey levels. But, that gives a worst case effective refresh rate of 8 Hz with a PWM period of 15 frames, at 120 fps, and that flickers. Badly. One way to mitigate that is to switch to PDM (pulse density modulation) which selects different length sequences to give the same duty cycle but at higher frequency, at least for some grey values. Slightly better, but there’s more that can be done.
The thing is, our brains do weird things with the visual signals we perceive. Regions with the same gray value, will be pulsating at the same time, and the eye will be drawn to it and perceive flickering. So, the next trick was to try to decouple nearby pixels in such regions using a LFSR sequence, which did give an noticeable improvement. The real aim was to try to play video through the LCD, so after investigating spatial dithering, [Wenting] moved over to wondering if he could also dither in time, i.e. can the error in the time sequence be smoothed out in a similar manner, to make the video look better? By using a simple noise-shaper, the video looked noticeably smoother, and practically flicker free. Great results! All in all, this is a long video to watch, but so crammed with useful tricks that it is in our opinion definitely worthy of your time.
We’re no strangers to driving retro displays with modern hardware, for example CRTs, and whilst we’re thinking about retro displays, how about this retro (and quite disturbing) touch-enabled CRT from the early ’80s?
Thanks [Philippe] for the tip!
brilliant idea
Very neat. If the refresh rate is high enough, I wonder if it could be backlit with an RGB LED and used as a colour display by showing a R/G/B pulse in turn?
Interestingly, I just saw a video of a device which did exactly that. Some cheapo Tetris handheld with a white background and maybe 4 colors. Though, my intuition (which was proven wrong by this article) says the decay-rates are slow-enough that there’d be significant bleed-through as the backlight switches from color to color.
Also, interestingly, these displays *typically* can’t be backlit due to the reflectors used, but there seem to be reflectors that reflect one polarization and pass-through another. The result being a mirrored background and a window through it (to your RGB diffuser).
https://youtu.be/jLew3Dd3IBA
You’re getting the same YT recommendations as me… :)
There’s another similar display torn down by Mike : https://www.youtube.com/watch?v=q1LvleZcJm0
Nice find… thanks! Led me to Vtech laptops with the same technique, albeit nowhere near as crisp. Though, I especially like the custom segments…
I watch videos on TY then two days later I see them on HAD. It’s probably 95% of the posts here now.
So like this?
https://hackaday.com/2019/10/01/monochrome-crt-and-liquid-crystal-shutter-team-up-for-color-video
Kinda, and very cool. But that’s the exact opposite. White image, color filters.
I have an old STN Casio LCD here from an old till.
Best post I’ve seen here in a while.
Great explanation of the various concepts, very informative!
While being cool this kills one benefit of these displays, energy consumption. So have that in your backmind when using this technique, you can’t send your microcontroller to sleep when using this.
There is a reason why a 3310 of yore holds their battery for a whole week. ;)
The 3310 display has an internal controller. This technique wouldn’t work on it.
Well, you can pump roughly 900fps if you insist.
The interface can do 4 MHz which means 4.000.000 bits per second, with a resolution of 84*48=4032 pixels.
The only limiting factor here could be how fast the PCD8544 updates the LCD itself.
Excellent! I’d’ve never expected so much from STN.
Back in the early ’90s (maybe even late ’80s) we did the time-dithering thing in hardware to drive mono LCDs in greyscale.
Amazing work, a great explainer, and the demo to back it up! Very neat.
unfortunately no source code …
Isn’t “monochrome” the wrong word here? Monochrome means one hue and any number of bits per pixel. It looks to me that the article is about binary 1 bit displays, as in the video title. The definitive work on this is “Digital Halftoning” by Ulichney in the 1980’s.
Monochrome probably means different things in different contexts. With regard to digital images, monochrome often means 1-bit images, vs. greyscale which means multi-bit, single-channel images.
Also, the key thing here is that the display isn’t just showing a static image, but rather a dynamic one. That opens up many more possibilities.
Yes, the jargon has a strong drift in tech these days. But “chrome” is color in Greek and chromatic means of color. Mono-chrome is single color. I would stick with the root word. A green Apple II display is monochrome. The Apple uses it as a 1 bit binary display but the green monochrome monitor is analog in brightness and there were adapters to produce “green scale” images or gray scale with a different monitor.
Interesting, will have to embrain the existence of this for if ever that nice big Epson panel I had once ever shows up again.
I bet the Videonow generation since they’re all grown up would love to a see a remastered Sponge Bob in 50 shades of grey…
… err wait, google Videonow not the rest of that, rule 34 is a harsh mistress… you naughty little thing.