Easy Basics: Project 044a Nokia 5110 Graphical LCD module

of Acoptex.com in UNO

Basics: Project 044a

Project name: Nokia 5110 Graphical LCD 84x48 module

Tags: Arduino, Nokia 5110 Graphical LCD 84x48 module, Graphic, PCD8544 library, Nokia 5110 library, Adafruit_PCD8544 library and Adafruit_GFX library, U8GLIB library, LCD5110_Graph library

Attachments: sketch1 and library1, sketch2 and library2, sketch3 and library3 and library3, sketch4 and library4, sketch5 and library5, sketchwithoutlibrary

Dear visitors. You can support our project buy clicking on the links of parts and buying them or donate us to keep this website alive. Thank you

In this project, you needed these parts :

1.Arduino Uno R3 (you can also use the other version of Arduino)

2.Arduino IDE ( you can download it from here  )

3.Jumper cables F-M, M-M

4. Nokia 5110 LCD module 1 pc

5. Potentiometer 1 pc

6. Breadboard 1 pc

7. Resistors (4 pcs 10 KOhm, 1 pc 1 KOhm)


We will learn how to connect Nokia 5110 LCD module to Arduino board and use it.

Understanding the Nokia 5110 LCD module

The Nokia 5110 display is basically a graphic LCD display useful for a lot of applications. It was intended originally to be used as a screen for cell phones and was used in lots of mobile phones during the 90’s. This one is mounted on an easy to solder PCB.

It uses the PCD8544 controller, which is the same used in the Nokia 3310 LCD. The PCD8544 is a low power CMOS LCD controller/driver, designed to drive a graphic display of 48 rows and 84 columns. All necessary functions for the display are provided in a single chip, including on-chip generation of LCD supply and bias voltages, resulting in a minimum of external components and low power consumption. The PCD8544 interfaces to microcontrollers through a serial bus interface.

The Nokia 5110 LCD can display text, graphics as well as bitmaps. When this display is fully lit, it draws about 10mA but with the backlight off, it draws as low as 0.4mA.


  • 48 x 84 Graphic LCD Display
  • Serial Bus Interface
  • Internal Controller – PCD8544
  • LED Back-Light
  • Supply Voltage 2.7 -3.3 Volt
  • Low power consumption

You can find datasheet here.

Understanding the potentiometer

You can read more about it here.

Signals and connections of the potentiometer

You can read about it here.

You can also place a capacitor across the power and ground going into yourpotentiometer. These are called decoupling capacitors becausethey reduce, or decouple, changes caused by the componentsfrom the rest of the circuit. Be very careful to make sure you areconnecting the cathode to ground (that’s the side with a blackstripe down the side) and the anode to power. If you put thecapacitors in backwards, they can explode.

Signals and connections of Nokia 5110 LCD module

Operation at 3.3V

Many devices that can be used with an Arduino, require a power supply of 3.3V. This is also the case with the Nokia 5110. 

Thanks to the internal clamp of the PCD8544 we can use a very simple level shifter. Four current limiting resistors of 10kΩ can do the job. When an LCD control line is high, the current through the 10kΩ resistor is just 40uA, so this is harmless. Note that we can't read back from the LCD with this circuit.

Operation at 5V

Because VDD max = 7V, the PCD8544 controller can handle 5V, but the Nokia 5110 LCD works best at 3.3V. The four resistors of 10 KOhm avoid streaks on the LCD display.

PCD8544 supply current versus supply voltage

In our project LCD runs at 3.3V so you'll need to use a level shifting chip (for example Bi-Directional Logic Level Converter or TXB0104) to use with a 5V microcontroller if it does not have 3.3V pin. The following will assume that is the case. If you're running a 3.3V microcontroller system, you can skip the level shifter.

Using the control lines

The Nokia 5110 LCD has 5 control lines; the interface is of the type SPI. Mostly, when no other SPI devices are used, the chip select can be connected to the GND, so 4 control lines stay over. To save Arduino pins, there is an option to use only 3 control lines, while the Nokia reset pin is connected to the Arduino reset. This works only when the serial monitor is used, not with a standalone Arduino.

Auto reset circuit

An option is to generate a reset pulse on power up automatically, with a RC combination, to save one control line to the Arduino. However, I found out that this solution is poorly reproducible; the proper functioning depends for instance on the capacitor across the 3.3V supply. Also the Arduino can't be used with the serial monitor anymore.

Nokia 5110 LCD with different connector wiring

Not all Nokia 5110 LCDs are the same. Although they look identical, the connector wiring can be completely different.

GND - ground pin of Arduino board

BL (or LED or LIGHT) - Backlight control. Connect to 3.3V power pin of Arduino board. It will be off if the pin is connected to GND pin of Arduino and on if it's connected to 3.3V power pin of Arduino.

VCC - Power Supply from  2.7 – 3.3 V

CLK (or SCLK or SCK) - Serial Clock Line for SPI communication

DIN ( or DN or MOSI) - Serial Data Line for SPI communication

DC (or D/C) -   Data/Command mode selection for data formats

