Nokia 5110 LCD

The Nokia 5110 LCD breakout board features an 84x48 pixel monochrome display, originally used in Nokia 5110/3310 phones. It uses the PCD8544 controller, supports SPI communication, and operates at 3.3V, requiring level shifters for 5V microcontrollers like Arduino. With low power consumption, it displays text, graphics, and bitmaps. Easy to integrate, it’s ideal for hobbyist projects.

Nokia 5110 LCD module (blue PCB version)
Fig.: Nokia 5110 LCD module (blue PCB version)

Features/Specifications

Display Type Monochrome LCD
Resolution 84×48 pixels
Controller PCD8544
Interface SPI
Operating Voltage 3.3V
Logic Level 3.3V (5V with level shifter)
Power Consumption Low (~6mA with backlight)
Dimensions ~43.6 x 43.1 mm
Backlight LED, controllable
Viewing Area ~35 x 22 mm

📄 PCD8544 LCD controller datasheet (163 kB)

Check the operating voltage of the LCD module!

Connections

Terminal diagram of the Nokia 5110 LCD module
Fig.: Terminal diagram of the Nokia 5110 LCD module

Normally, Nokia 5110 LCD modules have an operating voltage of 3.3V and therefore cannot be directly connected to the Arduino’s pins, so either a bi-directional level shifter is required or you insert resistors in between. However, my module had trouble displaying anything at all after I inserted the level shifter, so after several failed attempts I decided to feed the pins directly from the Arduino into the LCD module and it ran perfectly. For VCC I used 3.3V.

Pin No Pin Function Arduino Uno Raspberry Pi 3
1 RST Reset (active low) D6 GPIO24
2 CE (SCE) Chip Select (active low) D7 GPIO08 (CSO)
3 DC (D/C) Mode Select:
1. Command mode (LOW)
2. Data mode (HIGH)
D5 GPIO23
4 DIN (DN / MOSI) Serial Data In D11 (fixed) GPIO10 (MOSI)
5 CLK (SCLK) Serial Clock D13 (fixed) GPIO11 (SCLK)
6 VCC Power Supply (2.7V to 3.3V) VCC 3.3V 3V3
7 LIGHT (LED / BL) Backlight (max. 3.3V) Either 3.3V or Pin 8 with a 330Ω series resistor or potentiometer GPIO18
8 GND Ground GND GND

Used Components

Setup & Programming

The following code uses the Nokia 5110 LCD library to control the LCD.

#include <Nokia_LCD.h>

// bitmap with vertically oriented bytes
const unsigned char rook[8] PROGMEM = {
    0x00,   // 00000000
    0x55,   // 01010101
    0x7f,   // 01111111
    0x3e,   // 00111110
    0x3e,   // 00111110
    0x3e,   // 00111110
    0x3e,   // 00111110
    0x7f    // 01111111
};

// CLK=13, DIN=11, DC=5, CE=7, RST=6
Nokia_LCD lcd(13, 11, 5, 7, 6);

void setup() {
    lcd.begin(); // initialize the screen
    lcd.setContrast(60);  // good values are usually between 40 and 60

    lcd.clear(false); // clear the screen
    delay(2000);

    // draw the bitmap on your screen
    lcd.draw(rook, sizeof(rook) / sizeof(rook[0]), true);

    // Set the cursor on the beginning of the 5th row
    lcd.setCursor(0, 4);
    lcd.print("Hello world!");
}

void loop() {}

Further information

Last edited by Christian Grieger on 2025-05-19
X
  1. [top]
  2. Features/Specifications
  3. Connections
  4. Used Components
  5. Setup & Programming
  6. Further information