Nokia 5110 LCD, an Arduino Pro Mini 3.3V with 8MHz clock frequency

As a quasi-nostalgic relic of an almost extinct generation of cell phones we use today, the Nokia 5110 LCD screen from the cellular phone with the same name, kindly as a breakout board for a small budget. Because the display operates at 3.3V, we use it together with a 8MHz clocked Arduino Pro Mini, which also runs at 3.3V.

Nokia 5110 LCD, an Arduino Pro Mini 3.3V with 8MHz clock frequency

Nokia 5110 LCD, an Arduino Pro Mini 3.3V with 8MHz clock frequency

Instead of the Arduino Pro Mini, of course, you can also use a Olimexino-32U4, however  the voltage jumper must then be set to 3.3V and the display must powered by the 3.3V pin.

The display should not be used with 5V Arduinos.

Schematic (Arduino and the Nokia 5110 LCD display wiring):

Zoom level:

1afbgchdie1j55101015152020252530afbgchdie30j1818Arduino Pro Mini - http://blog.simtronyx.de - SVG created by Ronny Simon - All rights reserved.
Move over elements (parts, jumper cable etc.) for more information (or tap in touch mode)...

Arduino Pro Mini 3.3V
Olimexino-32U4 (Jumper 3.3V!)
Nokia 5110 display
D3 RST
D4 CE
D5 DC
D6 DIN
D7 CLK
VCC (3.3V) VCC
GND LIGHT
GND GND
Nokia 5110 LCD screen (pinout on backside)

Nokia 5110 LCD screen (pinout on backside)

The LED lights (LIGHT pin on the LCD) can of course be omitted, at least on a bright day.

Again we use two Adadfruit libraries, this time the [SIMTRONYX_LIBRARY src=”Adafruit_PCD8544.zip” name=”PCD8544 library”], which deals with the control of the display and a [SIMTRONYX_LIBRARY src=”Adafruit_GFX.zip” name=”graphics library”], both of which we add to the Arduino libraries. Then we put the following code in a sketch and upload it to the Arduino …

Source code (sketch):

// Nokia 5110 LCD-Display (84x48 Bildpunkte)

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

// D7 - Serial clock out (CLK oder SCLK)
// D6 - Serial data out (DIN)
// D5 - Data/Command select (DC oder D/C)
// D4 - LCD chip select (CE oder CS)
// D3 - LCD reset (RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);


void setup()   {

  // Display initialisieren
  display.begin();

  // Kontrast setzen
  display.setContrast(60);
  display.clearDisplay();   // clears the screen and buffer
}


void loop() {
  
  display.setTextSize(1);
  set_text(11,0,"Hallo Welt!",BLACK);
  delay(500);
  
  display.drawLine(7,11,77,11,BLACK);
  display.display();
  delay(500);
  
  display.drawCircle(8,23,5,BLACK);
  display.display();
  delay(500);
  
  display.fillCircle(11,26,5,BLACK);
  display.display();
  delay(500);
  
  display.drawRect(25,18,10,10,BLACK);
  display.display();
  delay(500);

  display.fillRect(28,21,10,10,BLACK);
  display.display();
  delay(500);

  display.drawRoundRect(47,18,10,10,2,BLACK);
  display.display();
  delay(500);
  
  display.fillRoundRect(50,21,10,10,2,BLACK);
  display.display();
  delay(500);
  
  display.drawTriangle(68,18,68,28,78,23,BLACK);
  display.display();
  delay(500);

  display.fillTriangle(71,21,71,31,81,26,BLACK);
  display.display();
  delay(500);
  
  // Ein kleines bisschen Scroll-Text-Magie
  int x=0;
  for(int i=0;i<(5.6*8);i++){
    set_text(x,40,"blog.simtronyx.de",BLACK);
    delay(i==0?1000:100);
    if(i<(5.6*8)-1)set_text(x,40,"blog.simtronyx.de",WHITE);
    if((i)<(2.74*8))x-=1;else x+=1;
  }
  delay(250);
  
  display.clearDisplay();      // Display wieder löschen
}

void set_text(int x,int y,String text,int color){
  
  display.setTextColor(color); // Textfarbe setzen, also Schwarz oder Weiss
  display.setCursor(x,y);      // Startpunkt-Position des Textes
  display.println(text);       // Textzeile ausgeben
  display.display();           // Display aktualisieren
}

Download Source Code


… and now:

we are back in the good old days.

Components:

eBay: Breadboard
Breadboard jumper wires
Nokia 5110 Display
Amazon: Breadboard
Breadboard jumper wires
Nokia 5110 Display

Good?

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail