You are on page 1of 5

BASCOM College

Klawiatura szesnastkowa
do systemów mikroprocesorowych

Do czego to służy? urządzenie dołączone do magistrali musi po− ku zajmują pewną ilość cennych wyprowa−
Prawie każdy system mikroprocesorowy mu− siadać swój własny, niepowtarzalny adres. dzeń układu.
si posiadać wbudowane układy, które umoż− Magistrala I2C jest szeroko stosowana w pro− Na rysunku 1 pokazane zostały trzy
liwiają mu komunikację ze światem zewnę− fesjonalnych systemach mikroprocesoro− najpopularniejsze sposoby łączenia klawi−
trznym. Procesor musi skądś otrzymywać da− wych, m. in. w sterowanym cyfrowo sprzęcie szy z procesorem. Najprostszą metodą do−
ne, przetwarzać je i wysyłać dalej, najczę− video i audio. łączenia klawiatury do procesora jest bez−
ściej do interfejsu czytelnego dla człowieka. Jednym z najważniejszych elementów pośrednie połączenie klawiszy z wejściami
Najlepszym przykładem takiego systemu jest umożliwiających wydawanie rozkazów układu, pokazane na części rysunku ozna−
komputer PC. Posiada on szereg układów i przekazywanie informacji do procesora czonej “A”. Jest to także najprostsze roz−
przechwytujących informację ze świata ze− przez człowieka, jest klawiatura. Nie musi wiązanie z punktu widzenia programisty,
wnętrznego, czyli klawiaturę, myszkę, mo− być to bynajmniej klawiatura typu “kompute− ale posiada jedną, przy większej ilości kla−
dem telefoniczny lub skaner. Informacja rowego”. Niekiedy za klawiaturę uważamy wiszy dyskwalifikująca je wadę: na każdy
przetworzona przez komputer przekazywana zespół kilku klawiszy, a nawet jeden klawisz. klawisz przypada jedno wyprowadzenie
jest jego użytkownikowi za pomocą monito− Tak czy inaczej klawisze te muszą być jakoś procesora.
ra, karty dźwiękowej, lub drukarki. O ile dołączone do procesora i w każdym wypad−
jednak dodawanie dodatkowych układów ko− Rys. 1
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 I2C.
Specyfikacją magistrali I2C 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 I2C 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

26 Elektronika dla Wszystkich


BASCOM
Często stosowanym rozwiązaniem jest stowania nowych pomysłów. Nowa płytka w stronę plusa zasilania. A zatem, aby cokol−
klawiatura matrycowa, której schemat został ma wymiary typowego wyświetlacza LCD wiek z wejść układu PCF8574 odczytać, mu−
pokazany w części rysunku “B”. Zależność (dokładnie), ale udało mi się zmieścić na niej simy najpierw ustawić na nich stan wysoki.
pomiędzy ilością klawiszy, a ilością użytych większość elementów potrzebnych do budo− W tym celu należy zainicjować transmisję
wyprowadzeń procesora jest tu nieco lepsza wy typowych układów procesorowych. Po− w magistrali I2C, przygotować odbiornik do
niż w poprzednim przykładzie. Do obsługi służmy się prostym przykładem: dołączmy przyjęcia informacji, a następnie wysłać do
klawiatury 12 przyciskowej potrzebne jest do tej płytki znany już Wam moduł wyświe− niego wartość 255, czyli binarnie 1111 1111.
tylko 3+4 czyli 7 wyprowadzeń, klawiatura tlaczy siedmiosegmentowych LED, klawia− Wygląda to dość skomplikowanie, ale na
16 przyciskowa wymagać będzie zaabsorbo− turę i ... mamy gotowy zegar o zależnej tylko szczęście dysponujemy naszym BA−
wania 8 nóżek procesora. To już trochę le− od inwencji programisty ilości funkcji. SCOM’em. W języku MCS BASIC wszyst−
piej, ale w przypadku procesorów 89CX051 kie wymienione operacje wykonywane są po
o 15 aktywnych wyprowadzeniach, też bar− Jak to działa? wydaniu tylko jednego polecenia:
dzo dużo. Ponadto, programowa obsługa kla− Schemat elektryczny układu klawiatury zo−
wiatury matrycowej (nie będziemy jej w tym stał pokazany na rysunku 2. Dwoma podsta− I2CSEND [adres odbiornika],
miejscu opisywać) jest znacznie bardziej wowymi elementami układu są znane już [wartość, którą chcemy wysłać]
skomplikowana niż pojedynczych przyci− Wam terminale typu PCF8574A, umożliwia−
sków i wymaga stałego zaangażowania ze jące wymianę danych pomiędzy magistralą W naszym konkretnym przypadku pole−
strony skanującego ją procesora. I2C, a równoległą, ośmiobitową szyną da− cenie to będzie miało postać:
Moim zdaniem, najlepszym sposobem nych. W przypadku modułu wyświetlaczy
skonstruowania klawiatury o większej ilości siedmiosegmentowych układy PCF przeka− I2CSEND 112, 255
przycisków jest zastosowanie dekoderów zywały informację z magistrali do dekode− (dla układu PCF z wszystkimi wejściami
umożliwiających przesyłanie ośmiobitowego rów wyświetlaczy siedmiosegmentowych, adresowymi w stanie niskim)
słowa wejściowego do procesora za pomocą a teraz stoi przed nimi odwrotne zadania:
dwuprzewodowej magistrali I2C (“C”). Naj− zbieranie informacji ze styków klawiszy lub
lepszym przykładem takiej klawiatury jest i przekazywanie jej w postaci szeregowej do
konsola komputera PC, z której dane przeka− procesora. Zasadę działania układu najlepiej I2CSEND 112, 255 (dla układu PCF
zywane są także za pomocą dwóch przewo− będzie poznać na podstawie analizy metod z wejściami adresowymi w stanie 001 (BIN))
dów (nie jest to jednak magistrala I2C, ale programistycznych stosowanych do jej
idea pozostaje taka sama). obsługi. Po wydaniu tych poleceń wszystkie wej−
Układ, z którego budową zapoznamy się Każdy z układów PCF8574 posiada osiem ścia układów IC1 i IC2 przyjmują stan
za chwilę zaprojektowany został jako uzupeł− wejść − wyjść typu open collector, z wewnę−
nienie naszej płytki do testowania prototypo− trznymi rezystorami podciągającymi wejścia Rys. 2 Schemat ideowy
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−

Elektronika dla Wszystkich 27


BASCOM
wysoki i układy te gotowe są do przyjęcia in− jej analizy, a następnie ponownie ustawia na sy umieszczone na płycie czołowej klawia−
formacji z klawiatury. wejściach układów PCF8574 stan wysoki tury odnoszą się jedynie do wartości licz−
Programista piszący program ob− przygotowując je w ten sposób do oczekiwa− bowej wprowadzanych danych. W wielu
sługujący naszą klawiaturę będzie miał teraz nia na naciśnięcie kolejnego klawisza. zastosowaniach praktycznych trzeba bę−
dwie możliwości: albo procesor będzie nieu− Warto zauważyć, że nasza klawiatura zo− dzie je zastąpić opisem czynności, jakie
stannie sprawdzał stan wejść układów IC1 stała podzielona na dwie sekcje i wszystkie procesor ma wykonać po naciśnięciu dane−
i IC2, albo wykorzysta sygnał przerwania opisane czynności muszą donosić się kolejno go klawisza.
występujący na wyjściach INT przy jakiej− do każdej z nich. Wykonany układ powinniśmy jeszcze
kolwiek zmianie stanu wejść układów PCF. Należy jeszcze wspomnieć o roli jaką przetestować, co możemy uczynić za po−
Sprawa obsługi przerwań zostanie wyczerpu− pełnią jumpery S18 i S17. Za ich pomocą mocą naszej płytki testowej. Nie musimy
jąco omówiona w BASCOM College, ustawiamy adresy układów PCF tak, aby w tym celu jeszcze programować proceso−
a w tym momencie wystarczy tylko wspo− procesor mógł je jednoznacznie zidentyfiko− ra, ani nawet go posiadać. Piszemy w edy−
mnieć, że po wystąpieniu przerwania proce− wać. Każdy z stosowanych w systemie ukła− torze BASCOM’a program, którego listing
sor przestaje wykonywać jakiekolwiek czyn− dów PCF musi mieć swój indywidualny ad− został zamieszczony poniżej, kompilujemy
ności i natychmiast przystępuje do realizo− res. Jeżeli więc będziemy używać naszej kla− go, a następnie po połączeniu płytki testo−
wania obsługi przerwania, czyli wykonania wiatury np. jednocześnie z modułem wy−
instrukcji zawartych w specjalnym podpro− świetlaczy siedmiosegmentowych,w którym Rys. 3a Schemat montażowy
gramie (w naszym przypadku będzie to także znajdują się trzy układy te−
sprawdzenie stanu klawiatury). go typu, to należy zwrócić bacz−
W każdym jednak wypadku odczytu da− ną uwagę, aby każdy z ustawio−
nych dokonujemy za pomocą polecenia: nych adresów był inny.

