Small displays for microcontrollers

Over the years I have found that, at least for me, there are two major annoyances of working with microcontrollers: Packaging and a user interface. I’ve dealt with the packaging annoyance by resorting to techniques from the past involving wood (see my O’Reilly article here) or employing non-conventional packages (like an electrical junction box from Home Depot or a section of PVC or ABS pipe). When I finally get my CNC router/cutter up and running I will be able to easily make neat square holes in plastic and metal panels, but until then I’m fine with mounting my MSP430, or PIC, or Arduino, or whatever, on a wood base and just rolling with that. Or I can stuff it into a section of 3″ PVC and hang it in the olive tree so it can monitor the number of hummingbirds that visit the feeder each day and the level of the food in the feeder.

But that leaves the other source of sand in my swimsuit: The user interface. A serial interface, either via USB or RS-232, is fine for some things, but it’s not exactly what I would call user-friendly. Cryptic commands to remember (I use a cheatsheet), and sometimes equally cryptic responses to decipher. Sure, a serial interface can be implemented so that it looks like a pared-down terminal of some sort, but that represents a significant amount of code to handle the input/output, parsing, and response generation, and microntrollers don’t usually have a significant amount of memory. If I’m going to put that much effort into the code for the user interface then why not build something really nice? Like, for example, a color TFT display with a touchscreen? It’s actually not that hard to do.

After doing some research on the Internet I’ve found that there are a large number of displays to choose from. I’m fond of the 16 x 2, 16 x 4, and 20 x 4 types based on the HD44780 LCD module. These are inexpensive and easy to interface, and while they might not be very graphically sophisticated, they do get the message across quite well. The sample below also has an I2C interface using an MCP23017 interface IC. Granted, it’s an Arduino shield, but that doesn’t mean it couldn’t be connected to something like a WaveShare XNucleo ARM board (and this works quite well, by the way).


One place to start in order to get an idea of what is available is Limor Fried’s Adafruit web site. The section with a listing of available displays can be found here, with everything from LED matrix displays to high-definition 7″ video monitors. I’m not terribly thrilled about Adafruit’s shipping options, but so long as I don’t buy just a couple of $1.50 adapters and then have to pay $10 to ship them, I can live with it (but seriously folks, USPS does fine with small, essentially indestructible things at regular postage rates–the Chinese figured this out long ago).


If you search around on the WWW you may notice something called a Nokia 5110 or Nokia 3310 display, like the one shown above. These are 84 x 48 or 48 x 48 monochrome displays with four (4) LED side lights. They are kind of funky, but at about $10 each it’s a cheap way to get something up and going. Adafruit carries these, as does SparkFun and SainSmart. There is a big caveat about these cheap LCD modules: They are surplus. That means that once they are gone, they’re gone, unless someone sets up a production run (which isn’t likely).

At the other end of the range are high-resolution color displays. I just recently purchased a case-less 10.1″ color display like the one shown below:


It’s not a shield, but it does have HDMI, VGA and composite video inputs. I’ve  been looking around for inexpensive color displays in this size range for various projects that need a dedicated display (like a CNC controller, an automated weather station, or even a remote control for a telescope in an acrylic dome on top of my house). I’ve resorted to buying surplus Dell tablets and loading Linux on them, and that works OK. But with this I can use it with anything that has an HDMI output without HDCP (High-bandwidth Digital Content Protection) encryption. Like a Zotac micro-PC or a Raspberry Pi. You can find this item from Adafruit here, and there are other sources for similar items.

So look around, there is a lot to choose from. Just a few of things to keep in mind:

  1. Does the module have example software and libraries available?
  2. Does the module have an interface you can use? For example, Arduinos don’t come with an HDMI interface, and there is no cheap and easy way to do that. They work will with a display with an SPI or I2C interface. Conversely, a Raspberry Pi isn’t designed to connect to something like an SPI or I2C display without some programming effort, but it will connect seamless to an HDMI display.
  3. Do you really need a touchcreen? It may be cool and all that, but if all the display is doing is showing data, then a touchscreen may be pointless.

Disclaimer: I don’t get paid by Adafruit for blogging about their stuff. They just happen to have a large selection of cool things, and they are good people to do business with (my gripes with their shipping department aside).




3 Responses to “Small displays for microcontrollers”

  1. 1 tai viinikka June 16, 2016 at 6:47 am

    Mr Hughes, this blog entry confirms much I have suspected and points out problems and advantages I would never have spotted. Also I really learned a lot from _Practical Electronics_. But!

    > But with this I can use it with anything that has an HDMI output.

    Sad to inform you that this is not true. Many HDMI devices include encryption on the data channel, and the endpoints need to implement decryption; also the manufacturers need to pay for the license and keys. Most mainstream devices that might play back copyrighted video are going to want this. The nice high-res display Adafruit sells does not have this High-bandwidth Digital Content Protection and so it seems likely to fail if plugged into a Roku or Chromecast, a cable set-top box, or a DVD player. Obviously Raspberry Pi are fine.

    I haven’t tried this exact combination of things, but there’s a note about it on the product page at Adafruit, and I’ve been tripped up by HDCP before. Frankly, the application of copyright protection at the link rather than the content seems outrageous to me; perhaps it will make you cranky as well. I assume the lawyers overrode the engineers on this one.

    I apologize if I have explained something that was so obvious you just left it out.

    Thanks for reading my note. And good luck with the current book!

    • 2 John June 18, 2016 at 8:18 pm

      Yes, you are correct. Thanks for pointing that out. But when I wrote that I was thinking of digital devices, not television gear (I rarely watch TV, anyway). I’m not aware of many SBCs or PCs that have HDCP (I can’t think of any, actually, except perhaps some large high-def monitors). I will edit it accordingly.

  1. 1 Clever Arduino Case | Crankycode Trackback on December 4, 2016 at 1:23 pm

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

Follow Crankycode on

Little Buddy

An awesome little friend

Jordi the Sheltie passed away in 2008 at the ripe old age of 14. He was the most awesome dog I've ever known.


%d bloggers like this: