Arduino i wyświetlacz LCD
sterownik HD44780
1. Wyświetlacz
Wyświetlacz LCD ze sterownikiem HD44780 jest jednym z najpopularniejszych urządzeń tego typu. Głównymi jego zaletami są: niska cena, duża dostępność oraz prosta obsługa. Układ można spotkać w kilku wesjach. Różnią się one między sobą: kolorami podświetlenia i znaków oraz wymiarami, czyli maksymalną ilością znaków wyświetlanych w jednym momencie.
W naszym sklepie dostępne są wyświetlacze:
16x2 - 16 kolumn i 2 wiersze (32 znaki)
8x2 - 8 kolumn i 2 wiersze (16 znaków)
20x4 - 20 kolumn i 4 wiersze (80 znaków)
2. HD44780 - sterowanie
Najczęściej wyświetlacze posiadają szesnaście wyprowadzeń. Zasilanie (VDD, VSS), pin regulacji kontrastu (V0), trzy linie sterujące (RS, R/W, ENABLE), osiem linii magistrali danych (D0...D7) oraz osobne zasilanie podświetlania (LEDA+ , LEDK-).
Rysunek przedstawia wymiary oraz wyprowadzenia wyświetlacza LCD 16x2.
Nr | Nazwa | Opis |
---|---|---|
1 | VSS | Masa |
2 | VDD | Zasilanie (+5V) |
3 | V0 | Kontrast |
4 | RS |
Wybór rejestru instrukcji wyświetlacza (stan niski) albo rejestru danych(stan wysoki) |
5 | R/W | Odczyt (stan niski) / Zapis (stan wysoki). W trybie bez odczytu flagi zajętości, wyprowadzenie może zostać podpięte do masy. |
6 | E | Jeśli wystąpi zbocze opadające, wyświetlacz jest gotów do odczytu danych z magistrali. |
7 | DB0 |
Magistrala danych. Po tych liniach przesyłane są dane oraz instrukcje dla wyświetlacza. |
8 | DB1 | |
9 | DB2 | |
10 | DB3 | |
11 | DB4 | |
12 | DB5 | |
13 | DB6 | |
14 | DB7 | |
15 | LEDA | Zasilanie podświetlania. |
16 | LEDK | Masa podświetlania |
Do obsługi wyświetlacza wykorzystywane będą cztery linie danych: D4 D5, D6, D7 oraz wyprowadzenia: E, RS. R/W będzie podłączone do masy. Więcej informacji o trybach sterowania można znaleźć w opisie wyświetlacza.
Dzięki bibliotece LiquidCrystal obsługa wyświetlacza z Arduino sprowadza się do następujących czynności:
- Incjalizacji - służy do tego metoda LiquidCrystal(rs, rw, enable, d4, d5, d6, d7) w nawiasie podwane są numery poszczególnych wyprowadzeń. Przykładowo:
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); //pin RS - podłączony do cyfrowego wyjścia 12, R/W-11 itd.) lcd.begin(16, 2); // ustawienie typu wyświetlacza, w tym wypadku 16x2
- Podania danych do wyświetlenia:
lcd.setCursor(kolumnal, wiersz);- podanie miejsca od którego rozpocznie się wyświetlanie znaków. Np.lcd.setCursor(0, 1) // kolumna nr 0, wiersz nr 1 (numerowanie rozpoczyna się od zera)
lcd.print(dane)- podanie łańcucha znaków (string) do wyświetlenia w znacznikach "dane". Np cd.print("hello, world!"); - na wyświetlaczu ukaże się napis hello, world!
Szerszy opis biblioteki oraz przykładowe programy można znaleźć w dokumentacji projektu Arduino.
3. Przykład
Program z dokumentacji biblioteki Arduino pt. Hello World
Opis:
Przykładowy program do obsługi wyświetlacza LCD 16x2 w trybie 4-bitowym bez odczytu flagi zajętości
Podłączenie:
- LCD RS pin podłączony do cyfrowego wyjścia nr 12
- LCD Enable pin podłączony do cyfrowego wyjścia 11
- LCD D4 pin podłączony do cyfrowego wyjścia nr 5
- LCD D5 podłączony do cyfrowego wyjścia nr 4
- LCD D6 podłączony do cyfrowego wyjścia nr 3
- LCD D7 podłączony do cyfrowego wyjścia nr 2
- LCD R/W pin podłączony do masy
- VO (kontrast) podłączony do potencjometru. Potencjometr można zastąpić dzielnikiem napięcia. W niektórych przypadkach skuteczny będzie także rezystor o wartości kilkuset omów podłączony z wyprowadzenia V0 do masy.
- LCD LED+ zasilanie podświetlenia (5V)
- LCD LED- masa podświetlenia
Mimo, iż niektóre wyświetlacze mają wbudowany rezystor ograniczający prąd zasilania diod podświetlających, warto zastosować zewnętrzny ogranicznik. W tym przyopadku linia 5V podłączona jest przez rezystor 200 Om.
Rysunek przedstawia połączenie wyświetlacza z modułem Arduino Uno.
Kod:
//Inicjalizacja połączeń LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { // Wybór rodzaju wyświetlacza - 16x2 lcd.begin(16, 2); //Przesłanie do wyświetlania łańcucha znaków hello, world! lcd.print("hello, world!"); } void loop(){ //Przejście kursora do pierwszej kolumny drugiego wiersza lcd.setCursor(0, 1);? //Odczyt oraz wyświetlenie czasu jaki upłynął od ostatniego resetu w sekundach lcd.print(millis()/1000); }
Analogicznie należy postępować z urządzeniami o mniejszej i większej ilości wyświetlanych znaków.
4. Podsumowanie
Wyświetlacz to ważne narzędzie w procesie komunikacji urządzenia elektronicznego z człowiekiem. Przydatny do wykrywania błędów podczas testowania czy podglądu danych zbieranych przez mikrokontroler. Razem z przyciskami tworzy podstawę interfejsu użytkownika.
Moduły alfanumeryczne, oparte o sterownik HD44780 są niezwykle proste w obsłudze. W przypadku, gdy nie ma potrzeby wyświetlania grafiki, urządzenia te sprawują się bardzo dobrze i są chetnie wykorzystywane przez hobbystów i profesjonalitów.
Rysunek przedstawia podłączenie wyświetlacza LCD 16x2 przy pomocy płytki stykowej oraz przewdów połączeniowych.