AnyDisplay: Unified library for graphical displays

OK, I admit it.  I have a weakness for displays.  Most of the projects that I’ve got in the hopper include some sort of graphical display.  While the ubiquitous LCD character display may be inexpensive, I find them to be terribly limiting and, frankly, kind of boring.

Since delving into microcontroller development I’ve managed to get my hands on a pretty decent collection of graphical displays.  I’m currently rather obsessed with the new(ish) MemoryLCD displays from Sharp; look for a subsequent post detailing how to work with these.

One of my frustrations with the current state of graphical displays in the microcontroller realm is the lack of consistency and uniformity in terms of libraries.  Switching displays is a painful proposition; if you are lucky you may find an existing library for the display as a starting point.  The library may or may not be functional, will undoubtably be incomplete, and will most likely have a completely different API than what you are used to.    The GLCD project makes an attempt at supporting several displays, but I’m not fond of the API and adding support for new displays is rather difficult.  Some vendors such as Adafruit do take the time to build simple display libraries for the displays that they sell, but they tend to lack uniformity between displays.

I’ve spent a good deal of time researching and prototyping solutions and have designed a new unified library for graphical displays.  Called AnyDisplay, this library will provide a single, consistent API for integrating graphical displays with Microcontroller projects.  The library consists of a well-fleshed out, well tested API for graphics primitives which is consistent across all displays.  Adding support for new devices requires developing a small driver for device-specific implementations.

Ultimately, this will allow you to easily add cool graphical displays to your projects.  Focus on the product that you are trying to build rather than spending so much time dealing with low-level details.  The consistent API will make experimenting with new displays a much simpler proposition.

2 thoughts on “AnyDisplay: Unified library for graphical displays”

  1. Hi Steve,

    I am looking for a library that can control a DOGXL160 via I2C / TWI. Can anyDisplay do that? If yes, is it possible to download your library? I have been struggeling to get the display running for weeks and still have no idea what I am doing wrong. Even after reading what feels like thousands of forum threads.

    Thanks in advance and greetings from Germany,

    1. anyDisplay is not ready for prime time and spare time has been really hard to come by as of late. There are several publicly available libraries that you may take a look at: and .

      A quick Google search also turned up which may just work out of the box.

      I’m not a fan of the GLCD library in particular, as it applies some of the screwy KS0108 implementation details to all graphical displays. The memory layout, in particular, complicates development of new drivers.

      U8G is a very nice library but may be more complex than what you’re looking for.

      Also take a look at Adafruit’s offerings – they have some very nice drivers for many different displays and are making a concerted effort to provide a consistent API regardless of display implementation details. It’s worth a look.

Leave a Reply

Your email address will not be published. Required fields are marked *