K U R S
Podstawy projektowania systemów
mikroprocesorowych, część 8
Jednym z podstawowych elementÛw interfejsu uÅ‚ytkownika
w systemach cyfrowych jest klawiatura. W tej czÍÅ›ci
cyklu pokazujemy, w jaki sposÛb doÅ‚Ä…czyĘ i jak
obsługiwaĘ lokalne klawiatury o stykach dołączanych
bezpoÅ›rednio do portÛw mikrokontrolera.
tur matrycowych. Obec- wpÅ‚ywa rÛwnieÅ‚ na prostotÍ oprog-
nie w ukÅ‚adach potrzebujÄ…- ramowania. Detekcja naciÅ›niÍcia
cych duÅ‚ej liczby klawiszy co- przycisku odbywa siÍ na zasadzie
raz popularniejsze staje siÍ wyko- odczytu stanu konkretnej linii por-
rzystanie gotowych klawiatur tu - ì0î oznacza klawisz wciÅ›niÍ-
z komputerÛw PC. ty. UwzglÍdniajÄ…c zjawiska Å‚Ä…cze-
JeÅ‚eli w projektowanym systemie niowe (drgania stykÛw) obsÅ‚uga
Obsługa klawiatury nie jest potrzebna duła liczba kla- programowa mołe byĘ identyczna
ChociaÅ‚ klawiatura bez wÄ…tp- wiszy, wykorzystuje siÍ bezpoÅ›red- jak omÛwiona wczeÅ›niej dla in-
ienia naleÅ‚y do grupy omÛwionych nie poÅ‚Ä…czenie mikrowyÅ‚Ä…cznikÛw nych elementÛw stykowych. Nale-
w poprzednim odcinku elementÛw tworzÄ…cych klawiaturÍ do linii por- Å‚y jedynie zwielokrotniĘ liczbÍ po-
stykowych, to jednak sposÛb obsÅ‚u- tu mikrokontrolera. SytuacjÍ takÄ… mocniczych zmiennych odpowiada-
gi duÅ‚ej liczby przyciskÛw jest za- przedstawiono na rys. 27. PoÅ‚Ä…cze- jÄ…cych liczbie stosowanych klawi-
gadnieniem nieco bardziej skompli- nie wykonano bezpośrednio, bez szy. Wadą prezentowanego układu
kowanym (choĘ przy niewielkiej Å‚adnych dodatkowych rezystorÛw jest koniecznośĘ zarezerwowania
liczbie przyciskÛw sposÛb obsÅ‚ugi podciÄ…gajÄ…cych (oczywiÅ›cie, o ile jednej linii portu mikrokontrolera
nie rÛÅ‚ni siÍ od obsÅ‚ugi pojedyn- wykorzystywane linie posiadajÄ… re- dla jednego klawisza i zwiÄ…zane
czych elementÛw stykowych). Kla- zystory wewnÍtrzne), gdyÅ‚ umiesz- z tym trudnoÅ›ci wygospodarowania
wiatura jest jednym z najpopular- czona zazwyczaj w pobliÅ‚u mikro- linii sygnaÅ‚owych przy wiÍkszej
niejszych urzÄ…dzeÒ wejÅ›ciowych kontrolera klawiatura nie jest na- liczbie klawiszy i innych urzÄ…dzeÒ
umoÅ‚liwiajÄ…cych komunikacjÍ uÅ‚yt- raÅ‚ona na zakÅ‚Ûcenia oraz nie ma korzystajÄ…cych z portÛw mikrokont-
kownika z systemem mikroproceso- koniecznoÅ›ci stosowania prÄ…dÛw rolera.
rowym i wpÅ‚ywanie na sposÛb je- gwarantujÄ…cych samooczyszczanie Na rys. 28 przedstawiono nie-
go dziaÅ‚ania. W zaleÅ‚noÅ›ci od fun- stykÛw (nastÍpuje ono w sposÛb co bardziej ekonomiczne rozwiÄ…za-
kcji pełnionej przez dany system mechaniczny, wskutek działania nie. Linie jednego portu są wyko-
klawiatura mołe osiągaĘ rozmiary znacznej siły nacisku palca). Pros- rzystywane przez dwa urządzenia
ukÅ‚adu kilkunastu czy kilkudziesiÍ- tota ukÅ‚adowa tego rozwiÄ…zania - w tym przypadku jednym urzÄ…-
ciu klawiszy. W zalełności od licz-
by klawiszy zmienia siÍ takÅ‚e spo-
sÛb obsÅ‚ugi programowej, poczyna-
jąc od bezpośredniego odczytu sta-
nu portu, a koÒczÄ…c na rozbudowa-
nych procedurach obsługi klawia-
Rys. 27 Rys. 28
Elektronika Praktyczna 10/2003
88
K U R S
Na rys. 29 przedstawiono spo-
List. 10. Procedura obługująca prostą klawiaturę pokazaną na rys. 28
sÛb doÅ‚Ä…czenia klawiatury do mik-
;KLAWISZE - zmienna bajtowa przechowująca stan klawiszy (1 - naciśnięty)
;BUFOR - zmienna bajtowa przechowująca daną do wysłania do zatrzasku rokontrolera z wykorzystaniem
wspÛlnych linii z innym urzÄ…dze-
;sekwencje napisano jako podprogramy wywoływane rozkazem LCALL
niem, ktÛrym jest... rÛwnieÅ‚ kla-
KLAWIATURA:
wiatura! Przedstawiony na rysun-
MOV P1,#0FFH ;ustawienie linii portu P1
ku ukÅ‚ad podÅ‚Ä…czenia przyciskÛw
CLR P3.0 ;zerowanie linii P3.0
tworzy klawiaturÍ matrycowÄ…. Cha-
MOV A,P1 ;odczyt stanu linii
rakterystycznÄ… cechÄ… takiego roz-
CPL A ;negacja bitów (aby uzyskać 1 dla naciśniętego klawisza)
wiÄ…zania jest moÅ‚liwośĘ wyrÛÅ‚nie-
MOV KLAWISZE,A ;zapamiętanie stanu klawiatury
nia na schemacie wierszy i ko-
SETB P3.0 ;ustawienie linii P3.0 (aby naciskanie klawiszy nie
lumn, na przeciÍciu ktÛrych znaj-
;wpływało na stan linii portu P1
dujÄ… siÍ elementy zwierajÄ…ce
RET ;powrót do programu głównego
(przyciski). Mołliwa do obsłułenia
liczba klawiszy jest zalełna od
ZATRZASK:
liczby wierszy i kolumn matrycy,
MOV P1,BUFOR ;przesÅ‚anie danych do portu P1 i jest rÛwna iloczynowi tych
dwÛch wartoÅ›ci.
SETB P3.7 ;generacja sygnału strobującego
CLR P3.7 ;(należy pamiętać o wyzerowaniu linii P3.7 po resecie
Zasada działania układu jest
;mikrokontrolera - w części programu inicjującej
nastÍpujÄ…ca: odczytywanie stanu
;zmienne i rejestry)
klawiszy odbywa siÍ w sposÛb
RET ;powrót do programu głównego
grupowy, tzn. jednocześnie odczy-
dzeniem jest klawiatura, natomiast UkÅ‚ad dziaÅ‚aÅ‚by rÛwnieÅ‚ popra- tywany jest stan jednego rzÍdu
drugim ukÅ‚ad zatrzaskowy (latch) wnie, gdyby pominiÍto zastosowa- klawiszy (jeden wiersz lub jedna
74LS573 (moÅ‚e to byĘ takÅ‚e do- ne diody wÅ‚Ä…czone szeregowo kolumna) - zaÅ‚ÛÅ‚my, Å‚e w naszym
wolny inny ukÅ‚ad posiadajÄ…cy wej- z przyciskami, jednak mogÅ‚yby wy- ukÅ‚adzie bÍdziemy klawiaturÍ
ście zezwalająco/strobujące i pozo- stąpiĘ przekłamania przy zapisie sprawdzaĘ odczytując stan klawi-
stajÄ…cy obojÍtny na stan linii, gdy do rejestru, gdyby w czasie trans- szy pogrupowanych w wiersze
wejÅ›cie to jest nieaktywne). Przed- misji kilka przyciskÛw byÅ‚o naciÅ›- (zgodnie z kolejnÄ… numeracjÄ… na
stawiony schemat uwzglÍdnia je- niÍtych rÛwnoczeÅ›nie. Dlatego teÅ‚ schemacie). W takiej konfiguracji
dynie klawiaturÍ czteroprzyciskowÄ… lepiej wspomniane diody zastoso- linie P1.4 do P1.7 bÍdÄ… pracowa-
(dla zachowania czytelnoÅ›ci rysun- waĘ. PrzykÅ‚adowÄ… sekwencjÍ roz- Å‚y jako wejÅ›cie, natomiast linie
ku), ale nic nie stoi na przeszko- kazÛw obsÅ‚ugujÄ…cych wspomniany P1.0 do P1.3 jako wyjÅ›cie (nie
dzie, aby podłączona klawiatura układ zamieszczono na list. 10. jest konieczne stosowanie rezysto-
wykorzystywała wszystkie osiem
List. 11. Program obsługi klawiatury matrycowej (schemat na rys. 29)
linii portu.
;KLAW1_8 - pomocnicza zmienna bajtowa pamiętająca stan klawiszy SW1
UkÅ‚ad ten dziaÅ‚a nastÍpujÄ…co:
; do SW8 (najmłodszy bit oznacza stan SW8, 1 oznacza
jełeli chcemy przesyłaĘ dane do ; klawisz wciśnięty)
;KLAW8_16 - pomocnicza zmienna bajtowa pamiętająca stan klawiszy SW8
rejestru zatrzaskowego, wÛwczas
; do SW16 (najmłodszy bit oznacza stan SW16, 1 oznacza
; klawisz wciśnięty)
konieczne jest ustawienie linii
P3.0 w stan wysoki. NastÍpnie
CZYTAJ_KLAWISZE: ;procedura wywoływana przez LCALL
MOV P1,#0FFH ;ustawienie linii portu P1 w stan wysoki
wysyłamy do portu P1 bajt prze-
znaczony do przesłania, a potem
CLR P1.3 ;wyzerowanie linii P1.3
MOV A,P1 ;odczyt stanu linii portu P1 (czytamy 1 wiersz)
generujemy sygnał strobujący (im-
SETB P1.3 ;ustawienie linii P1.3 (bo stan już odczytaliśmy)
puls): ustawiamy i zerujemy liniÍ CPL A ;negacja (aby 1 oznaczaÅ‚a wciÅ›niÄ™ty klawisz)
ANL A,#0F0H ;maskowanie młodszych 4 bitów - interesują nas starsze
P3.7 - zbocze opadajÄ…ce powoduje
MOV KLAW1_8,A ;zapamiętanie stanu 4 klawiszy
zatrzaÅ›niÍcie informacji w rejestrze
CLR P1.2 ;wyzerowanie linii P1.2
i pamiÍtanie jej gdy P3.7=0. Gdy
MOV A,P1 ;odczyt stanu linii portu P1 (czytamy 2 wiersz)
SETB P1.2 ;ustawienie linii P1.2
chcemy obsÅ‚uÅ‚yĘ klawiaturÍ, nale-
CPL A ;negacja
ły wpisaĘ do portu P1 wartośĘ
ANL A,#0F0H ;maskowanie
SWAP A ;zamienienie miejscami połówek bajtu (bo wiersz 2 to 4
0xFF (ustawienie wszystkich linii
;młodsze bity KLAW1_8)
w stan wysoki w celu wykorzysta- ORL A,KLAW1_8 ;połączenie informacji o obu wierszach
MOV KLAW1_8,A ;zapamiętanie stanu wszystkich ośmiu klawiszy
nia ich jako wejÅ›cia), a nastÍpnie
wyzerowaĘ liniÍ P3.0. JeÅ‚eli ktÛ- CLR P1.1 ;wyzerowanie linii P1.1
MOV A,P1 ;odczyt stanu linii portu P1 (czytamy 3 wiersz)
ryÅ› z klawiszy zostanie wciÅ›niÍty,
SETB P1.1 ;ustawienie linii P1.1
CPL A ;negacja
to odpowiednia linia portu P1 zo-
ANL A,#0F0H ;maskowanie
stanie wprowadzona w stan niski
MOV KLAW8_16,A ;zapamiętanie stanu 4 klawiszy (SW9-SW12)
(wskutek połączenia z linią P3.0
CLR P1.0 ;wyzerowanie linii P1.0
pozostajÄ…cÄ… w stanie niskim). Od- MOV A,P1 ;odczyt stanu linii portu P1 (czytamy 4 wiersz)
SETB P1.0 ;ustawienie linii P1.0
czytujÄ…c stan portu P1 odczytuje-
CPL A ;negacja
my zatem stany klawiszy (ì0î - ANL A,#0F0H ;maskowanie
SWAP A ;zamienienie miejscami połówek bajtu
klawisz wciÅ›niÍty) - po dokonaniu
ORL A,KLAW8_16 ;połączenie informacji o obu wierszach
MOV KLAW8_16,A ;zapamiętanie stanu wszystkich ośmiu klawiszy
odczytu naleły z powrotem usta-
wiĘ liniÍ P3.0 w stan wysoki.
RET ;powrót do programu głównego
Elektronika Praktyczna 10/2003
89
K U R S
rÛw podciÄ…gajÄ…cych dla linii P1.0
i P1.1 mikrokontrolerÛw
AT89Cx051, gdył stan wysokiej
impedancji i stan wysoki sÄ… tu
nierozrÛÅ‚nialne - na pracÍ ukÅ‚adu
wpÅ‚ywa tylko stan niski). WstÍp-
nie naleły do portu P1 wpisaĘ
same jedynki (ustawiĘ wszystkie
linie), nastÍpnie moÅ‚emy przejśĘ
do odczytu pierwszego wiersza.
Dokonujemy tego zerujÄ…c progra-
mowo liniÍ P1.3 (linie P1.0 do
Rys. 29
P1.2 pozostajÄ… w stanie wysokim)
i odczytujÄ…c stan wyprowadzeÒ W przypadku naciÅ›niÍcia wiÍcej liczby klawiszy. RozwiÄ…zania prob-
P1.4...P1.7 - stan tych linii od- nił jednego klawisza istnieje niebez- lemu są dwa: mołna zastosowaĘ
zwierciedla stan klawiszy w pier- pieczeÒstwo odczytania przez ukÅ‚ad specjalizowany ukÅ‚ad scalony lub
wszym wierszu (SW1...SW4) - dziwnej kombinacji naciÅ›niÍtych kla- lepiej odpowiednio oprogramowany
przykładowo stan niski na linii wiszy (podobna cecha jak w ukła- drugi mikrokontroler (rozwiązanie
P1.6 oznacza wciÅ›niÍcie SW2. dzie z rys. 28, choĘ tutaj nie zosta- niejednokrotnie taÒsze i elastyczniej-
W podobny sposÛb postÍpujemy nÄ… przekÅ‚amane Å‚adne transmitowa- sze) odpowiedzialny tylko i wyÅ‚Ä…cz-
dla pozostałych wierszy, kolejno ne dane - tylko klawiatura korzysta nie za wykrywanie faktu naciska-
zerujÄ…c pojedynczo linie P1.2, z tych linii portu). Aby temu zapo- nia klawiszy i komunikujÄ…cy siÍ
P1.1 i P1.0 (pozostaÅ‚e linie w sta- biec moÅ‚na zastosowaĘ diodÍ szere- z gÅ‚Ûwnym mikrokontrolerem za po-
nie wysokim) i odczytując stan gowo włączoną z kałdym klawiszem mocą niewielkiej liczby linii (jed-
czterech starszych linii portu. (patrz rys. 28). W naszym przypad- na, gÛra dwie linie) lub zastoso-
RozwiÄ…zanie programowe bÍdzie ku (odczytywane wiersze klawiatu- waĘ to samo rozwiÄ…zanie w goto-
polegaĘ na jednorazowym odczy- ry) diody naleły włączyĘ katodami wej postaci dostarczanej przez wie-
taniu stanu wszystkich klawiszy, w kierunku linii wierszy lu producentÛw sprzÍtu komputero-
a nastÍpnie przekazaniu informacji (P1.0...P1.3). GdybyÅ›my klawiaturÍ wego - standardowÄ… klawiaturÍ
o naciÅ›niÍciach do programu gÅ‚Ûw- chcieli odczytywaĘ kolumnami, to komputera PC-AT. Zastosowanie
nego (przez zapamiÍtanie w po- naleÅ‚y diody podÅ‚Ä…czyĘ odwrotnie. klawiatury PC ma tÍ zaletÍ, Å‚e jest
mocniczej zmiennej). Przykładową Zastosowanie klawiatury matry- stosunkowo tanie, a takłe bardzo
procedurÍ obsÅ‚ugi klawiatury mat- cowej w systemie mikroprocesoro- Å‚atwe w adaptacji i estetyczne - od-
rycowej zamieszczono na list. 11. wym pozwala na zaspokojenie na- pada koniecznośĘ borykania siÍ
Gdyby zaistniała potrzeba od- wet bardzo rozbudowanych potrzeb z rozwiązaniami mechanicznymi
czytywania stanu klawiatury ko- dotyczÄ…cych klawiatury. IstniejÄ… jed- i obudowÄ… klawiatury. JedynÄ… wadÄ…
lumnami, to zmieniÄ… siÍ jedynie nak aplikacje, w ktÛrych zastosowa- takiego rozwiÄ…zania jest koniecznośĘ
funkcje wyprowadzeÒ: kolejno ze- nie rozbudowanego ukÅ‚adu klawia- zapoznania siÍ z dośĘ nietypowym
rowaĘ bÍdziemy wyprowadzenia tury jest niemoÅ‚liwe ze wzglÍdu na sposobem komunikacji klawiatury
P1.4...P1.7, a odczytywaĘ P1.0...P1.3 wykorzystanie w innych celach li- z mikroprocesorem. SzczegÛÅ‚y przed-
(tym razem konieczne bÍdÄ… rezys- nii portÛw mikrokontrolera - po stawimy za miesiÄ…c.
tory podciągające dla P1.0 i P1.1 prostu brakuje nam wolnych linii Paweł Hadam, AVT
mikrokontrolerÛw AT89Cx051). niezbÍdnych do obsÅ‚ugi duÅ‚ej pawel.hadam@ep.com.pl
Elektronika Praktyczna 10/2003
90
Wyszukiwarka
Podobne podstrony:
Podstawy projektowania systemów mikroprocesorowych, cz 3Podstawy projektowania systemów mikroprocesorowych, cz 2Podstawy projektowania systemów mikroprocesorowych, cz 9Podstawy projektowania systemów mikroprocesorowych, cz 7Podstawy projektowania systemów mikroprocesorowych, cz 5projektowanie systemow informatycznychPodstawy projektowania i implementacji?z?nychPodstawy projektowania linii kolejowychzarzadzanie projektami systemowymi,6więcej podobnych podstron