Bascom College 5 Klawiatura szesnastkowa.pdf

(687 KB) Pobierz
#
##
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
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:
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
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
Elektronika dla Wszystkich
27
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:
I2CRECEIVE [adres nadajnika],
[zmienna]
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
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
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−
Rys.5
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−
Wykaz elementów
Kondensatory
C1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100
µ
F/10
C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100nF
Rezystory
R1 ... R6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10k
Półprzewodniki
IC1, IC2 . . . . . . . . . . . . . . . . . . . . . . . . .PCF8574A
Pozostałe
S1 ... S16 . . . . . . . . . . . .przyciski typu microswitch
S17, S18 . . . . . . . . . . . . . .3x2 goldpin + 3 jumpery
CON1 . . . . . . . . . . . . . . . . . . . . . . . . . . .5x goldpin
Komplet podzespołów z płytką jest
dostępny w sieci handlowej AVT jako
kit szkolny AVT−2503
28
Elektronika dla Wszystkich
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
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
Zgłoś jeśli naruszono regulamin