For the past couple of years, I’ve been using the Nokia 5110 84 x 48 px monochrome display for most of my projects. They are really cheap, small and easy to use while providing enought screen estate to display a couple of variables or sentences. But they have their downsides, the biggest being their terrible reliability – the steel frame, holding the LCD to the adapter board, very often came loose and the display either stopped working completely or worked just sometimes. Also, these displays are only monochrome and their low resolution means that any text will look really blocky. But hey, for the price, there was no alternative (trust me, I’ve looked a thousand times), so I just slapped them on every project I seemed fit.
But about a month ago, I stumbled by accident on this display (5110 for comparison):
It’s a 1,8″ TFT LCD with a resolution of 160 x 128 and the ILI9163C as it’s driver IC. This isn’t anything special by itself, but hold on – they cost just 2.45 USD per piece at the time of writing. When I saw this on Ebay, I immediately bought a couple of these, and a week ago, they arrived.
First, I wrote a library for it – it’s based on Adafruit’s GFX libary, so it can use any font from that library or any converted with for example this tool. The library itself is modified from here, what I did is I ported it to STM32F0 and also I changed the fonts to the Adafruit format. But it should be pretty easy to port it to any platform of choice. The library is available for download on my GitHub.
Next, I made this table, comparing those two displays:
|Display||Nokia 5110||1,8″ TFT|
|Resolution||84 x 48 px monochrome||160 x 128 x 16/18 bits|
|Active Display Area Size||30.3 x 21.5 mm||35 x 28 mm|
|Display Diagonal Size||37.2 mm (1.46″)||44.8 mm (1.76 “)|
|Display Board Size||45 x 45 x 6.4 mm||41 x 49 x 4 mm|
|Operating voltage||2.7 – 5.5 V||2.6 – 3.3 V|
|Current consumption @ 3.3 V||LED backlight 8.4 mA for white/4.7 mA for blue; display itself 430 μA||LED backlight 17 mA; display itself 730 μA|
|Interface||5 wires (SCK + MOSI + CE + DC + RST)||5 wires (SCK + MOSI + CE + DC + RST)|
|Max SPI speed||4 MHz||16 MHz|
|Library Size ROM/RAM||534/504 B||1233/0|
|Display Draw Time @ SPI speed||1.93 ms @ 3 MHz||20.6 μs @ 12 MHz|
|Price||2.34 USD||2.45 USD|
Some notes on the above data:
Current consumption: with the 5110, you do not need the backlight, but with the ILI-based display, you need it, otherwise nothing is visible on the display; however, the ILI display supports some power-saving modes (I haven’t expored that yet).
Interface: it is possible to leave out the CE line with both displays, as long as they are the only devices on the SPI bus (connect the display’s CE to ground in this case). Theoretically, it is also possible to leave out the RST pin on the ILI display (the library performs software reset on initialization anyways; tie RST to Vcc). When I tried that, it worked, but some weird artifacts showed on the display.
The pin names on the ILi display are kind of confusing: SDA = MOSI; SCK = SCK; RS = DC; CS = CE. There is no I2C, even thought there is a pin called SDA!
Library size is the compiled size of my library for the respective display, drawing only a single pixel. This is with ARM compiler V6 for Cortex-M0. Since the ILI display does not have a buffer, it does not consume any RAM.
Display draw time was measured with a logic analyzer and it is kind of not comparable – the 5110 library buffers the whole display, so this value represents how long it takes to send out the entire buffer/display, no matter what’s displayed. The ILI library directly modifies pixels inside the driver’s chip GRAM, so it is more efficient for smaller modifications to the display.
After testing, I ordered 10 more of these displays. Basically, the only advantages of the Nokia 5110 screen are slightly smaller library size (I don’t care about his, the difference is neglectable), lower power consumption and better readability in direct sunlight. But in every other aspect, the ILI9163-based display is superior. Sure, it isn’t perfect – for example, the colors aren’t really accurate, but you are not going to be displaying photos on this anyways. Also I really like the mounting options – you can directly solder it to a mother PCB or use a 0.1″ header.
I put both the library and the Eagle footprint on GitHub.