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.
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!
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 |
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() {}