W celu ustanowienia dobrej komunikacji między światem ludzkim a światem maszyn istotną rolę odgrywają wyświetlacze. Dlatego są ważną częścią systemów wbudowanych. Jednostki wyświetlające - duże lub małe, działają na tej samej zasadzie. Oprócz skomplikowanych jednostek wyświetlających, takich jak wyświetlacze graficzne i wyświetlacze 3D, należy umieć pracować z prostymi wyświetlaczami, takimi jak jednostki 16x1 i 16x2. Wyświetlacz 16x1 będzie miał 16 znaków i będzie znajdował się w jednej linii. 16x2 LCD będzie miał 32 znaków w łącznej 16in 1 st linii i kolejne 16 w 2 ndlinia. Tutaj należy zrozumieć, że w każdym znaku jest 5x10 = 50 pikseli, więc aby wyświetlić jeden znak, wszystkie 50 pikseli musi współpracować. Ale nie musimy się tym martwić, ponieważ w jednostce wyświetlacza znajduje się inny kontroler (HD44780), który kontroluje piksele. (widać to na wyświetlaczu LCD, jest to podbite oko z tyłu).
Wymagane składniki
Sprzęt komputerowy:
Mikrokontroler ATmega32
Zasilanie (5 V)
Programator AVR-ISP
JHD_162ALCD (LCD 16x2)
Kondensator 100uF.
Oprogramowanie:
Atmel Studio 6.1
Magia Progisp lub Flash
Schemat obwodu i wyjaśnienie
Jak pokazano na wyświetlaczu LCD łączącym się z obwodem ATmega32, widać, że PORTA z ATMEGA32 jest podłączony do portu danych LCD. W tym miejscu należy pamiętać o wyłączeniu komunikacji JTAG w PORTC ATMEGA poprzez zmianę bajtów bezpiecznika, jeśli chcemy używać PORTC jako normalnego portu komunikacyjnego. W 16x2 LCD jest 16 pinów, jeśli jest podświetlenie, jeśli nie ma podświetlenia, będzie 14 pinów. Można zasilać lub pozostawić piny podświetlenia. Teraz w 14 szpilki są kołki 8 danych (7-14 lub D0-D7), 2 szpilki zasilacza (1 i 2 lub VSS i VDD i GND i +5 V), 3 rd pin regulacji kontrastu (VEE umożliwia sprawdzenie grubości znaki powinny pokazano), 3 piny sterujące (RS i RW i E)
W powyższym obwodzie do interfejsu LCD 16x2 z mikrokontrolerem AVR można zauważyć, że wziąłem tylko dwa piny sterujące. Daje to elastyczność lepszego zrozumienia. Bit kontrastu i ODCZYT / ZAPIS nie są często używane, więc mogą być zwarte do masy. Dzięki temu wyświetlacz LCD ma najwyższy kontrast i tryb odczytu. Musimy tylko sterować pinami ENABLE i RS, aby odpowiednio wysyłać znaki i dane.
Poniżej przedstawiono połączenia między mikrokontrolerem ATmega32 a wyświetlaczem LCD 16x2:
PIN1 lub VSS - masa
PIN2 lub VDD lub VCC - moc + 5 V.
PIN3 lub VEE - szlifowany (daje maksymalny kontrast najlepszy dla początkującego)
PIN4 lub RS (Wybór rejestru) - PD6 mikrokontrolera
PIN5 lub RW (Read / Write) - masa (przełącza wyświetlacz LCD w tryb odczytu, ułatwiając komunikację użytkownikowi)
PIN6 lub E (Enable) - PD5 mikrokontrolera
PIN7 lub D0 - PA0 mikrokontrolera
PIN8 lub D1 - PA1
PIN9 lub D2 - PA2
PIN10 lub D3 - PA3
PIN11 lub D4 - PA4
PIN12 lub D5 - PA5
PIN13 lub D6 - PA6
PIN14 lub D7 - PA7
W układzie widać, że użyliśmy komunikacji 8-bitowej (D0-D7), jednak nie jest to obowiązkowe i możemy również użyć komunikacji 4-bitowej (D4-D7), ale przy 4-bitowej komunikacji program staje się nieco skomplikowany dla początkujących, więc po prostu poszliśmy z 8-bitowa komunikacja.
Czyli z samej obserwacji z powyższej tabeli podłączamy 10 pinów LCD do kontrolera, w którym 8 pinów to pin danych i 2 pin do sterowania.
Pracujący
Aby rozpocząć, musisz znać funkcje 10 pinów wyświetlacza LCD 16x2 (8 pinów danych + 2 pinów sterujących). 8 pinów danych służy do wysyłania danych lub poleceń do LCD. W dwóch pinach sterujących:
1. Pin RS (Register selection) służy do informowania LCD, czy wysyłamy do niego dane, czy komendę.
Na przykład:
W powyższej tabeli pierwsza dla portu danych (D7-D0) wartość „0b0010 1000 lub 0x28” mówi wyświetlaczowi LCD, aby wyświetlał symbol „(”. W tabeli 2 ta sama wartość 0x28 oznacza wyświetlacz LCD „jesteś wyświetlaczem LCD 5x7 punktów i zachowuj się jak jeden ”, więc dla tej samej wartości użytkownik może zdefiniować dwie rzeczy, teraz ta sytuacja jest neutralizowana przez pin wyboru rejestru, jeśli pin RS jest ustawiony na niskim poziomie to LCD rozumie, że wysyłamy polecenie. Jeśli ustawimy pin RS na wysoki to Wyświetlacz LCD rozumie, że przesyłamy dane, dlatego w obu przypadkach wyświetlacz LCD uwzględnia wartość portu danych zgodnie z wartością styku RS.
2. Styk E (Enable) służy po prostu do informowania „diody LED wskaźnika zasilania komputera”, ten styk jest ustawiony na stan wysoki, aby poinformować wyświetlacz LCD „o odebraniu danych z portu danych kontrolera”. Gdy ten pin przechodzi od niskiego do wysokiego, wyświetlacz LCD przetwarza odebrane dane i wyświetla odpowiedni wynik. Więc ten pin jest ustawiony na wysoki przed wysłaniem danych i rozebrany do masy po wysłaniu danych.
Teraz po podłączeniu sprzętu uruchom Atmel Studio i rozpocznij nowy projekt do napisania programu, teraz otwórz ekran programowania i zacznij pisać program. Program musi być zgodny z poniższym.
Najpierw mówimy kontrolerowi, których portów używamy do przesyłania danych i sterowania wyświetlaczem LCD. Następnie powiedz kontrolerowi, kiedy wysłać dane lub polecenie, grając z pinami RS i E.
Krótkie wyjaśnienie pojęć używanych w programie:
1. E jest ustawione w stan wysoki (mówi LCD, że ma odbierać dane), a RS jest ustawione na niskim poziomie (mówiąc wyświetlaczowi LCD, że wydajemy polecenie)
2. Nadanie wartości 0x01 do portu danych jako polecenie wyczyszczenia ekranu
3. E jest ustawione w stan wysoki (mówi wyświetlaczowi LCD, że ma odebrać dane), a RS jest w stanie wysokim (informując wyświetlacz LCD, że podajemy dane)
4. Pobranie ciągu znaków i wysłanie każdego znaku w łańcuchu jeden po drugim.
5. E jest niski (informuje LCD, że zakończyliśmy wysyłanie danych)
6. Po ostatniej komendzie wyświetlacz LCD kończy komunikację i przetwarza dane oraz wyświetla ciąg znaków na ekranie.
W tym scenariuszu będziemy wysyłać postacie jeden po drugim. Znaki są nadawane LCD za pomocą kodów ASCII (amerykański standard Code for Information Interchange).
Tabela kodów ASCII jest pokazana powyżej. Aby na wyświetlaczu LCD pojawił się znak „@”, musimy wysłać kod szesnastkowy „64”. Jeśli wyślemy '0x62' do LCD, pokaże się symbol '>'. W ten sposób wyślemy odpowiednie kody do wyświetlacza LCD, aby wyświetlić nazwę.
Sposób komunikacji między wyświetlaczem LCD a mikrokontrolerem ATmega32 AVR najlepiej wyjaśnić krok po kroku w kodzie C poniżej,