CE (or SCE or CS-  Chip enable input. The enable pin allows data to be clocked in. The signal is active LOW.

RST - External reset. This signal will reset the device and must be applied to properly initialize the chip. The signal is active LOW. 

Build the circuit

Add some resistors in series with the data signals to protect the 3.3V lines.

Using Logic Level Converters to switch from 5V to 3.3V is the best option to interact with this LCD.

You do not need the potentiometer for wiring and using sketch 3, sketch 4 and sketch 5.

The following picture shows the needed connections with the Arduino Uno 


Array for your picture can be generated by simply uploading the logo image in the following link or you can use different programs: 

LCD Assitant

  LCD AssitantBitmap2LCDTheDotFactory (to create user font arrays). You can also create picture in binary format and convert to HEX format using online tool.

How to use LCD Assistant: Download program, open it, go to File > Load Image, select picture/image. Settings you need to check: picture must be 84 pixels wide x 48 pixels high, Byte orientation - Vertical, Size endianness - Little. Other settings are by default (8 pixels/byte). Go to File > Save output, to generate text file. Open that created text file to check for array data.Replace aaray data in sketch with yours.

Note: The picture must be of correct size to fit on the Nokia LCD - 84 (W) x 48 (H) or smaller, suggested type BMP (bitmap) and it should be monochrome color  - 1-bit per pixel (1bpp) format supports 2 distinct colors, (for example: black and white).

Sketch 1 with PCD8544 library

This sketch can be used mainly for text and project values presentation. Very limited grafics.

Sketch 2 with Nokia 5110 library

At the beginning of the program, you can see large array named “AcoptexLogo”.  It is for displaying the Acoptex Logo (as you can see in the header area of this website).  You can replace it with the array of your own logo. 

You can also use this sketch to present your text and project values.

As mentioned earlier the signal connection for controlling operation of LCD is the Serial format. Command mode and Data mode are the two modes that are used for communicating with LCD. The DC pin of the LCD is used for selecting the mode. if DC = 0, the data that is sent to the LCD is Command and if DC = 1, the data that is sent to LCD will be Data and it will be placed in DDRAM Memory (Display Data RAM) to be displayed on LCD Display. The value of DDRAM will be incremented automatically after writing 1 byte into it. While sending each byte, the MSB will be sent first.

Data() and Cmd() are the subroutines used for selecting the mode of sending data (Data mode and Command mode). The arrangement of memory in LCD 5110 is in matrix form consist of 6 rows (Y Address) and 84 columns (X Address). Data will be sent as bytes and it will be arranged as a vertical line. If we want to access to the position of displaying the result on LCD Display, we must refer to the relationship between X-Address and Y-Address. Subroutines used for this are setPixel() and setCursor(). allClear() is the subroutine used for clearing the entire DDRAM.

As the name says Initialize_LCD() is the function used for sending commands to the LCD for its initialization. charDisp() and stringDisp() are for displaying characters and strings respectively.

Sketch 3 with Adafruit_GFX library and Adafruit_PCD8544 library

You will see an example of how to use the libraries

Sketch 4 with U8glib library

If you want to display text / graphics and have more control of the 5110, the u8glib is great, but it does takes more memory, and is more complicated to use, but if you want to have more options, using the u8glib library is the way to go.

Sketch 5 with LCD5110_Graph library

The logo HEX data is in separate file - graphics.c. Easy to use library with a lot of examples.

We will save the C code in the program memory instead of the SRAM as we always need small RAM usage. To do this we will have to include a library and a word like the pictures or like this: (We include the PROGMEM word and the library)

Sketch 6 without library

Very simple. Can be used to print declared symbols in sketch on Nokia 5110 LCD module only. No graphics.

Step by Step instruction

  1. Open Arduino IDE.
  2. Plug your Adruino Uno board into your PC and select the correct board and com port
  3. Open up serial monitor and set your baud to 9600 baud
  4. Modify text or picture.
  5. Verify and upload the the sketch to your Adruino Uno board.


We have learnt how to connect Nokia 5110 LCD module  to Arduino board and use it with different libraries.


  • We have used different libraries in this project: PCD8544 libraryNokia 5110 library, Adafruit_PCD8544 library and Adafruit_GFX library (Adafruit GFX Graphics core which does all the circles, text, rectangles, etc.), U8GLIB graphics library and LCD5110_Graph library. All of them attached on the beginning of this project. Download, unzip them and add to libraries in your PC, for example C:\Users\toshiba\Documents\Arduino\libraries or C:\Program Files (x86)\Arduino\libraries. This link you can find in Preferences of Adruino IDE program which installed in your PC.


  • See attachments on the begining of this project description. 

Other projects of Acoptex.com
Easy Basics: Project 101a Ai Thinker A9G GPRS GPS development board of Acoptex.com, Not selected 23-11-2019
Easy Basics: Project 100a Ai Thinker A9 GSM GPRS development board of Acoptex.com, Not selected 22-11-2019

Published at 12-11-2017
Viewed: 3712 times