Obsługa wyświetlacza graficznego Nokia 5110


Tomasz Bartuś



2017-05-03
Obsługa wyświetlacza graficznego Nokia 5110

Wstęp

Prezentowany wyświetlacz LCD był wykorzystywany w produkcji słynnego modelu telefonu - Nokia 5110. Obecnie, ze względu na niska cenę i możliwości jest jednym z podstawowych urządzeń wyjscia wykorzystywanych w amatorskich projektach realizowanych za pośrednictwem platformy Arduino lub podobnych (Fig. 1).

Układ pomiarowy
Fig. 1. Układ pomiarowy

Lista części

  1. platforma Arduino (tu Leonardo),
  2. moduł wyświetlacza LCD Nokia 5110,
  3. rezystory 10kΩ (5 szt.),
  4. płytka prototypowa,
  5. przewody/mostki.

Hardware

Wyświetlacz Nokia 5110 (Fig. 2) posiada rozdzielczość: 84 × 48px. Powinien być zasilany napięciem 3,3V. Pracuje w logice 3-voltowej, dlatego na każdym z wejść cyfrowych wyświetlacza zastosowano odpowiednie rezystory. Cechuje się bardzo niskim poborem prądu, po wyłaczeniu podświetlania ekranu 6,0-7,7mA. Dzięki temu nadaje się do obsługi urządzeń pracujących w trybie ciągłym.

PCD8544 48 × 84 pixels matrix LCD controller/driver (pdf datasheet)

Moduł wyświetlacza LCD Nokia 5110
Fig. 2. Moduł wyświetlacza LCD Nokia 5110

Wyprowadzenia modułu:

  1. RST - linia resetująca rejestry wyświetlacza. Przed rozpoczęciem pracy należy wygenerować na niej stan zero przez co najmniej 100ns. Podczas normalnej pracy wyświetlacza, na tej linii powinien być ciągle stan wysoki,
  2. CE - linia CS SPI,
  3. DC - linia ustalająca, czy przesyłamy dane (stan wysoki), czy komendy dla wyświetlacza (stan niski)
  4. DIN - linia danych SPI (MOSI),
  5. CLK - linia zegarowa SPI (SCLK),
  6. VCC - zasilanie modułu (3.3V),
  7. LIGHT - podświetlanie wyświetlacza,
  8. GND - masa.

Schemat ideowy

Schemat układu pomiarowego
Fig. 3. Schemat układu pomiarowego
Tab. 1. Tabela połączeń
Nr pinu wyświetlaczaSygnał wyświetlacza LCDPiny Arduino Leonardo
1RSTd3
2CEd4
3DCd5
4DINd6
5CLKd7
6VCC3,3V
7LIGHTGND
8GNDGND

Zasada działania

Obsługa wyświetlacza wymaga zainstalowania odpowiednich blibliotek. W przedstawianym projekcie wykorzystano bibliteki Adafruit: Adafruit PCD8544 Nokia 5110 LCD library oraz Adafruit GFX Library. Po zainstalowaniu niezbędnych bibliotek, warto uruchomić przykładowy skrypt "pcdtest" prezentujący graficzne możliwości wyświetlacza. W szkicu można podgladnąć sposoby w jakie generowane są: rysunki złożone z pojedynczych pikseli, linie, prostokąty, prostokąty z zaokrąglonymi narożami, okręgi, trójkąty, inwersje kolorystyczne tekstu, obroty tekstu itp. Wszystkie dostepne opcje zostały opisane w tutorialu Adafruit GFX Graphics Library. Jedną z ciekawszych możliwości wyświetlacza jest możliwość wyświetlania bitmap.

Kod

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

// Software SPI (slower updates, more flexible pin options):
// 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)

//Adafruit_PCD8544 display = Adafruit_PCD8544(SCLK, DIN, D/C, CS, RST);
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

void setup() {
display.begin();                          //uruchom ekran
display.setContrast(40);                  //ustaw kontrast
display.clearDisplay();                   //wyczyść bufor ekranu
}

void loop() {
  display.setTextSize(1);                   //ustaw rozmiar czcionki na 1
  display.setTextColor(BLACK);              //ustaw kolor tekstu na czarny
  display.setCursor(3,5);                   //ustaw kursor w pozycji 3 kolumna 5 wiersz
  display.print("Tomasz Bartus");
  display.drawLine(3, 13, 81, 13, BLACK);  //draws a line from (x1,x2) to (y1,y2)

  display.setTextColor(WHITE, BLACK);        // 'inverted' text
  display.setCursor(0,17);                   //ustaw kursor w pozycji 1 kolumna 12 wiersz
  display.print("LCD Nokia5110");

  display.setTextColor(BLACK);   
  display.setCursor(3,30);
  display.setTextSize(2);
  display.print("TEST");

  display.drawRect(1, 28, 50, 18, BLACK);  //draws a rectangle from (x1,y1) to (x2,y2)

  display.drawTriangle(61, 28, 78, 37, 61, 45, BLACK);
  display.drawLine(53, 28, 53, 45, BLACK);
  display.drawLine(55, 28, 55, 45, BLACK); 
  display.drawLine(57, 28, 57, 45, BLACK);
  display.drawLine(59, 28, 59, 45, BLACK);
  display.display();
}

Wykorzystane materiały

Kurs STM32 - #10 - SPI w praktyce, wyświetlacz graficzny,
Kurs Arduino #15: Obsługa LCD Nokia 5110 PCD8544,
Moduł z wyświetlaczem od Nokii 5110,
 
 

Doktorat

Spis treści
Rozdzialy
Abstrakt [pl]
Abstract [eng]