Wyświetlacz LCD HD44780 dla Arduino

Wyświetlacz lcd hd44780

Wyświetlacz LCD hd44780 dla Arduino to wyświetlacz alfanumeryczny sterowany za pomocą układu HD44780. Jest on jednym z najpopularniejszych interfejsów graficznych dla Arduino. Bez wątpienia, popularność tą zawdzięcza prostocie użycia (oczywiście jeśli skorzystamy z gotowej biblioteki LiquidCrystal) oraz relatywnie niskiej cenie.

Na rynku możemy spotkać różne wersje tych wyświetlaczy.

Podzielić je można ze względu na:

– ilość oraz układ wyświetlanych znaków (popularne to 2×16 oraz 4×20 znaków)
– kolor wyświetlacza (popularne są zielone i niebieskie)
– technologi wykonania (LED oraz OLED)

Spis treści:

1. Podłączenie wyświetlacza

2. Uruchomienie wyświetlacza – biblioteka LiquidCrystal

3. Odświeżanie wyświetlacza.

4. Wyświetlanie znaków specjalnych


1. Podłączenie wyświetlacza LCD hd44780.

Schemat podłączenia wyświetlacza do Arduino przedstawia poniższy rysunek (Rys.1):

HD44780-schem

Rys.1. Schemat podłączenia wyświetlacza LCD do Arduino [1].

Opisy oraz numery wyprowadzeń wyświetlacza zostały zamieszczone w poniższej tabeli (Tab.1):

 Nr padu:  Nazwa Opis podłączenia
         1VSSPotencjał zerowy sterownika (GND)
         2VCCZasilanie sterownika (+5 VDC)
         3V0Napięcie regulujące kontrast (od 0 do +5 VDC)
         4RSWybór rejestru: instrukcja (GND) / dane (+5 VDC  )
         5R/WOdczyt/Zapis (w tym przypadku zawsze zapis – podłączamy do GND)
         6EOdblokowanie wyświetlacza
         7DB0Magistrala przesyłu danych

 

=> w tym przypadku (mod 4 bitowy wyświetlacza)

podłączamy tylko wyprowadzenia DB4, DB5, DB6, DB87 *

         8DB1
         9DB2
       10DB3
       11DB4
       12DB5
       13DB6
       14DB7
       15LED+Napięcie zasilania podświetlenia (+5 VDC)
       16LED-Potencjał zerowy  podświetlenia (GND)

Tab.1. Opis i numeracja wyprowadzeń z wyświetlacza ze sterownikiem HD44780.

tabela znaków standardowych (link)

Sterownik HD44780 zasilany jest napięciem VCC wynoszącym +5 VDC. Aby zasilić podświetlenie wyświetlacza podpinamy napięcie +5 VDC (LED+) przez rezystor  R1 ograniczający prąd (np. o wartości 330 Ohm). Spowodowane jest to faktem, że nie wszystkie wyświetlacze są wyposażone w taki rezystor, a w przypadku jego braku podświetlenie zostanie uszkodzone.

Dodatkowo w tego typu wyświetlaczach regulacja kontrastu następuje poprzez zmianę napięcia V0 – do zmiany napięcia można użyć potencjometru P1 – np. 10 kOhm (źle dobrane napięcie powoduje, że nie zobaczymy w ogóle znaków na wyświetlaczu). Jeśli wyregulujemy kontrast, można zmierzyć wartość rezystancji na potencjometrze, następnie zamienić potencjometr na rezystor o możliwie zbliżonej wartości rezystancji.

Do obsługi wyświetlacza niezbędne jest podłączenie sześciu przewodów do dowolnych portów I/O Arduino.

Przykładowo, w opisywanym przypadku wyprowadzenia wyświetlacza podłączono do Arduino następująco:

 Pin ArduinoWyprowadzenie wyświetlacza 
 10RS 
 9E 
 8DB4 
 7DB5 
 6DB6 
 5DB7 

Tab.2. Przykładowe podłączenie wyprowadzeń wyświetlacza LCD hd44780 dla Arduino w modzie 4 bitowym.



Rys.2. Poglądowy schemat podłączenia wyświetlacza do Arduino w modzie 4 bitowym [2].

Dużym uproszczeniem podłączenia jest zastosowanie modułu sterowania wyświetlaczem LCD HD44780 poprzez magistralę I2C. Przykładem takiego elementu jest moduł LCM1602. Rozwiązanie takie wymaga podłączenia tylko czterech przewodów, wyświetlacz natomiast działa równie dobrze. Rozwiązanie takie wymaga zastosowania dodatkowej biblioteki np. “LiquidCrystal_I2C”.

Rys.3. Poglądowy schemat podłączenia wyświetlacza do Arduino poprzez magistralę I2C (LMC1602).

Szczegółowe informacje na temat sterownika można znaleźć w karcie katalogowej: HD44780 .


2. Uruchomienie wyświetlacza LCD hd44780 – biblioteka LiquidCrystal.

