klawatura.pdf

(688 KB) Pobierz
54840714 UNPDF
BASCOM College
Klawiatura szesnastkowa
do systemów mikroprocesorowych
2503
Do czego to służy?
Prawie każdy system mikroprocesorowy mu−
si posiadać wbudowane układy, które umoż−
liwiają mu komunikację ze światem zewnę−
trznym. Procesor musi skądś otrzymywać da−
ne, przetwarzać je i wysyłać dalej, najczę−
ściej do interfejsu czytelnego dla człowieka.
Najlepszym przykładem takiego systemu jest
komputer PC. Posiada on szereg układów
przechwytujących informację ze świata ze−
wnętrznego, czyli klawiaturę, myszkę, mo−
dem telefoniczny lub skaner. Informacja
przetworzona przez komputer przekazywana
jest jego użytkownikowi za pomocą monito−
ra, karty dźwiękowej, lub drukarki. O ile
jednak dodawanie dodatkowych układów ko−
munikacyjnych do komputera nie sprawia
prawie nigdy większych trudności, to inaczej
ma się sprawa z miniaturowymi komputerka−
mi jakimi są nasze systemy mikroprocesoro−
we. Przeszkodą jest tu przede wszystkim
ograniczona ilość wyprowadzeń nawet “naj−
większego” procesora. Na szczęście, projek−
tanci systemów mikroprocesorowych wymy−
ślili kilka standardów przekazywania infor−
macji pomiędzy elementami systemu, a także
do i ze świata zewnętrznego. Jednym z naj−
popularniejszych sposobów transmisji da−
nych jest dwuprzewodowa magistrala I 2 C.
Specyfikacją magistrali I 2 C zajmiemy się
w najbliższym czasie, a na razie zadowolimy
się tylko informacją, że w dwuprzewodowej
magistrali dane mogą być przekazywane
w obydwóch kierunkach: od układu nadrzęd−
nego (master) do układów podporządkowa−
nych (slave), a także w odwrotnym kierunku.
Magistrala I 2 C została tak zaprojektowana,
że w zasadzie nic nie ogranicza ilości dołą−
czonych do niej urządzeń. Warunek jest je−
den, a jego niespełnienie może prowadzić do
nieprawidłowej transmisji danych: każde
urządzenie dołączone do magistrali musi po−
siadać swój własny, niepowtarzalny adres.
Magistrala I 2 C jest szeroko stosowana w pro−
fesjonalnych systemach mikroprocesoro−
wych, m. in. w sterowanym cyfrowo sprzęcie
video i audio.
Jednym z najważniejszych elementów
umożliwiających wydawanie rozkazów
i przekazywanie informacji do procesora
przez człowieka, jest klawiatura. Nie musi
być to bynajmniej klawiatura typu “kompute−
rowego”. Niekiedy za klawiaturę uważamy
zespół kilku klawiszy, a nawet jeden klawisz.
Tak czy inaczej klawisze te muszą być jakoś
dołączone do procesora i w każdym wypad−
ku zajmują pewną ilość cennych wyprowa−
dzeń układu.
Na rysunku 1 pokazane zostały trzy
najpopularniejsze sposoby łączenia klawi−
szy z procesorem. Najprostszą metodą do−
łączenia klawiatury do procesora jest bez−
pośrednie połączenie klawiszy z wejściami
układu, pokazane na części rysunku ozna−
czonej “A”. Jest to także najprostsze roz−
wiązanie z punktu widzenia programisty,
ale posiada jedną, przy większej ilości kla−
wiszy dyskwalifikująca je wadę: na każdy
klawisz przypada jedno wyprowadzenie
procesora.
Rys. 1
26
Elektronika dla Wszystkich
54840714.035.png 54840714.036.png 54840714.037.png 54840714.038.png 54840714.001.png 54840714.002.png 54840714.003.png 54840714.004.png 54840714.005.png 54840714.006.png 54840714.007.png 54840714.008.png 54840714.009.png 54840714.010.png 54840714.011.png 54840714.012.png 54840714.013.png 54840714.014.png 54840714.015.png 54840714.016.png 54840714.017.png 54840714.018.png 54840714.019.png 54840714.020.png
 
