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).
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)
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,CE - linia CS SPI,DC - linia ustalająca, czy przesyłamy dane (stan wysoki), czy komendy dla wyświetlacza (stan niski)DIN - linia danych SPI (MOSI),CLK - linia zegarowa SPI (SCLK),VCC - zasilanie modułu (3.3V),LIGHT - podświetlanie wyświetlacza,GND - masa.
| Nr pinu wyświetlacza | Sygnał wyświetlacza LCD | Piny Arduino Leonardo |
|---|---|---|
| 1 | RST | d3 |
| 2 | CE | d4 |
| 3 | DC | d5 |
| 4 | DIN | d6 |
| 5 | CLK | d7 |
| 6 | VCC | 3,3V |
| 7 | LIGHT | GND |
| 8 | GND | GND |
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.
#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();
}