Wyświetlacz LCD hd44780 dla Arduino – biblioteka LiquidCrystal. Jedną z największych zalet Arduino jest fakt, że posiada duże wsparcie biblioteczne. W przypadku wyświetlacza sterowanego układem HD44780 twórcy platformy Arduino IDE wyposażyli ją w domyślnie zainstalowaną biblioteką o nazwie LiquidCrystal. Na stronie producenta, można znaleźć opis każdej z funkcji biblioteki oraz przykłady użycia tej biblioteki.

Program zaczynamy od włączenia biblioteki LiquidCrystal:

W kolejnym kroku definiujemy, które piny Arduino używać będziemy do obsługi wyświetlacza. W nawiasie umieszczamy numery pinów zgodnie z następującym porządkiem:

LiquidCrystal lcd(RS, E, DB4, DB5, DB6, DB7);

W naszym przykładowym podłączeniu (Rys.2) zgodnie z tabelą Tab.2 otrzymujemy:

W części programu “setup” inicjalizujemy wyświetlacz komendą:

lcd.begin (liczba kolumn, liczba wierszy);

Niezbędne jest tu zdefiniowanie modelu wyświetlacza (np. czy jest to 16×2 znaków, czy 20×4 itp.). Dla wyświetlacza 16×2 będzie to komenda:

W tym momencie wyświetlacz jest już gotowy do użycia. W zasadzie do podstawowej obsługi wyświetlacza wystarczą nam trzy funkcje z opisywanej biblioteki:

1. Ustawienie kursora w miejscu gdzie ma rozpocząć się wyświetlenie ciągu znaków:

lcd.setCursor(kolumna, wiersz);

2. Instrukcja wyświetlenia ciągu znaków:

lcd.print(“nasz tekst”);

3. Instrukcja czyszcząca cały ekran:

lcd.clear();

Przykład


Poznaliśmy już wszystkie niezbędne funkcje, aby stworzyć pierwszy program wyświetlający dowolny tekst. Przykładowy kod wyświetlenia napisu “Hello, world!” znajduje się poniżej:

Powyższy przykład pokazuje jedną podstawową rzecz: po wysłaniu ciągu znaków do wyświetlania poleceniem lcd.print(), pozostają one w jego pamięci (są jakby “zamrożone”). Dowodem tego jest fakt, że polecenie lcd.print() znajduje się w części programu setup(), która wykonuje się tylko raz. Dlatego jeśli przez jakiś czas nie potrzebujemy odświeżać ekranu wyświetlacza (np. mamy jakiś statyczny tekst) wystarczy wysłać jednokrotnie polecenie lcd.print() i nie angażować już więcej czasu procesora.


3. Odświeżanie wyświetlacza LCD hd44780.

Wspominana w poprzednim rozdziale funkcja lcd.clear() służy do czyszczenia z ekranu wszystkich aktualnie wyświetlanych znaków. Jednak funkcja nie jest doskonała i proces czyszczenia ekranu, następnie wyświetlenie nowej treści przebiega relatywnie wolno. Polecenie lcd.clear() najlepiej używać, gdy niezbędna jest znacząca zmiana wyświetlanej treści. W przypadku, gdy chcemy zaktualizować na wyświetlaczu tylko kilka znaków, zdecydowanie lepiej nadpisać konkretne znaki lub po prostu wyświetlić w tym miejscu znaki spacji. Napisanie tym sposobem programu jest bardziej czasochłonne, jednak unikamy w ten sposób niechcianego migotania treści statycznych.

Jednak dla wielu mniej wymagających programistów, odświeżanie wyświetlacza wyłącznie funkcją lcd.clear() będzie wystarczające, a migotanie treści statycznych może zostać niezauważone. Dla bardziej wymagających aplikacji warto przypomnieć sobie, że użycie funkcji lcd.clear() nie jest jedynym sposobem na odświeżanie treści.

W poniższym przykładzie przedstawiono kod programu, w którym nie wykorzystano funkcji lcd.clear()

W miejscach zmiany treści, zostają wyświetlone spacje, które skutecznie usuwają część wyświetlonych na ekranie znaków.


4. Wyświetlanie znaków specjalnych.

Wyświetlacz LCD HD44780 dla Arduino oprócz standardowych znaków z TABELI daje nam możliwość wyświetlenia również znaków specjalnych, które sami zaprojektujemy. Jednak ograniczenie stanowi to, że można wyświetlić nie więcej niż osiem różnych znaków specjalnych jednocześnie.

Aby wyświetlić znak specjalny należy w pierwszym kroku utworzyć zmienną byte z zdefiniowaną mapą bitową naszego znaku. Najprościej można stworzyć taką mapę używając generatora znaków specjalnych, takiego jak poniżej.

Generator znaków specjalnych dla wyświetlacza LCD HD44780

Kliknij na jeden z zielonych kwadracików w generatorze – kod programu zmieni się automatycznie. Wystarczy skopiować do Arduino i gotowe;)

Źródła grafik:

[1] http://www.learningaboutelectronics.com/images/Arduino-HD44780-circuit-schematic.png

[2] https://electrosome.com/wp-content/uploads/2014/11/Interfacing-LCD-with-Arduino-UNO.jpg

Na zakończenie: Wyświetlacz LCD hd44780 dla Arduino – obserwuj naszą stronę Facebook Arduino Polska.