PCD8544 Nokia 3310 Graphical LCD

Glcd Banner
Remember the good old Nokia 3310?

nokia-3310[1]

For display, it’s using a Philips PCD8544 Graphical LCD. It features a whopping 84 x 48 pixels of resolution to ensure true clarity when playing Space Impact or Snake II 😀

Apparently now you can buy a module with this graphical LCD on it for around RM 10 shipped from China.

IMG_1033

Well, if you have a Nokia 3310 lying around you can rip out its’ LCD but take note that its a pain in the butt to solder.

This module I got has everything in it including the cool white backlight. Yes, backlight is important.

IMG_1034

The difference between Graphical LCD and a normal LCD like I’ve used in this article is that you can selectively turn on or off every pixel and form your desired image. In a typical LCD like the HD 44780, you can only send specified ASCII characters and display corresponding texts.

Like most recent electronic components, this PCD8544 Graphical LCD runs on 3.3V logic. If you’re using a 5V microcontroller (ex. Arduino Uno), you’ll need a level shifter like 74HC4050. If not, you’ll fry this LCD right away.

IMG_1035

A level shifter converts a 5V signal to a 3.3V signal. It’s a pretty simple IC to use.

74hc4050[1]

Vcc connects to 3.3V and this IC is capable of level shifting 6 channels. The ‘A’ pin connects to the 5v MCU and the ‘Y’ pin connects to the GLCD.

The connections are as below :

pin 7 – Serial clock out (SCLK)
pin 6 – Serial data out (DIN)
pin 5 – Data/Command select (D/C)
pin 4 – LCD chip select (CS)
pin 3 – LCD reset (RST)

It’s not that much of a hassle to use a level shifter, you can build the entire circuit on a small breadboard.

IMG_1028

IMG_1031

I’m using Adafruit’s Library and modified the sample sketch to display bitmap images.

glcd_code

I found a software that can convert your typical JPEG, GIF, PNG or BMP images to binary, meaning ‘0’ and ‘1’s so that you can turn on or off individual pixels on the graphical LCD.

It’s called Image2GLCD.exe and it can be downloaded here –> http://www.avrportal.com/?page=image2glcd Credits to Jirawat Kongkaen for an awesome app.

image2glcd

Follow the settings shown above and click on Save. A file called Image2GLCD.c will be generated and in it you will find the image bits.

image2glcd_bits

Copy this into your Arduino sketch and to display them just issue this command.

display.drawBitmap(0, 0, img, 80, 45, BLACK);

img being the name of your char variable. Remember to follow it up with display.display();

glcd_code2

Here’s a demonstration video :

Download Code

  1. Dinesh Wickramasinghe10-10-2015

    Nice article, Can you clearly mention the pin connectivity. I mean which pin of LCD module connect to which pin or Arduino. Cannot find the schematic. Thanks!

  2. miftah10-05-2014

    do you have lcd nokia 3315 and how much?..

  3. miftah10-05-2014

    do you have lcd nokia 3315

  4. LUTHFI06-28-2013

    Hi Wai Hung !

    I am really enjoy reading your site, its wonderful for me !!! by the way … the LCD drive me insane to buy it, really good on displaying (almost) anything, care to share where did you buy it ? thanks man …

  5. mynn03-22-2013

    If i hesitate to not using 74HC4050.. can i use voltage regulator LM1117 for arduino input voltage to convert 5v to 3.3V exactly. Then connecting pcd8544 LCD graphic display directly to arduino pinout ?

    • Wai Hung03-22-2013

      Well I guess you could do that, input the 3.3V into Arduino 5V pin, not the Vin pin.
      And a very important note is that you shouldn’t connect the USB or DC jack when doing this. The USB or DC jack will provide 5V and overrun the 3.3V you supplied.

Leave a Reply