Klawiatury są szeroko stosowanymi urządzeniami wejściowymi używanymi w różnych projektach elektronicznych i wbudowanych. Są używane do pobierania danych wejściowych w postaci liczb i albhabetów i wprowadzają je do systemu w celu dalszego przetwarzania. W tym samouczku połączymy klawiaturę matrycową 4x4 z mikrokontrolerem 8051.
Klawiatura matrycowa 4X4
Zanim połączymy klawiaturę z mikrokontrolerem, najpierw musimy zrozumieć, jak to działa. Klawiatura matrycowa składa się z zestawu przycisków, które są ze sobą połączone. Podobnie jak w naszym przypadku korzystamy z klawiatury matrycowej 4X4, w której znajdują się 4 przyciski w każdym z czterech rzędów. Zaciski przycisków są połączone zgodnie ze schematem. W pierwszym rzędzie jeden terminal wszystkich 4 przycisków jest połączony razem, a drugi terminal 4 przycisków reprezentuje każdą z 4 kolumn, to samo dotyczy każdego rzędu. Otrzymujemy więc 8 terminali do połączenia z mikrokontrolerem.
Łączenie klawiatury z mikrokontrolerem 8051 (AT89S52)
Najpierw musimy połączyć moduł LCD, aby wyświetlić dane, które będą przesyłane przez KLAWIATURĘ, więc przed połączeniem się z KEYPADEM zapoznaj się z artykułem „Łączenie LCD z mikrokontrolerem 8051”.
Jak pokazano na powyższym schemacie obwodu, do interfejsu Manipulatorów musimy podłączyć 8 końcówek klawiatury do dowolnego portu (8 pinów) mikrokontrolera. Tak jak podłączyliśmy terminale klawiatury do portu 1 w 8051. Za każdym razem, gdy wciskamy dowolny przycisk, musimy uzyskać lokalizację tego przycisku, czyli odpowiedni ROW i COLUMN. Po uzyskaniu lokalizacji przycisku możemy odpowiednio wydrukować znak.
Teraz pytanie brzmi, jak uzyskać lokalizację wciśniętego przycisku? Wyjaśnię to w poniższych krokach, a także chcę, abyś spojrzał na kod:
1. Najpierw ustawiliśmy wszystkie wiersze na poziom logiczny 0, a wszystkie kolumny na poziom logiki 1.
2. Za każdym razem, gdy naciskamy przycisk, kolumna i wiersz odpowiadające temu przyciskowi zostają zwarte i powodują przejście odpowiedniej kolumny do poziomu logicznego 0. Ponieważ ta kolumna zostaje połączona (zwarta) z wierszem, który jest na poziomie logicznym 0. Otrzymujemy więc kolumna nr Zobacz funkcję main ().
3. Teraz musimy znaleźć numer wiersza, więc utworzyliśmy cztery funkcje odpowiadające każdej kolumnie. Podobnie jak w przypadku naciśnięcia dowolnego przycisku pierwszej kolumny, wywołujemy funkcję row_finder1 (), aby znaleźć wiersz nr.
4. W funkcji row_finder1 () odwróciliśmy poziomy logiczne, co oznacza, że teraz wszystkie wiersze mają wartość 1, a kolumny 0. Teraz wiersz naciśniętego przycisku powinien mieć wartość 0, ponieważ został połączony (zwarty) z kolumną, której przycisk jest naciśnięty, a wszystkie kolumny mają logikę 0. Więc przeskanowaliśmy wszystkie wiersze pod kątem 0.
5. Więc ilekroć znajdziemy Row na logice 0, oznacza to, że jest to rząd wciśniętego przycisku. Mamy więc teraz kolumnę nr (otrzymaną w kroku 2) i nr wiersza i możemy wydrukować nr. tego przycisku za pomocą funkcji lcd_data.
Ta sama procedura przebiega dla każdego naciśnięcia przycisku i używamy while (1), aby stale sprawdzać, czy przycisk jest naciśnięty, czy nie.