zurück zur Übersicht...
17.02.2019

Nokia 5110 LCD

Nokia 5110 LCD

Verwendete Bauteile

Anschlüsse

Anschlüsse des Nokia 5110 LCD

Betriebsspannung des LCD-Modul prüfen!
Normalerweise haben die Nokia 5110 LCD-Module eine Betriebsspannung von 3,3V und können daher nicht direkt an die Pins des Arduino angeschlossen werden, daher ist entweder ein Bidirektionaler Pegelwandler notwendig oder man schaltet Widerstände dazwischen. Mein Modul hatte allerdings Probleme überhaupt etwas anzuzeigen, nachdem ich den Pegelwandler dazwischen geschaltet habe, daher entschloss ich mich nach mehreren vergeblichen Versuchen die Pins direkt vom Arduino in das LCD-Modul einzuspeisen und es lief perfekt. Für VCC habe ich 3,3V verwendet.

Pin Nr. Pin Funktion Arduino Pin
1 RST Reset (active low) D6
2 CE (SCE) Chip select (active low) D7
3 DC (D/C) Mode select:
1. command mode (LOW)
2. data mode (HIGH)
D5
4 DIN (DN / MOSI) Serial data in D11 (festgelegt)
5 CLK (SCLK) Serial clock D13 (festgelegt)
6 VCC Stromversorgung (2,7V bis 3,3V) VCC 3,3V
7 LIGHT (LED / BL) Hintergrundbeleuchtung (max. 3,3V) Entweder 3,3V oder Pin 8 mit 330Ω Vorwiderstand bzw. Potentiometer
8 GND Masse GND

Sketch I.

Der folgende Sketch verwendet die Library Adafruit_PCD8544.h und Adafruit_GFX.h zur Ansteuerung des LCDs.

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

#define PIN_CLK 13
#define PIN_DIN 11
#define PIN_DC  5
#define PIN_CS  7
#define PIN_RST 6

#define DISPLAY_WIDTH  84
#define DISPLAY_HEIGHT 84

Adafruit_PCD8544 display = Adafruit_PCD8544(PIN_CLK, PIN_DIN, PIN_DC, PIN_CS, PIN_RST);

void setup()
{
    randomSeed(analogRead(0));
    display.begin();

    // adapt display contrast for the best viewing
    display.setContrast(60);

    display.display();       // show splashscreen
    delay(2000);
    display.clearDisplay();  // clears the screen and buffer

    // draw some random pixels
    for (byte y=0; y<DISPLAY_HEIGHT; y++) {
        for (byte x=0; x<DISPLAY_WIDTH; x++) {
            if (random(0, 100) < 30) {
                display.drawPixel(x, y, BLACK);
            }
        }
    }
    display.display();
    delay(5000);
    display.clearDisplay();


    // text display tests
    display.setTextSize(1);
    display.setTextColor(BLACK);
    display.setCursor(0,0);
    display.println("Hello, world!");
    display.setTextColor(WHITE, BLACK);  // inverted text
    display.println(3.141592);
    display.setTextSize(2);
    display.setTextColor(BLACK);
    display.print("0x"); display.println(0xDEADBEEF, HEX);
    display.display();
    delay(5000);

    // rotation example
    display.clearDisplay();
    display.setRotation(1);  // rotate 90 degrees counter clockwise
    display.setTextSize(1);
    display.setTextColor(BLACK);
    display.setCursor(0,0);
    display.println("Rotation");
    display.setTextSize(2);
    display.println("Example!");
    display.display();
    delay(5000);

    display.setRotation(0); // revert back to no rotation
}

void loop()
{
}

Sketch II.

In diesem Versuch wird die Library U8glib verwendet, um das LCD anzusteuern.

#include "U8glib.h"

// CLK=13, DIN=11, CE=7, DC=5, RST=6
U8GLIB_PCD8544 u8g(13, 11, 7, 5, 6);

const uint8_t rook[] U8G_PROGMEM = {
    0x00,   // 00000000
    0x55,   // 01010101
    0x7f,   // 01111111
    0x3e,   // 00111110
    0x3e,   // 00111110
    0x3e,   // 00111110
    0x3e,   // 00111110
    0x7f    // 01111111
};

void draw(void)
{
    u8g.drawBitmapP( 0, 0, 1, 8, rook);

    u8g.setFont(u8g_font_profont11);    // select font
    u8g.drawStr(0, 25, "Hello world!"); // put string of display at position X, Y
}

void setup(void)
{
}

void loop(void)
{
    u8g.firstPage();
    do {
        draw();
    } while( u8g.nextPage() );
    delay(5000);
}

Sketch III.

Dieser Versuch verwendet die Library Nokia 5110 LCD library zur Ansteuerung des LCDs

#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 usualy 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()
{
}