The Nokia5110 LCD [Product Link] is the Nokia mobile phone liquid crystal screen, of great quality which can be used with any Arduino board at 3.3V.
- Base plate for the station design
- Four angle positioning holes
- Male header row for easy connectivity
- Blue colored backlight
- Interface for serial SPI interface
- 84 pixels wide
- 48 pixels tall
This LCD is easy to control and helps improve the project’s user interface (UI), as compared to when using the usual LED matrices or 16×2 character LCDs. The small display (diagonal 4.2cm approx) has 84×48 individual pixels, which allows this LCD to be used for graphics, text or bitmaps. These displays are inexpensive, easy to use, require only a few digital I/O pins and are fairly low power as well.
To interface with and power the LCD, there are 8-pin headers below it. You will find the labels of these pins on the front side. These pins are:
1. RST – Reset – Input pin – Active low
2. CE – Chip Select – Input pin – Active low
3. DC – Mode (data/instruction) selection – Input pin- Select between Command mode (low) and Data mode (high).
4. DIN – Serial Data In line – Input pin
5. CLK – Serial Clock Line – Input pin
6. VCC – Power input (3.3v or 5v) – Input pin – Preferably 3.3V
7. BL – Back Light LED control – Input pin- 3.3V
8. GND – Ground
Use 3.3v as Vcc to avoid damaging the display. 5 digital output pins are needed when manually controlling the chip select and reset lines while using the display. Another pin can be used to control the back light.
The display uses the PCD8544 controller chip from Philips. This chip is designed to run only between 3 and 5V, have 3v communication levels, and need about 10mA current. Logic levels must be 3V to prevent damage. No extra level shifter is needed.
The back light can draw up to a total of 80-100mA.
VCC – This pin supplies the logic circuits inside the LCD and should be between 2.7 and 3.3V. In a normal state, the LCD will consume about 6 or 7mA.
BL – This pin supplies the voltage for the back light LEDs. Use a current limiting resistor in series with the ‘LED’ pin, or limit the supply to 3.3V max for this voltage supply.
RST – Reset
Connect this to any digital pin of Arduino or connect it permanently to high using a 10k ohm resistor if you do not care about the remote reset capability. To reset the screen automatically connect this pin to the Arduino reset. Does not require 10kΩ resistor for level shifting.
CE – Chip Select
Connect this to any digital pin of Arduino with a 1kΩ resistor in between. By connecting this pin to GND you can not reuse the LCD’s pins between screen updates and should be done only when no other SPI devices are being used.
DC – Mode Selection
Connect this to any digital pin of Arduino. Does not require 10kΩ resistor for level shifting.
DIN – Serial Data In (MOSI)
Connect this to Arduino pin 11. Does not require 10kΩ resistor for level shifting.
CLK – Serial Clock Line
Connect this to Arduino pin 13. Does not require 10kΩ resistor for level shifting.
VCC – Power input
Connect this pin to 3.3V pin of Arduino. Connecting it to 5V may decrease the LCD’s life.
BL – Back Light LED
Connect this pin to any PWM pin of Arduino with a 330Ω resistor in between to dim the back light as you please. You can also connect it to 3.3V.
GND – Ground
Connect this to the Arduino GND pin.
Connecting SCLK and DN(MOSI) to Arduino’s hardware SPI pins helps to achieve a faster data transfer. These pins do not require the resistors mentioned above but are mentioned here for the purpose of extra protection.
Find a 84×48 monochrome bitmap image that you want to print to the LCD. After picking an image, make it both monochrome (2-bit color) and 84 x 48 pixels. For Windows users, Paint is all you need to scale the image and then save it as a monochrome bitmap.
Convert the regular image file to a 504-byte array of characters (char) by using Bitmap to Data Array Convertor [Link 1]. IN the convertor, set the ‘Byte orientation’ to ‘Vertical’, the ‘Size endianness’ to ‘Little’, and ‘Pixels/byte’ to a value of 8. Go to ‘File’ -> ‘Save output’ to generate a temporary text file. Open that text file to see the array. Modify the type of the array to be just a ‘char’ (no ‘unsigned’ or ‘const’). Also make sure the array has the proper naming conventions (no dashes, don’t start with a number, etc.).
A library for this particular board model of the Nokia5110 is currently under development at JMoon Technologies. However, feel free to use any of the libraries or example codes we have mentioned below and tell us which worked best for your application.
Philips PCD8544 (Nokia 3310) driver [Arduino Playground Link]
How to use with Arduino [Video Link]
Example Codes [Link]
Possible Application Areas
This can be used in any application where it is required to print images and not just characters. Some examples of applications are:
1. With MPU-6050 to print out data received from the IMU.
Did you create a project using this product? Leave details/links below!