Arduino – obsługa wyświetlacza LCD
Alfanumeryczne wyświetlacze LCD ze sterownikiem HD44780 są tanie i szeroko dostępne. Dzięki temu, są one chętnie stosowane przez elektroników w urządzeniach mikroprocesorowych. Sterowanie wyświetlaczem wyposażonym w sterownik typu HD44780 jest na tyle proste, że bez większych problemów radzą sobie z nimi nawet elektronicy amatorzy.
W przypadku Arduino sprawa wygląda jeszcze prościej, ponieważ do dyspozycji mamy gotową, wbudowaną bibliotekę z podstawowymi funkcjami obsługi wyświetlacza. Trzeba tylko podłączyć wyświetlacz do płytki, napisać kilka linijek kodu, załadować program i to wszystko – wyświetlacz pracuje.
Co będzie potrzebne?
- Arduino (oprogramowanie oraz dowolny klon płytki),
- wyświetlacz alfanumeryczny LCD ze sterownikiem zgodnym z HD44780,
- płytka stykowa, przewody
Połączenie Arduino i LCD
Na początek połączymy płytkę Arduino (Freeduino) z wyświetlaczem. Spójrzmy na wyświetlacz – jeśli znajduje się na nim opis poszczególnych sygnałów to podłączenie nie sprawi Ci problemu. Jeśli jednak takiego opisu brakuje, musisz poszukać dokumentacji do posiadanego egzemplarza, lub spróbować podłączyć go zgodnie z najczęściej spotykanym rozmieszczeniem sygnałów (tabela poniżej).
| Numer | Nazwa | Opis |
|---|---|---|
| 1 | GND | Masa |
| 2 | VDD | Napiecie zasilania +5V |
| 3 | V0 | Regulacja kontrastu wyświetlacza |
| 4 | RS | Wybór rodzaju informacji: 0 – komenda 1 – dane |
| 5 | R/W | Kierunek transmisji: 0 – wysłanie komendy lub danych 1 – odczyt stanu lub danych |
| 6 | E | Sygnał zezwalający 0 – wejścia nieatywne 1 – wykonanie działania |
| 7 | DB0 | Linia danych D0 |
| 8 | DB1 | Linia danych D1 |
| 9 | DB2 | Linia danych D2 |
| 10 | DB3 | Linia danych D3 |
| 11 | DB4 | Linia danych D4 |
| 12 | DB5 | Linia danych D5 |
| 13 | DB6 | Linia danych D6 |
| 14 | DB7 | Linia danych D7 |
| 15 | LED A | Anoda diody podświetlającej |
| 16 | LED K | Katoda diody podświetlającej |
Na wyświetlaczu, który posiadam widnieje opis:

Opis wyprowadzeń wyświetlacza LCD
Na innym:

Opis wyprowadzeń wyświetlacza LCD
Płytkę z wyświetlaczem połączyłem w następujący sposób:
| Arduino | LCD |
|---|---|
| 5 | RS |
| 6 | RW |
| 7 | E |
| 9 | D4 |
| 10 | D5 |
| 11 | D6 |
| 12 | D7 |
Przypisanie poszczególnych pinów można zdefiniować dowolnie w oprogramowaniu.
Do połączenia wyświetlacza z Arduino wykorzystana została płytka typu breadboard (płytka stykowa) oraz odpowiednie przewody (pozyskane z przewodu typu skrętka – ale uwaga – nie każda skrętka się nadaje).
Do pinu VO wyświetlacza należy podłączyć potencjometr (10k), za pomocą którego regulować będziemy kontrast.
Program
Biblioteka odpowiedzialna za obsługę wyświetlacza LCD nosi nazwę LiquidCrystal.
Do sprawdzenia jej działania skorzystamy z przykładu dostępnego w środowisku Arduino.
Otwieramy plik File -> Sketchbook -> Examples -> Library-LiquidCrystal -> SerialDisplay. W linii:
LiquidCrystal lcd(5, 6, 7, 9, 10, 11, 12);
definiujemy połączenia płytki z wyświetlaczem. Zapisujemy przykład i klikamy w Upload to I/O Board.
Sprawdzamy działanie
Program jest już załadowany do mikrokontrolera. Teraz możemy sprawdzić, czy wszystko działa jak należy.
Na pasku narzędziowym klikamy w Serial Monitor, wpisujemy dowolny tekst w polu tekstowym obok przycisku Send i klikamy w ten przycisk. Jeśli układ działa, na wyświetlaczu pojawi się wpisany tekst.

