luma.lcd provides a Python3 interface to small LCD displays connected to Raspberry Pi and other Linux-based single-board computers (SBC). It provides a Pillow-compatible drawing canvas, and other functionality to support:

  • scrolling/panning capability,

  • terminal-style printing,

  • state management,

  • color/greyscale (where supported),

  • dithering to monochrome

Supported Devices

The library currently supports devices using the HD44780, PCD8544, ST7735, HT1621, and UC1701X controllers.


The HD44780 (and similar) devices are some of the most popular small LCD displays available for SBCs. These are character-based displays but the luma.lcd driver supports a limited ability to display graphical content on them. See the HD44780 documentation for details.



The PCD8544 display pictured below was used originally as the display for Nokia 5110 mobile phones, supporting a resolution of 84 x 48 monochrome pixels and a switchable backlight:


They are now commonly recycled, and sold on ebay with a breakout board and SPI interface.


The ST7735 display supports a resoltion of 160 x 128 RGB pixels (18-bit / 262K colors) with a switchable backlight:



The HT1621 display (as purchased) supports six 7-segment characters with a switchable backlight:



The UC1701X display supports a resolution of 128 x 64 monochrome pixels with a switchable backlight:



The ST7567 display supports a resolution of 128 x 64 monochrome pixels:


See also

Further technical information for the specific device can be found in the datasheet below:

Examples and Emulators

As well as display drivers for the physical device, there are emulators that run in real-time (with pygame) and others that can take screenshots, or assemble animated GIFs, as per the examples below (source code for these is available in the examples repository.

clock invaders crawl