Wyświetlacze są najważniejszymi urządzeniami wyjściowymi w projektach wbudowanych i produktach elektronicznych. LCD 16x2 jest jednym z najczęściej używanych wyświetlaczy. 16x2 LCD oznacza, że istnieją dwa rzędy, w których można wyświetlić 16 znaków w wierszu, a każdy znak zajmuje miejsce matrycy 5X7 na wyświetlaczu LCD. W tym samouczku zamierzamy podłączyć moduł LCD 16X2 do mikrokontrolera 8051 (AT89S52). Połączenie LCD z mikrokontrolerem 8051 może wydawać się początkującym dość skomplikowane, ale po zrozumieniu koncepcji wyglądałoby to bardzo prosto i łatwo. Chociaż może to zająć trochę czasu, ponieważ musisz zrozumieć i podłączyć 16 pinów LCD do mikrokontrolera. Więc najpierw zrozummy 16 pinów modułu LCD.
Możemy podzielić go na pięć kategorii, kołki zasilania, kołki kontrastowe, kołki sterujące, kołki danych i kołki podświetlenia.
Kategoria |
Pin NO. |
Nazwa pinu |
Funkcjonować |
Piny zasilania |
1 |
VSS |
Pin uziemienia połączony z uziemieniem |
2 |
VDD lub Vcc |
Pin napięcia + 5 V. |
|
Kontrast Pin |
3 |
V0 lub VEE |
Ustawienie kontrastu, podłączone do Vcc przez rezystor zmienny. |
Kołki sterujące |
4 |
RS |
Zarejestruj Wybierz Pin, RS = 0 Tryb poleceń, RS = 1 Tryb danych |
5 |
RW |
Odczyt / zapis pin, RW = 0 Tryb zapisu, RW = 1 Tryb odczytu |
|
6 |
mi |
Włącz, wysoki do niskiego impulsu wymaga włączenia wyświetlacza LCD |
|
Piny danych |
7-14 |
D0-D7 |
Piny danych, przechowuje dane, które mają być wyświetlane na ekranie LCD lub instrukcje poleceń |
Piny podświetlenia |
15 |
LED + lub A |
Do zasilania podświetlenia + 5V |
16 |
LED- lub K. |
Podświetlenie ziemi |
Wszystkie piny są jasno zrozumiałe po ich nazwie i funkcjach, z wyjątkiem pinów sterujących, dlatego wyjaśniono je poniżej:
RS: RS jest pinem wyboru rejestru. Musimy ustawić go na 1, jeśli wysyłamy jakieś dane do wyświetlenia na LCD. I ustawimy ją na 0, jeśli wysyłamy jakąś instrukcję polecenia, taką jak wyczyść ekran (kod szesnastkowy 01).
RW: To jest pin do odczytu / zapisu, ustawimy go na 0, jeśli mamy zamiar zapisać jakieś dane na LCD. I ustaw na 1, jeśli czytamy z modułu LCD. Generalnie jest to ustawione na 0, ponieważ nie musimy czytać danych z LCD. Tylko jedna instrukcja „Uzyskaj stan LCD”, musi być przeczytana kilka razy.
E: Ten styk jest używany do włączania modułu, gdy zostanie mu podany impuls od wysokiego do niskiego. Należy podać impuls 450 ns. To przejście z HIGH do LOW sprawia, że moduł jest WŁĄCZONY.
Na wyświetlaczu LCD znajduje się kilka gotowych instrukcji poleceń, których użyliśmy w naszym programie poniżej do przygotowania wyświetlacza LCD (w funkcji lcd_init ()). Poniżej podano kilka ważnych instrukcji dotyczących poleceń:
Kod szesnastkowy |
Polecenie do rejestru instrukcji LCD |
0F |
LCD włączony, kursor włączony |
01 |
Czytelny ekran wyświetlacza |
02 |
Powrót do domu |
04 |
Zmniejsz kursor (przesuń kursor w lewo) |
06 |
Zwiększ kursor (przesuń kursor w prawo) |
05 |
Przesuń ekran w prawo |
07 |
Przesuń wyświetlacz w lewo |
0E |
Wyświetlacz włączony, kursor miga |
80 |
Wymuś kursor na początku pierwszej linii |
C0 |
Wymuś kursor na początku drugiej linii |
38 |
2 linie i matryca 5 × 7 |
83 |
Pozycja 1 linii kursora 3 |
3C |
Aktywuj drugą linię |
08 |
Wyświetlacz wyłączony, kursor wyłączony |
C1 |
Przejdź do drugiej linii, pozycja 1 |
OC |
Wyświetlacz włączony, kursor wyłączony |
C1 |
Przejdź do drugiej linii, pozycja 1 |
C2 |
Przejdź do drugiej linii, pozycja 2 |
Schemat obwodu i wyjaśnienie
Schemat połączenia LCD z mikrokontrolerem 8051 przedstawiono na powyższym rysunku. Jeśli masz podstawową wiedzę na temat 8051, musisz wiedzieć o EA (PIN 31), XTAL1 i XTAL2, pin RST (PIN 9), Vcc i pin uziemienia mikrokontrolera 8051. Użyłem tych pinów w powyższym obwodzie. Jeśli nie masz o tym pojęcia, polecam przeczytanie tego artykułu Łączenie diod LED z mikrokontrolerem 8051 przed przejściem przez interfejs LCD.
Więc oprócz tych powyższych pinów podłączyliśmy piny danych (D0-D7) LCD do mikrokontrolera Port 2 (P2_0 - P2_7). I piny sterujące RS, RW i E odpowiednio do pinu 12,13,14 (pin 2,3,4 portu 3) mikrokontrolera.
PIN 2 (VDD) i PIN 15 (zasilanie podświetlenia) wyświetlacza LCD są podłączone do napięcia (5 V), a PIN 1 (VSS) i PIN 16 (masa podświetlenia) są podłączone do masy.
Pin 3 (V0) jest podłączony do napięcia (Vcc) przez rezystor zmienny 10k w celu regulacji kontrastu wyświetlacza LCD. Środkowa odnoga rezystora zmiennego jest podłączona do PINu 3, a pozostałe dwie nogi są podłączone do zasilania i masy.
Objaśnienie kodu
Próbowałem wyjaśnić kod za pomocą komentarzy (w samym kodzie).
Jak wyjaśniłem wcześniej o trybie poleceń i trybie danych, widać, że podczas wysyłania polecenia (funkcja lcd_cmd) ustawiliśmy RS = 0, RW = 0 i impuls od HIGH do LOW jest podawany E, ustawiając go na 1, a następnie 0. Również podczas wysyłania danych (funkcja lcd_data) do LCD ustawiliśmy RS = 1, RW = 0 i impuls od WYSOKI do NISKIE jest podawany do E, zmieniając go na 1 do 0. Funkcja msdelay () została utworzona, aby stworzyć opóźnienie w milisekundach i często wywoływany w programie, nazywany jest tak, aby moduł LCD miał wystarczająco dużo czasu na wykonanie wewnętrznej operacji i poleceń.
Została utworzona pętla while do drukowania łańcucha, która za każdym razem wywołuje funkcję lcd_data, aby wypisać znak aż do ostatniego znaku (terminator zerowy - „\ 0”).
Skorzystaliśmy z funkcji lcd_init (), aby przygotować wyświetlacz LCD, używając instrukcji zaprogramowanych poleceń (wyjaśnionych powyżej).