Freeduino, LCD, płytka stykowa
Biblioteka LiquidCrystal
Wszystko zadziałało jak należy, możemy więc przyjrzeć się bliżej bibliotece LiquidCrystal i spróbować napisać inny program. W skład biblioteki wchodzą funkcje:
LiquidCrystal()
Opis:
Tworzy zmienną typu LiquidCrystal. Funkcja ta inicjuje wyświetlacz.
Składnia:
LiquidCrystal (rs, rw, enable, d4, d5, d6, d7) LiquidCrystal (rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
Parametry:
rs: numer pinu Arduino podłączonego do sygnału RS wyświetlacza LCD
rw: numer pinu Arduino podłączonego do sygnału RW wyświetlacza LCD
enable: numer pinu Arduino podłączonego do sygnału E wyświetlacza LCD
d0, d1, d2, d3, d4, d5, d6, d7: numery pinów Arduino podłączonych do do odpowiednich sygnałów wyświetlacza LCD . d0, d1, d2 oraz d3 są opcjonalne; jeśli zostaną pominięte, wyświetlacz będzie sterowany z wykorzystaniem czterech linii danych (d4, d5, d6, d7).
clear()
Opis:
Czyści ekran wyświetlacza oraz umieszcza kursor w jego lewym, górnym rogu.
Składnia:
lcd.clear()
Parametry:
lcd: zmienna typu LiquidCrystal
home()
Opis:
Umieszcza kursor w lewym, górnym rogu wyświetlacza (bez czyszczenia ekranu).
Składnia:
lcd.home()
Parametry:
lcd: zmienna typu LiquidCrystal
setCursor()
Opis:
Umieszcza kursor na wybranej pozycji.
Składnia:
lcd.setCursor(col, row)
Parametry:
lcd: zmienna typu LiquidCrystal
col: kolumna, w której ma znaleźć się kursor (pierwsza kolumna ma numer 0, druga 1 itd.)
row: wiersz, w którym ma znaleźć się kursor (pierwszy wiersz ma numer 0)
write()
Opis:
Wypisuje jeden znak na wyświetlaczu (w miejscu, gdzie aktualnie znajduje się kursor).
Składnia:
lcd.write(data)
Parametry:
lcd: zmienna typu LiquidCrystal
data: znak, który ma być wypisany na wyświetlaczu
print()
Opis:
Wypisuje tekst na wyświetlaczu (zaczynając od miejsca, gdzie aktualnie znajduje się kursor).
Składnia:
lcd.print(data) lcd.print(data, BASE)
Parametry:
lcd: zmienna typu LiquidCrystal
data: tekst do wypisania (może to być znak, liczba lub tekst)
BASE (parametr opcjonalny): określa w jakim formacie wypisywane mają być liczby: BIN dla formatu binarnego, DEC dla formatu dziesiętnego, OCT dla formatu ósemkowego, HEX dla formatu szesnastkowego.
Przykład
Proponuję, aby każdy samodzielnie uruchomił i przeanalizował poniższy przykład.
#include <LiquidCrystal.h> LiquidCrystal lcd(5, 6, 7, 9, 10, 11, 12); int x = 0, y = 0; int z = 1; void setup() { lcd.clear(); } void loop() { lcd.setCursor(x,y); lcd.print(x,HEX); lcd.setCursor(x,y); x += z; if(x == 15) { z = -1; y = 1; } else if(x == 0) { z = 1; y = 0; } delay(150); lcd.write(' '); }


(głosów: 3, średnia ocen: 4,67)
6 komentarzy do “Arduino – obsługa wyświetlacza LCD”
Witam. Jak sie zabrać za LCD 4×16 mam taki.
http://sklep.avt.com.pl/photo/_pdf/LED1604NEGBLUE.pdf
Z korzystałem z jakiegoś przykładu ale przypisałem dle 4 linii i wyświetlało mi tekst w 3 i 4 lini od połowy.
Pozdrawiam.
Ten wyświetlacz wyposażony jest w nieco inny sterownik (KS0066).
Spróbuj ze zmodyfikowaną pod ten sterownik biblioteką LCD4Bit:
http://lutingaia.free.fr/LCD4Bit.zip
Szkoda ,że link nie działa.
Ja zrobić na LCD własny znak.
Rzeczywiście link nie działa. Tutaj znajdziesz rozwiązanie:
http://www.danplanet.com/home/81-hardware/78-driving-a-4-bit-lcd-with-an-arduino
Własny znak na LCD wygenerujesz tutaj:
http://icontexto.com/charactercreator/
A powiedz mi, drogi Kolego – dużo by było zabawy z podpięciem do Arduino dowolnego wyświetlacza LCD (nie wyprodukowanego z myślą o takim zastosowaniu)? Np wyciągniętego z cyfrowej ramki na zdjęcia?
@Łukasz, musisz posiadać dokumentacje takiego wyświetlacza. Jeśli jest tam jakiś standardowy sterownik, to pewni znajdziesz nawet bibliotekę do jego obsługi, ale jeśli nie ma, to musisz go sam oprogramować od zera (do tego właśnie ta dokumentacja).