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(); }