Displays allow a device to communicate detailed information to the user in a clear and concise way. For this reason, many electronic devices have some sort of display. Displays are available in a large variety of form factors, ranging from simple low-resolution displays to the very largest, high-resolution screens used in laptops, tablets and televisions. In the context of embedded systems, the resolution of the display is often a system constraint. The more pixels a screen has, the more memory is needed to store the display information and the more speed is needed to shuffle all that data around in a timely manner. For this reason, small 8-bit microcontrollers may be limited to simple monochrome displays. Some display modules also function as touch screens. These displays have a digitizer in front of the screen that allows the system to capture detect touch. Two types of digitizers are commonly found: resistive digitizers and capacitive digitizers. Resistive digitizers cost less, but capacitive digitizers support multi-touch and are generally more responsive.
LED displays use a number discrete LEDs to form a display. These displays are bright, but have a comparatively large power draw. The two most common variants are 7-segment displays (left-hand side) and LED matrices (right-hand side). 7-segment displays are used to display decimal numbers, and are often found in clocks, calculators, and electronic meters. Often, multiple 7-segment modules are paired together in order to form a display that has sufficient digits for the intended application. LED matrices have a number of LEDs arranged in a rectangular grid. These displays are often used for signage purposes. As with 7-segment displays, multiple modules are often chained together to form a larger display. LED displays exist in both monochrome as well as RGB variants.
These displays have a very limited number of “pixels”, and can be driven directly even from small microcontrollers. LED displays are often controlled through multiplexing in order to reduce the required number of pins on the microcontroller. Multiplexing is a technique where only one row of the display is driven at at time. Switching the rows quickly enough will make the image appear solid. Depending on the number of pixels and the processing power of the microcontroller, brightness control of each individual LED may also be incorporated. An alternative for multiplexing the LED displays directly from a microcontroller is to use a separate LED display driver chip. One such chip is the MAX7219, the driver IC can be interfaced using the SPI bus, and multiple drivers can be daisy chained together to form an arbitrarily large display.
Character LCDs are displays that are optimized for displaying text. They are divided into a number of 5×7 pixel groups, and each group is used to display a single character. Character displays are commonly designated by the number of characters they can display. For instance, a 16×2 display can display 2 rows of up to 16 characters, whereas a 20×4 display can display 4 rows of up to 20 characters. Custom characters can also be defined, allowing small icons to be used in the display. Character LCDs are inexpensive, off-the-shelf components. The pinout is standardized, so most character LCDs are interchangeable. A 16×2 display can even be swapped out for a 20×4 display if the software is updated to reflect the larger display size.
Graphical LCDs are similar to character displays, but do not have distinct pixel groups. Instead, the display is divided into a regular grid of pixels. Graphical LCDs offer more flexibility and allow for a richer GUI. The resolution of these displays is usually quite low, typically less than 100×100 pixels. They require more processing power than the simpler character LCDs, though they can be easily controlled by low-performance microcontrollers such as those found in the Arduino boards. Unlike character LCDs, there is very little standardization for graphical LCD screen drivers. Still, the u8g2 library supports the most common display driver chips, allowing many different types of screens to be interfaced with the same API.
Memory LCDs are graphical LCDs that are aimed at low-power, always-on applications. They are manufactured by SHARP. Conceptually, they are a cross between a graphical LCD and an eInk display, combining the characteristics of both devices. The display has no backlight, but is daylight-readable and has a high contrast ratio. A 1-bit memory cell is embedded in every pixel of the display, leading to very low power consumption when the display is not being updated. Memory LCDs have a much faster refresh rate than eInk displays, though they do consume more power in an idle state.
e-Ink displays are low-power, paper-like displays. The technology uses an electric field to move the black/white dyed microparticles within the display. Power is required to change the contents of the display, but once the microparticles have been oriented to the desired position, no energy is required to maintain the image. Because of the ultra low power consumption and because of the excellent viewing characteristics, e-Ink technology is used in eReaders and digital signage applications. The main downside of e-Ink displays is that they have a very low refresh rate. Smooth animations are not possible, only static images can be displayed. Additionally, the displays need to periodically flash white-black-white in order to eliminate image ghosting issues. In newer e-Ink displays, this requirement is significantly improved, allowing more image changes before the display needs to be refreshed. Commercially available e-Ink panels are high-resolution and monochrome. Recent display panels also support grayscale images. Color e-Ink displays are under active development. Dual-color displays (black/white and red) are already available from suppliers. In May 2016, a full-color e-Ink panel was announced, which is expected to be commercialized in the coming years.
Most display technologies use an electronic filter to selectively block the backlight, thus creating an image. In OLED displays, this is not the case; the pixels themselves emit light. Whereas most displays consume a constant amount of power independent of what’s being displayed, OLED displays consume less power when less pixels are lit. OLED displays have a high contrast ratio and are available in monochrome and in full-color variants. One thing to watch out for is burn-in. The lifespan of OLEDs is limited compared to other display technologies. The pixels will get dimmer as they get older, and this can cause ghosting issues.
TFT displays are the most ubiquitous type of full-color display. They are normally used with more powerful processors, such as those found in a laptop or a cellphone. Use of TFT displays with smaller microcontrollers (e.g. Arduino) is possible in some cases, though one should consider the memory and bandwidth requirements. This is especially the case because full-color TFT displays require exponentially more data than the simple low-resolution 1-bit monochrome displays. For prototyping, specialized TFT modules exist that have a graphics coprocessor embedded in them. The main microcontroller can then offload the computationally heavy graphics calculations to the coprocessor. 4D Systems is one manufacturer that offers display modules with coprocessor. Another prototyping option is to use a TFT screen module for Raspberry Pi (e.g. PiTFT).