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

zapraszamy do współpracy!