|
|
mikrokontrolery.net |
|||||||||||||||||||||||
|
Odczyt klawiatury matrycowej 4x4 Popularnym elementem układu mikroprocesorowego jest klawiatura matrycowa. Połączenie większej ilości klawiszy w matrycę pozwala na zaoszczędzenie wyprowadzeń mikrokontrolera. I tak klawiatura składająca się z 16 przycisków wymaga użycia 8 linii mikrokontrolera. Przedstawiony poniżej program odczytuje stan klawiatury podłączonej do portu PORTB. Kolumny klawiatury są podłączone do linii PB0-PB3 natomiast wiersze do PB4-PB7. W pliku kbd4x4.h zawarte są makroinstrukcje ułatwiające operacje na wyprowadzeniach portu sterujących wierszami i odczytywania stanu wyprowadzeń kolumn klawiatury. Podstawową rzeczą jaką musimy zrobić jest określenie portu do którego podłączona jest klawiatura. Dokonujemy tego tworząc następujące 3 definicje :
Następnie tworzymy definicje poszczególnych wyprowadzeń wierszy i kolumn :
Przykładowa makrodefinicja służąca do ustawienia, bądź wyzerowania wyprowadzenia wiersza klawiatury wygląda następująco :
natomiast makrodefinicja umożliwiająca odczyt stanu kolumny przedstawiona jest poniżej :
Odczyt jednego wiersza klawiatury przebiega w następujący sposób :
W pierwszej kolejności należy wyzerować wyprowadzenie ROW1. Ze względu na pojemność portu zanim przystąpimy do odczytu należy odczekać minimum 1 cykl zegarowy (w zależności od typu mikrokontrolera oraz od częstotliwości taktowania wymagany czas może być inny). Po odczekaniu aż na wyprowadzeniu ustali się stan niski możemy przystąpić do odczytu poszczególnych kolumn. Wykrycie na wyprowadzeniu COLx stanu niskiego oznacza wciśnięcie klawisza znajdującego się na "skrzyżowaniu" odpowiednich linii COL i ROW. W takim przypadku do zmiennej stan_klawiszy zapisywany jest umowny numer klawisza, który jest zwracany przez funkcję getkbd(). Pliki do pobrania : |
|||||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
(c) 2004-2008 Radosław Kwiecień |