August 15, 2013 · display gpio lcd programming project python raspberrypi tutorial WiringPi

LCD Display with Raspberry Pi

Here's another GPIO connected post. Previously I've written about my GPIO plans, and my first electronics small project - Tux Crossing. Now it's time for something bigger.

I've bought myself a Nokia 5110 LCD display on eBay, with the intention of visualizing my RPi data. Here's how I got it working.

The Hardware

Nokia 5110 LCD Monochrome Display

The Nokia LCD is just an old-ish (few scratches on the front) mobile display, but what is special about it, is that it is really good in presenting data. This little 84×84 pixel monochrome screen is backlit and very easy to use. Eight pins on the circuit board under the screen are well described on the front, so there is no problem with connecting it to the RPi pins. The pins are:

1-RST - Reset
2-CE - Chip Enable
3-DC - Data/Command
4-DIN - Serial Input
5-CLK - Clock Input
6-VCC - Power
7-BL - LED Backlight
8-GND - Ground

The board is fully assembled and soldered, so no soldering knowledge is needed. It's just plug'n'play.

To get it working with the the Raspberry Pi you have to connect the LCD pins to correct pins on your Pi:

LCD --> RPi
RST --> pin 18 (GPIO24)
CE --> pin 24 (SPI_CE0)
DC --> pin 16 (GPIO23)
DIN --> pin 19 (SPI_MOSI)
CLK --> pin 23 (SPI_SCLK)
VCC --> pin 1 (3v3)
LED --> pin 12 (GPIO18) to allow varying the brightness
GND --> whichever GND pin is convenient

If you are not sure which pin is where, have a look at this useful Pinout page, created by Gadgetoid.

For the purpose of my testing, I've connected it like this:


Note: If you want to reproduce this assembly, check carefully the pin order, it may be different, as the pins on the LCD boards differ!

And here is the LCD  sitting on a breadboard connected to my RPi. It's quite messy, but works for now.

lcd connected

The Backend

To use the PCD8544 display we need to install some software and load a kernel module. For this I've used *wiringpi2 *from

git clone git://
cd wiringPi

Once *wiringpi *is installed, it is possible to test it with the following command:

gpio readall

with the output of something like this:


Now, install the python binding of wiringpi:

sudo apt-get install python-dev python-imaging python-imaging-tk python-pip
sudo pip install wiringpi wiringpi2

The program we will use require spidev to be activated. The kernel module should then be activated.

To do so, comment the line

blacklist spi-bcm2708

by adding a heading # in the file /etc/modprobe.d/raspi-blacklist.conf, so it reads

#blacklist spi-bcm2708

then reboot the Raspberry Pi to activate this module.

Finally, we install spidev python library:

sudo pip install spidev

The prerequisite are now installed. In next chapter we will see how to install the python library in charge of driving the LCD and how to use it.

The Frontend

Once the drivers and modules were installed, it's time for the base to control the LCD.

The library written Richard Hull's can be directly installed on the Raspberry Pi.

This pcd8544 library resulting is available into its own dedicated repository in github.

To install it, execute the following commands:

git clone
cd pcd8544
./ clean build
sudo ./ install

You can now test the installation with the proposed examples:

cd examples
sudo ./

If installation works properly, you should see the following screen:


If you don't see anything, or only the backlight is on, try reconnecting the pins (I myself did few mistakes with wiring before I got it working!). If that doesn't help, type:

gpio reset

and try again. If that fails, restart your Pi.

You can try to execute other examples to see what the library is capable to do with this LCD.


So, the display works, now it's time for some programming! I will post my adventures with the screen here in the nearest future.

Follow up:

LCD display with RPi and room temperature LCD Monitor


I was playing with displaying custom characters on the screen, and I've found a nice online tool where you can create your own glyphs to be displayed on your LCD screen. Just go here: PCD8544 Glyph Editor. The output is a sequence of bytes in hexadecimal "C" format that can be pasted into your python code. It is used in one of the examples under ~/pcd8544/examples/ directory, called

  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket