Driving A Controllerless LCD With The Humble Arduino Uno

These days, you could be forgiven for thinking driving an LCD from a microcontroller is easy. Cheap displays have proliferated, ready to go on breakout boards with controllers already baked in. Load up the right libraries and you’re up and running in a matter of minutes. However, turn your attention to trying to drive a random LCD you’ve yanked out of a piece of old equipment, and suddenly things get harder. [Ivan Kostoski] was in just such a position and decided to get down to work.

[Ivan]’s LCD was a 320×240 STN device salvaged from an old tape library. The display featured no onboard controller, and the original driver wasn’t easily repurposed. Instead, [Ivan] decided to drive it directly from an Arduino Uno.

This is easier said than done. There are stringent timing requirements that push the limits of the 8-bit platform, let alone the need for a negative voltage to drive the screen and further hardware to drive the backlight. These are all tackled in turn, with [Ivan] sharing his tips to get the most flexibility out of the display. Graphics and text modes are discussed, along with optimizations that could be possible through the varied use of available RAM and flash.

The code is available on Github. If you need inspiration for your own controllerless LCD driver. [Ben Heck] has done similar work too, using FPGA grunt to get the job done.

4 thoughts on “Driving A Controllerless LCD With The Humble Arduino Uno

  1. I’m an old guy … a really old guy. Back in the day, before the internet, when email addresses were a series of machine names separated by bangs, I designed an LCD test bed to do just this. Alas, my 128 bit x 128 bit ccd sensor required code that couldn’t run on an 8 bit cpu, so we had to have a human look at the display to see if it was working right.

    Brings back old memories.

  2. Hi would it be possible / easy to do the opposite and decode the signals from an existing MCU to CLGLCD in order to output them to a different kind of output? For example an spi display or TV-out (using the TV-out library, probably on a second arduino). Reason for me to ask, I’ve got a Yamaha PSR-S500 with defective display, new displays are around €40,-. Which is quite a lot, I would like to have a cheaper solution like a spi display.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.