Arduino – obsługa wyświetlacza LCD

Wpis w kategorii [ Arduino ]

Wyświetlacz LCDAlfanumeryczne 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

Opis wyprowadzeń wyświetlacza LCD

Na innym:

Opis wyświetlacza LCD

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.

Arduino - wyświetlacz LCD

Arduino - wyświetlacz LCD

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

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(' ');
}
Oceń ten wpis:
1 gwiazdka2 gwiazdki3 gwiazdki4 gwiazdki5 gwiazdek (głosów: 3, średnia ocen: 4,67)
Loading ... Loading ...
Wyświetleń: 7 313
Tagi: [ , , , ]

Podobne artykuły

Możesz śledzić komentarze do tego wpisu poprzez kanał RSS 2.0. Możesz także dodać własny komentarz, lub trackback z własnej strony WWW.

6 komentarzy do “Arduino – obsługa wyświetlacza LCD”

  • pasta20 (18 sierpnia, 2010, 2:42)

    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.

  • michal (18 sierpnia, 2010, 8:43)

    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

  • pasta20 (18 sierpnia, 2010, 10:35)

    Szkoda ,że link nie działa.
    Ja zrobić na LCD własny znak.

  • michal (18 sierpnia, 2010, 14:47)

    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/

  • Łukasz Więcek - myDIY.pl (20 grudnia, 2011, 14:25)

    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?

  • michal (21 grudnia, 2011, 20:41)

    @Ł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).

Dodaj komentarz