W tym tutorialu będziemy łączyć klawiaturę 4x4 (16 klawiszy) z mikrokontrolerem ATMEGA32A. Wiemy, że manipulator jest jednym z najważniejszych urządzeń wejściowych stosowanych w projektach elektronicznych. Klawiatura to jeden z najłatwiejszych sposobów wydawania poleceń lub instrukcji systemowi elektronicznemu.
Wymagane składniki
Sprzęt: ATMEGA32, zasilacz (5v), PROGRAMATOR AVR-ISP, JHD_162ALCD (16 * 2LCD), kondensator 100uF, kondensator 100nF, rezystor 10KΩ (8 sztuk).
Oprogramowanie: Atmel studio 6.1 lub Atmel studio 6.2, progisp lub flash magic.
Schemat obwodu i objaśnienie robocze
W obwodzie PORTB ATMEGA32 jest podłączony do portu danych LCD. W tym miejscu należy pamiętać o wyłączeniu komunikacji JTAG w PORTC ot 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) i 3 piny sterujące (RS i RW i E).
W obwodzie można zauważyć, że wziąłem tylko dwa piny sterujące, co daje elastyczność, bit kontrastu i odczyt / zapis nie są często używane, więc można je zwierać 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 wykonane dla LCD:
PIN1 lub VSS do masy
PIN2 lub VDD lub VCC do + 5 V.
PIN3 lub VEE do ziemi (daje maksymalny kontrast najlepszy dla początkującego)
PIN4 lub RS (wybór rejestru) do PD6 uC
PIN5 lub RW (odczyt / zapis) do masy (przełącza wyświetlacz LCD w tryb odczytu, ułatwiając komunikację użytkownikowi)
PIN6 lub E (Włącz) do PD5 uC
PIN7 lub D0 do PB0 z uC
PIN8 lub D1 do PB1 uC
PIN9 lub D2 do PB2 uC
PIN10 lub D3 do PB3 uC
PIN11 lub D4 do PB4 uC
PIN12 lub D5 do PB5 uC
PIN13 lub D6 do PB6 uC
PIN14 lub D7 do PB7 uC
W układzie widać, że użyliśmy komunikacji 8-bitowej (D0-D7), jednak nie jest to obowiązkowe, możemy użyć komunikacji 4-bitowej (D4-D7), ale przy 4-bitowej komunikacji program staje się nieco skomplikowany. Czyli z samej obserwacji powyższej tabeli podłączamy 10 pinów LCD do kontrolera, w którym 8 pinów to pinów danych i 2 pinów do sterowania.
Porozmawiajmy teraz o klawiaturze, klawiatura to nic innego jak klawisze multipleksowane. Przyciski są połączone w sposób multipleksowy w celu zmniejszenia wykorzystania pinów w systemie sterowania.
Rozważmy, że mamy klawiaturę 4x4, w tej klawiaturze mamy 16 przycisków, w normalnych przypadkach potrzebujemy 16 pinów kontrolera do interfejsu 16 przycisków, ale to nie jest dobre z punktu widzenia systemu sterowania. To użycie pinów można zmniejszyć, łącząc przyciski w formie multipleksu.
Załóżmy na przykład, że mamy 16 przycisków i chcemy dołączyć go do kontrolera, aby utworzyć klawiaturę, te klawisze są ułożone tak, jak pokazano na rysunku:
Przyciski te są połączone wspólnymi kolumnami, jak pokazano na rysunku:
Jak pokazano na rysunku, niezaznaczone końce każdych czterech przycisków są przeciągane razem, tworząc kolumnę, a więc dla 16 kluczy mamy cztery kolumny.
Jeśli zapomnimy o połączeniach kolumn powyżej i połączymy wspólne oznaczone końce co cztery przyciski razem, aby utworzyć rząd:
Jak pokazano na rysunku, dla 16 kluczy będziemy mieli cztery rzędy, jak pokazano na rysunku.
Teraz, gdy oboje są widziani razem, otrzymujemy coś podobnego do poniższego obwodu:
Tutaj połączyliśmy 16 kluczy w formie multipleksowanej, aby zmniejszyć użycie pinów kontrolera. W porównaniu do pierwszego przypadku połączonych 16 kluczy potrzebowaliśmy 16 pinów na kontrolerze, ale teraz po multipleksowaniu potrzebujemy po prostu 8 pinów kontrolera do podłączenia 16 kluczy.
Zwykle jest to przedstawione wewnątrz klawiatury:
Jak pokazano na powyższym rysunku, na powyższej klawiaturze znajduje się 16 klawiszy, a każdy z tych klawiszy reprezentuje przycisk w multipleksowanej konfiguracji przycisków. Istnieje również 8 pinów, jak pokazano na powyższym rysunku, symbolizujących połączenie multipleksowe.
Teraz do pracy:
Klawiatura tutaj ma cztery kolumny i cztery rzędy, do identyfikacji wciśniętego przycisku posłużymy się metodą odsyłaczy. Tutaj najpierw połączymy wszystkie kolumny lub wszystkie wiersze z vcc, więc jeśli wiersze są połączone ze wspólnym vcc, weźmiemy kolumny jako dane wejściowe do kontrolera.
Teraz po naciśnięciu pierwszego przycisku, jak pokazano na rysunku:
Następnie prąd przepływa przez obwód, jak pokazano na poniższym rysunku:
Mamy więc wysoki poziom C1 na naciśnięcie przycisku. W tym momencie zamierzamy przesunąć porty zasilania i wejścia, to znaczy zasilimy kolumny i weźmiemy wiersze jako dane wejściowe, W ten sposób nastąpi przepływ mocy, jak pokazano na poniższym rysunku:
Więc dla rzędu mamy R1 high.
Na razie mamy C1 wysoki w pierwszym przypadku i R1 wysoki w drugim, więc mamy matrycową pozycję przycisku, stąd cyfra „jeden”.
Jeśli zostanie naciśnięty drugi przycisk, będziemy mieli C1 jako kolumnę, ale wysoką logikę, którą otrzymujemy we wspólnej kolumnie, będziemy mieli 'R2'. Będziemy więc mieli C1 i R2, stąd macierzowe położenie drugiego przycisku.
Tak napiszemy program, osiem pinów manipulatora połączymy z ośmioma pinami kontrolera. Na początek zasilamy cztery piny kontrolera do zasilania czterech rzędów klawiatury, w tym momencie pozostałe cztery piny są traktowane jako wejścia. Kiedy przycisk zostanie naciśnięty, odpowiedni pin kolumny zostanie podniesiony, a więc pin kontrolera zostanie podciągnięty, zostanie to rozpoznane, aby zmienić wejście na moc i moc na wejście, więc będziemy mieć rzędy jako wejścia.
W ten sposób otrzymujemy przycisk wciśnięty przez użytkownika. Te adresy macierzy kierowane są na odpowiedni numer, który jest pokazywany na wyświetlaczu LCD.
Działanie klawiatury współpracującej z mikrokontrolerem avr jest wyjaśnione krok po kroku w kodzie C podanym poniżej. Można również sprawdzić: współpracę klawiatury z mikrokontrolerem 8051.