I2CRECEIVE [adres nadajnika], Montaż


[zmienna] i uruchomienie
Na rysunku 3 została pokazana
Czyli konkretnie: mozaika ścieżek płytki obwodu
drukowanego oraz rozmieszcze−
I2CRECEIVE 66, [nazwa zmiennej] nia na niej elementów. Z uwagi
(dla układu PCF z wejściami adresowymi na znaczną komplikację połączeń
w stanie 001 (BIN)) płytka została wykonana na lami−
nacie dwustronnym z metaliza−
lub cją. Montaż układu klawiatury
wykonujemy w typowy sposób,
I2CRECEIVE 66, [nazwa zmiennej] rozpoczynając od wlutowania
(dla układu PCF z wejściami adresowymi w płytkę rezystorów i podstawek
w stanie 001 (BIN)) pod układy scalone, a kończąc na
zamontowaniu przycisków mi−
Po odebraniu wartości innej niż 255, czy− croswitch. Te ostatnie elementy
li w przypadku naciśnięcia przez użytkowni− musimy wlutować szczególnie
ka jakiegoś klawisza procesor przystępuje do starannie, bacząc aby wszystkie
przyciski zostały ustawione ide−
alnie równo względem po−
Wykaz elementów wierzchni płytki.
Do dyspozycji mamy jeszcze
Kondensatory jedną płytkę, którą wprawdzie nie
C1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100µF/10 sposób nazwać płyt−
ką obwodu druko− Rys.5
C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100nF
wanego. Może ona
natomiast posłużyć
Rezystory do wykonania
R1 ... R6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10k Ω w miarę estetycznej
płyty czołowej kla−
Półprzewodniki wiatury, która po−
IC1, IC2 . . . . . . . . . . . . . . . . . . . . . . . . .PCF8574A nadto stabilizuje po−
łożenie przycisków
i czyni cała kon−
Pozostałe
strukcje odporną na
S1 ... S16 . . . . . . . . . . . .przyciski typu microswitch
urazy mechaniczne.
S17, S18 . . . . . . . . . . . . . .3x2 goldpin + 3 jumpery Sposób połączenia
CON1 . . . . . . . . . . . . . . . . . . . . . . . . . . .5x goldpin obydwóch płytek
jest wyraźnie wi−
doczny na fotogra−
Komplet podzespołów z płytką jest fiach.
dostępny w sieci handlowej AVT jako Warto jeszcze
zaznaczyć, że napi−
kit szkolny AVT−2503

28 Elektronika dla Wszystkich


BASCOM
wej z się odpowiadająca mu wartość, wyrażona tlacza LCD, o ile emulacja programowa zo−
klawiaturą i emulatorem sprzętowym, uru− w kodzie decymalnym i hexadecymalnym. stanie także włączona (rys. 5).
chamiamy. Jeżeli wszystko jest w porząd− Te same wartości będą przekazywane także Sposób połączenia wszystkich elementów
ku, to po naciśnięciu któregokolwiek klawi− na ekran monitora emulatora programowe− potrzebnych do przetestowania klawiatury
sza na wyświetlaczu LCD powinna okazać go i do emulowanego programowo wyświe− 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
BASCOM
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 Value = 7
End If 'zakończenie uwarunkowań End If
Loop 'zamknięcie pętli programowej End Sub

'*******PODPROGRAMY KONWERTUJĄCE KODY OTRZYMANE Z KLAWIATURY ************ Sub Sekcja2:


If Value = 254 Then
Sub Sekcja1 Value = 8
If Value = 254 Then End If
Value = 0 If Value = 253 Then
End If Value = 9
If Value = 253 Then End If
Value = 1 If Value = 251 Then
End If Value = 10
If Value = 251 Then End If
Value = 2 If Value = 247 Then
End If Value = 11
If Value = 247 Then End If
Value = 3 If Value = 239 Then
End If Value = 12
If Value = 239 Then End If
Value = 4 If Value = 223 Then
End If Value = 13
If Value = 223 Then End If
Value = 5 If Value = 191 Then
End If Value = 14
If Value = 191 Then End If
Value = 6 If Value = 127 Then
End If Value = 15
If Value = 127 Then End If
End Sub

Elektronika dla Wszystkich 29

You might also like