BASCOM
Często stosowanym rozwiązaniem jest
klawiatura matrycowa, której schemat został
pokazany w części rysunku “B”. Zależność
pomiędzy ilością klawiszy, a ilością użytych
wyprowadzeń procesora jest tu nieco lepsza
niż w poprzednim przykładzie. Do obsługi
klawiatury 12 przyciskowej potrzebne jest
tylko 3+4 czyli 7 wyprowadzeń, klawiatura
16 przyciskowa wymagać będzie zaabsorbo−
wania 8 nóżek procesora. To już trochę le−
piej, ale w przypadku procesorów 89CX051
o 15 aktywnych wyprowadzeniach, też bar−
dzo dużo. Ponadto, programowa obsługa kla−
wiatury matrycowej (nie będziemy jej w tym
miejscu opisywać) jest znacznie bardziej
skomplikowana niż pojedynczych przyci−
sków i wymaga stałego zaangażowania ze
strony skanującego ją procesora.
Moim zdaniem, najlepszym sposobem
skonstruowania klawiatury o większej ilości
przycisków jest zastosowanie dekoderów
umożliwiających przesyłanie ośmiobitowego
słowa wejściowego do procesora za pomocą
dwuprzewodowej magistrali I 2 C (“C”). Naj−
lepszym przykładem takiej klawiatury jest
konsola komputera PC, z której dane przeka−
zywane są także za pomocą dwóch przewo−
dów (nie jest to jednak magistrala I 2 C, ale
idea pozostaje taka sama).
Układ, z którego budową zapoznamy się
za chwilę zaprojektowany został jako uzupeł−
nienie naszej płytki do testowania prototypo−
wych układów
procesorowych
i nauki progra−
mowania w sy−
stemie BA−
SCOM. Nic jed−
nak nie stoi na
przeszkodzie,
aby zastosować
go w układzie
praktycznym, ja−
ko moduł uła−
twiający budowę
systemu. Już te−
raz mogę odsło−
nić Wam rąbek
tajemnicy ota−
czającej czekają−
cą nas przy−
szłość. Na opu−
blikowanie jej
opisu czeka ko−
lejna uniwersal−
na płytka do bu−
dowy systemów
mikroprocesoro−
wych. Tym ra−
zem nie będzie
to jednak tablica
o sporych wy−
miarach, wygod−
na jedynie pod−
czas nauki i te−
stowania nowych pomysłów. Nowa płytka
ma wymiary typowego wyświetlacza LCD
(dokładnie), ale udało mi się zmieścić na niej
większość elementów potrzebnych do budo−
wy typowych układów procesorowych. Po−
służmy się prostym przykładem: dołączmy
do tej płytki znany już Wam moduł wyświe−
tlaczy siedmiosegmentowych LED, klawia−
turę i ... mamy gotowy zegar o zależnej tylko
od inwencji programisty ilości funkcji.
w stronę plusa zasilania. A zatem, aby cokol−
wiek z wejść układu PCF8574 odczytać, mu−
simy najpierw ustawić na nich stan wysoki.
W tym celu należy zainicjować transmisję
w magistrali I 2 C, przygotować odbiornik do
przyjęcia informacji, a następnie wysłać do
niego wartość 255, czyli binarnie 1111 1111.
Wygląda to dość skomplikowanie, ale na
szczęście dysponujemy naszym BA−
SCOM’em. W języku MCS BASIC wszyst−
kie wymienione operacje wykonywane są po
wydaniu tylko jednego polecenia:
Jak to działa?
Schemat elektryczny układu klawiatury zo−
stał pokazany na rysunku 2 . Dwoma podsta−
wowymi elementami układu są znane już
Wam terminale typu PCF8574A, umożliwia−
jące wymianę danych pomiędzy magistralą
I 2 C, a równoległą, ośmiobitową szyną da−
nych. W przypadku modułu wyświetlaczy
siedmiosegmentowych układy PCF przeka−
zywały informację z magistrali do dekode−
rów wyświetlaczy siedmiosegmentowych,
a teraz stoi przed nimi odwrotne zadania:
zbieranie informacji ze styków klawiszy
i przekazywanie jej w postaci szeregowej do
procesora. Zasadę działania układu najlepiej
będzie poznać na podstawie analizy metod
programistycznych stosowanych do jej
obsługi.
Każdy z układów PCF8574 posiada osiem
wejść − wyjść typu open collector, z wewnę−
trznymi rezystorami podciągającymi wejścia
I2CSEND [adres odbiornika],
[wartość, którą chcemy wysłać]
W naszym konkretnym przypadku pole−
cenie to będzie miało postać:
I2CSEND 112, 255
(dla układu PCF z wszystkimi wejściami
adresowymi w stanie niskim)
lub
I2CSEND 112, 255 (dla układu PCF
z wejściami adresowymi w stanie 001 (BIN) )
Po wydaniu tych poleceń wszystkie wej−
ścia układów IC1 i IC2 przyjmują stan
Rys. 2 Schemat ideowy
Elektronika dla Wszystkich
27
54840714.021.png 54840714.022.png 54840714.023.png 54840714.024.png 54840714.025.png 54840714.026.png
BASCOM
wysoki i układy te gotowe są do przyjęcia in−
formacji z klawiatury.
Programista piszący program ob−
sługujący naszą klawiaturę będzie miał teraz
dwie możliwości: albo procesor będzie nieu−
stannie sprawdzał stan wejść układów IC1
i IC2, albo wykorzysta sygnał przerwania
występujący na wyjściach INT przy jakiej−
kolwiek zmianie stanu wejść układów PCF.
Sprawa obsługi przerwań zostanie wyczerpu−
jąco omówiona w BASCOM College,
a w tym momencie wystarczy tylko wspo−
mnieć, że po wystąpieniu przerwania proce−
sor przestaje wykonywać jakiekolwiek czyn−
ności i natychmiast przystępuje do realizo−
wania obsługi przerwania, czyli wykonania
instrukcji zawartych w specjalnym podpro−
gramie (w naszym przypadku będzie to
sprawdzenie stanu klawiatury).
W każdym jednak wypadku odczytu da−
nych dokonujemy za pomocą polecenia:
jej analizy, a następnie ponownie ustawia na
wejściach układów PCF8574 stan wysoki
przygotowując je w ten sposób do oczekiwa−
nia na naciśnięcie kolejnego klawisza.
Warto zauważyć, że nasza klawiatura zo−
stała podzielona na dwie sekcje i wszystkie
opisane czynności muszą donosić się kolejno
do każdej z nich.
Należy jeszcze wspomnieć o roli jaką
pełnią jumpery S18 i S17. Za ich pomocą
ustawiamy adresy układów PCF tak, aby
procesor mógł je jednoznacznie zidentyfiko−
wać. Każdy z stosowanych w systemie ukła−
dów PCF musi mieć swój indywidualny ad−
res. Jeżeli więc będziemy używać naszej kla−
wiatury np. jednocześnie z modułem wy−
świetlaczy siedmiosegmentowych,w którym
także znajdują się trzy układy te−
go typu, to należy zwrócić bacz−
ną uwagę, aby każdy z ustawio−
nych adresów był inny.
sy umieszczone na płycie czołowej klawia−
tury odnoszą się jedynie do wartości licz−
bowej wprowadzanych danych. W wielu
zastosowaniach praktycznych trzeba bę−
dzie je zastąpić opisem czynności, jakie
procesor ma wykonać po naciśnięciu dane−
go klawisza.
Wykonany układ powinniśmy jeszcze
przetestować, co możemy uczynić za po−
mocą naszej płytki testowej. Nie musimy
w tym celu jeszcze programować proceso−
ra, ani nawet go posiadać. Piszemy w edy−
torze BASCOM’a program, którego listing
został zamieszczony poniżej, kompilujemy
go, a następnie po połączeniu płytki testo−
Rys. 3a Schemat montażowy
I2CRECEIVE [adres nadajnika],
[zmienna]
Montaż
i uruchomienie
Na rysunku 3 została pokazana
mozaika ścieżek płytki obwodu
drukowanego oraz rozmieszcze−
nia na niej elementów. Z uwagi
na znaczną komplikację połączeń
płytka została wykonana na lami−
nacie dwustronnym z metaliza−
cją. Montaż układu klawiatury
wykonujemy w typowy sposób,
rozpoczynając od wlutowania
w płytkę rezystorów i podstawek
pod układy scalone, a kończąc na
zamontowaniu przycisków mi−
croswitch. Te ostatnie elementy
musimy wlutować szczególnie
starannie, bacząc aby wszystkie
przyciski zostały ustawione ide−
alnie równo względem po−
wierzchni płytki.
Do dyspozycji mamy jeszcze
jedną płytkę, którą wprawdzie nie
sposób nazwać płyt−
ką obwodu druko−
wanego. Może ona
natomiast posłużyć
do wykonania
w miarę estetycznej
płyty czołowej kla−
wiatury, która po−
nadto stabilizuje po−
łożenie przycisków
i czyni cała kon−
strukcje odporną na
urazy mechaniczne.
Sposób połączenia
obydwóch płytek
jest wyraźnie wi−
doczny na fotogra−
fiach.
Warto jeszcze
zaznaczyć, że napi−
Czyli konkretnie:
I2CRECEIVE 66, [nazwa zmiennej]
(dla układu PCF z wejściami adresowymi
w stanie 001 (BIN))
lub
I2CRECEIVE 66, [nazwa zmiennej]
(dla układu PCF z wejściami adresowymi
w stanie 001 (BIN) )
Po odebraniu wartości innej niż 255, czy−
li w przypadku naciśnięcia przez użytkowni−
ka jakiegoś klawisza procesor przystępuje do
Wykaz elementów
F/10
C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100nF
Rys.5
Rezystory
R1 ..... R6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10k ΩΩ
Półprzewodniki
IIC1,, IC2 . . . . . . . . . . . . . . . . . . . . . . . . .PCF8574A
Pozostałe
S1 ..... S16 . . . . . . . . . . . .przyciiskii typu miicroswiittch
S17,, S18 . . . . . . . . . . . . . .3x2 golldpiin + 3 jumpery
CON1 . . . . . . . . . . . . . . . . . . . . . . . . . . .5x golldpiin
Komplet podzespołów z płytką jest
dostępny w sieci handlowej AVT jako
kit szkolny AVT−2503
28
Elektronika dla Wszystkich
Kondensatory
C1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100
54840714.027.png 54840714.028.png 54840714.029.png
BASCOM
wej z
klawiaturą i emulatorem sprzętowym, uru−
chamiamy. Jeżeli wszystko jest w porząd−
ku, to po naciśnięciu któregokolwiek klawi−
sza na wyświetlaczu LCD powinna okazać
się odpowiadająca mu wartość, wyrażona
w kodzie decymalnym i hexadecymalnym.
Te same wartości będą przekazywane także
na ekran monitora emulatora programowe−
go i do emulowanego programowo wyświe−
tlacza LCD, o ile emulacja programowa zo−
stanie także włączona ( rys. 5 ).
Sposób połączenia wszystkich elementów
potrzebnych do przetestowania klawiatury
został pokazany na rysunku 4 .
' ************** KONFIGURACJA SPRZĘTOWA ***************
$sim 'nie stosować w przypadku testowania programu z zaprogramowanym 'procesorem
Config Sda = P3.5
'konfiguracja sprzętowa I2C
Config Scl = P3.4
'konfiguracja sprzętowa I2C
'Config Lcd = 16 * 1a
'stosować w przypadku testowania programu z zaprogramowanym '
'procesorem
Config Lcd = 16 * 1 'stosować w przypadku testowania programu z emulatorem sprzętowym
Dim Value As Byte 'deklaracja zmiennej (wartości pobieranej z klawiatury)
Dim Valuehex As String * 2 'deklaracja ciągu znakowego o długości 2 znaków
Declare Sub Sekcja1
'deklaracja 1 podprogramu analizującego kod odebrany z klawiatury
Declare Sub Sekcja2
'deklaracja 1 podprogramu analizującego kod odebrany z klawiatury
' *************** PĘTLA GŁOWNA PROGRAMU ***************
Do
'początek pętli programowej
I2csend 112, 255 'ustawienie stanów wysokich na wyjściach pierwszego układu PCF8574A
I2csend 114, 255 'ustawienie stanów wysokich na wyjściach drugiego układu PCF8574A
I2creceive 64 , Value 'odczytanie stanu wejść pierwszego układu PCF8574A
If Value <> 255 Then 'jeżeli naciśnięty został klawisz w sekcji 1 to:
Call Sekcja1 'idź do podprogramu analizującego sekcji 1
Valuehex = Hex(value) 'konwersja odczytanej wartości na kod HEX
Cls 'czyszczenie ekranu LCD
Lcd "DEC:" ; Value ; " HEX:" ; Valuehex 'wysłanie na wyświetlacz LCD otrzymanych wartości w formacie 'DEC i HEX
Print "DEC:" ; Value ; " HEX:" ; Valuehex 'wysłanie do portu RS otrzymanych wartości
Wait 1 'zwłoka 1 sek
End If 'zakończenie uwarunkowań
I2creceive 66 , Value 'odczytanie stanu wejść drugiego układu PCF8574A
If Value <> 255 Then 'jeżeli naciśnięty został klawisz w sekcji 2 to:
Call Sekcja2 'idź do podprogramu analizującego sekcji 2
Valuehex = Hex(value) 'konwersja odczytanej wartości na kod HEX
Cls 'czyszczenie ekranu LCD
Lcd "DEC:" ; Value ; " HEX:" ; Valuehex
'wysłanie na wyświetlacz LCD otrzymanych wartości
Print "DEC:" ; Value ; " HEX:" ; Valuehex
'wysłanie do portu RS otrzymanych wartości
Wait 1
'zwłoka 1 sek
End If
'zakończenie uwarunkowań
Loop
'zamknięcie pętli programowej
'*******PODPROGRAMY KONWERTUJĄCE KODY OTRZYMANE Z KLAWIATURY ************
Sub Sekcja1
If Value = 254 Then
Value = 0
End If
If Value = 253 Then
Value = 1
End If
If Value = 251 Then
Value = 2
End If
If Value = 247 Then
Value = 3
End If
If Value = 239 Then
Value = 4
End If
If Value = 223 Then
Value = 5
End If
If Value = 191 Then
Value = 6
End If
If Value = 127 Then
Elektronika dla Wszystkich
29
54840714.030.png
 
BASCOM
Value = 7
End If
End Sub
Sub Sekcja2:
If Value = 254 Then
Value = 8
End If
If Value = 253 Then
Value = 9
End If
If Value = 251 Then
Value = 10
End If
If Value = 247 Then
Value = 11
End If
If Value = 239 Then
Value = 12
End If
If Value = 223 Then
Value = 13
End If
If Value = 191 Then
Value = 14
End If
If Value = 127 Then
Value = 15
End If
End Sub
Rys.5
REKLAMA · REKLAMA · REKLAMA · REKLAMA · REKLAMA · REKLAMA · REKLAMA
30
Elektronika dla Wszystkich
54840714.031.png 54840714.032.png 54840714.033.png 54840714.034.png
Zgłoś jeśli naruszono regulamin