AVT3021

background image

18

Elektronika dla Wszystkich

Do czego to s³u¿y?

Sama nazwa mówi co to za gra. Ka¿dy z nas,
zna j¹ od najm³odszych lat. Ale dla przypo-
mnienia, jest to prosta gra logiczna polegaj¹-
ca na zape³nianiu przez przeciwników (kó³-
kami i krzy¿ykami) tablicy o wymiarach za-
zwyczaj 3x3. Je¿eli w zape³nionej tablicy
znajd¹ siê jednakowe elementy obok siebie
po linii prostej lub po skosie, to wygrywa ten
zawodnik, do którego te elementy nale¿a³y.
Mo¿na w ni¹ graæ na kawa³ku kartki, ale pro-
ponujê, zamiast tego rozwi¹zania zastosowaæ
elektroniczn¹ wersjê gry „kó³ko i krzy¿yk”,
w której wyeliminowane zosta³y kartka i d³u-
gopis. Mo¿e niezupe³nie, ale kartka mo¿e siê
przydaæ do zapisywania wyników rozgrywek.
Proponowana wersja gry jest bardzo prosta
w obs³udze, dziêki czemu mo¿e byæ u¿ywana
przez wszystkich, nawet tych najm³odszych.
Ca³e urz¹dzenie przypomina narysowan¹ na
kartce tablicê, przy czym ma aktywne wewnê-
trzne pola, które po naciœniêciu przyjmuj¹ ko-
lor czerwony lub zielony w zale¿noœci od ko-
lejki gry. Wspomniane kolory nale¿y domyœl-
nie uznawaæ za kó³ko lub krzy¿yk. Dodatko-
wa dioda wskazuje kolejnoϾ przeciwnika, by
nie by³o jakichkolwiek nieporozumieñ pod-
czas rozgrywek. Dziêki niewielkim wymia-
rom, grê mo¿na nosiæ w kieszeni. Wy³¹czanie
wyœwietlacza podczas d³u¿szej bezczynnoœci
gry przyczynia siê do zmniejszonego poboru
pr¹du, który dla œwiêc¹cych diod jest znaczny.
U¿ytkownicy o koñcu gry s¹ powiadamiani
dŸwiêkiem wydobywaj¹cym siê z membrany
piezo, przy czym jednoczeœnie zostaje zablo-
kowana klawiatura urz¹dzenia.

Jak to dzia³a?

Schemat ideowy gry znajduje siê na rysunku 1.
G³ównym elementem steruj¹cym gr¹ jest mi-
krokontroler AVR o symbolu AT90S2313.
Jest to odpowiednik dobrze znanego
89C2051. Diody wyœwietlacza zosta³y po³¹-

czone w matrycê, do której kolumn dodatko-
wo zasta³y do³¹czone przyciski S1-S9. Tran-
zystory T1-T3 steruj¹ kolumnami matrycy,
natomiast rezystory R5-R7 ograniczaj¹ pr¹d
p³yn¹cy przez odpowiednie diody wyœwietla-
cza. Do³¹czenie przycisków do matrycy po-
zwoli³o na zmniejszenie iloœci po³¹czeñ po-
trzebnych do obs³ugi klawiatury. Membrana
piezo Q1 sygnalizuje ka¿de naciœniêcie przy-
cisków tablicy oraz proces zakoñczenia gry.
Dioda D10 wskazuje na kolejnoϾ przeciwni-
ka. Poniewa¿ brakowa³o wyprowadzeñ mi-
krokontrolera, jej anody zosta³y do³¹czone do
matrycy steruj¹cej tablic¹ diod. Przycisk S10,
który wywo³uje przerwanie, s³u¿y do restarto-
wania gry oraz budzenia mikrokontrolera
z trybu IDLE. Kondensator C1 zeruje uk³ad
po w³¹czeniu napiêcia zasilaj¹cego, natomiast

kondensatory C4 i C5 s¹ odpowiedzialne za
filtrowanie zasilania. Z tego niewielkiego opi-
su wynika, ¿e budowa elektroniczna gry jest
bardzo prosta, ale program zawarty w mikro-
kontrolerze te¿ nie musi byæ skomplikowany.
Dlatego te¿ teraz przedstawiê kilka procedur
zawartych w oprogramowaniu kontrolera. Li-
sting 1
pokazuje pêtlê g³ówn¹ programu.
Zmienna „licznik” jest inkrementowana
w przerwaniu od timera 1, w którym realizo-
wane jest multipleksowanie klawiatury oraz
wyœwietlacza. Je¿eli zmienna ta osi¹gnie
przedstawion¹ wartoœæ, wy³¹czany jest wy-
œwietlacz a mikrokontroler przechodzi w stan
IDLE. Zmienna licznik jest kasowana po ka¿-
dym naciœniêciu przycisku tablicy, co bêdzie

G

G

r

r

a

a

K

K

ó

ó

³

³

k

k

o

o

i

i

k

k

r

r

z

z

y

y

¿

¿

y

y

k

k

3

3

0

0

2

2

1

1

Rys. 1 Schemat ideowy

background image

widoczne na pozosta³ych listingach. Zmienna
„licznik” osi¹gnie swoj¹ wartoœæ tylko przy
braku naciœniêæ przycisków tworz¹cych tabli-
cê. Je¿eli „flaga4” bêdzie ustawiona, to mo¿li-
wa jest obs³uga klawiatury oraz sprawdzane s¹
warunki zakoñczenia gry (warunki wygranej),
których, jak ³atwo policzyæ, mo¿e byæ dla ma-
trycy 3x3 tylko 8. Zmienna „Tab(x)” okreœla
element tablicy utworzonej matrycy. Je¿eli
któryœ warunek zakoñczenia gry siê zgadza,
ustawiana jest „flaga2”. Ustawienie tej¿e flagi
powoduje prze³¹czenie siê diody wskazuj¹cej
kolejnoœæ przeciwnika na kolor zwyciêzcy.
W dalszej kolejnoœci generowany jest odpo-
wiednio spreparowany za pomoc¹ pêtli „for”
dŸwiêk. Nastêpnie program kr¹¿y w pêtli, a¿
zostanie ustawiona „flaga3”. Jest ona ustawia-
na w przerwaniu po naciœniêciu przycisku
startu S10. Na listingu 2 przedstawiona zosta-
³a obs³uga wyœwietlacza oraz klawiatury. Na
samym pocz¹tku sprawdzany jest stan klawia-
tury (tylko przy wartoœciach zmiennej
J=1...3), po czym program obs³uguje pozosta-
³e diody wyœwietlacza. Wpisanie do zmiennej
„Tab(x)” wartoœci 1 powoduje zaœwiecenie siê

diody czerwonej, a 2-diody zielonej. Wpisanie
wartoœci 0 powoduje zgaszenie diody okreœlo-
nej indeksem tablicy. Przy J=10 obs³ugiwana
jest dioda D10, która jak wspomina³em poka-
zuje kolejnoϾ rozgrywki. Listing 3 przedsta-
wia elementy programu konwertuj¹ce warto-
œci zmiennej „key” odczytanej w przerwaniu

obs³ugi wyœwietlacza na odpowiednie warto-
œci zgodne z utworzon¹ tablic¹ „Tab”. Je¿eli
przyciœniêty zosta³ przycisk, któremu odpo-
wiadaj¹ca wartoœæ elementu w tablicy jest
równa „0”, to wydawany jest dŸwiêk oraz jest
zaœwiecany odpowiedni kolor diody w zale¿-
noœci, od tego na jaki kolor wskazywa³a dio-
da kolejnoœci D10. Tak jak wspomina³em, ze-
rowana jest zmienna „licznik”, dziêki czemu
przed³u¿any jest czas pracy gry. Na tym listin-
gu widoczna jest tak¿e procedura obs³ugi
przerwania od przycisku startu S10. Zerowa-
na jest w nim wspomniana „flaga3” oraz
zmienna licznik. Wyzerowanie „flagi3” jest
równowa¿ne ze startem gry od pocz¹tku. Po-
zosta³e elementy programu s¹ zamieszczone
w do³¹czonym oryginalnym programie.

Monta¿ i uruchomienie

Grê nale¿y zmontowaæ na p³ytkach drukowa-
nych przedstawionych na rysunku 2 i 3, przy
czym p³ytka wyœwietlacza jest dwustronna.
Monta¿ najlepiej bêdzie rozpocz¹æ od p³ytki
sterownika, wlutowuj¹c w pierwszej kolejno-
œci dwie zworki, przechodz¹c dalej do ele-
mentów najmniejszych, a koñcz¹c na w³o¿e-
niu zaprogramowanego mikrokontrolera
do podstawki.

19

Elektronika dla Wszystkich

Listing 1

Do

If Licznik => 60000 Then

'Warunek

wprowadzaj¹cy mikrokontroler w tryb IDLE

Disable Timer0
Stop Timer0
Portb = 0
Reset W1
Reset W2
Reset W3
Idle

End If
If Flaga4 = 0 Then

' J e ¿ e l i

flaga4=0 to obs³uguj klawiaturê matrycowa
oraz

Call Obs_klaw

'sprawdzaj warunki zakoñczenia gry

For I = 1 To 2

If Tab(1) = I Then

'Pierwsze warunki zakoñczenia gry

If Tab(2) = I Then

If Tab(3) = I Then

Set Flaga2

End If

End If

End If
If Tab(2) = I Then

' D r u g i e

warunki zakoñczenia gry

If Tab(5) = I Then

If Tab(8) = I Then

Set Flaga2

End If

End If

End If
………….
………….
If Flaga2 = 1 Then

' J e ¿ e l i

flaga2 ustawiona to zeruj flage4 oraz
wygeneruj dŸwiêk zwyciêstwa

P = I
Set Flaga4
For K = 50 To 250 Step 50

'Generowanie dŸwiêku

Sound Portb.0 , 100 , K

Next K
Reset Flaga2

End If

Next I

End If

Loop Until Flaga3 = 1

' J e ¿ e l i

flaga3 ustawiona zosta³a w przerwaniu od
przycisku S10
Loop

' t o

wyjdŸ z pêtli do-loop

Listing 2

Wyswietl:

'Procedura real-

izuj¹ca wyœwietlanie zaznaczeñ oraz
obs³uguj¹ca klawiaturê matrycowa

Incr Licznik

'Zwiêksz zmienna

licznik okreœlaj¹ca stan kiedy procesor ma
przejϾ w stan IDLE

Portb = 0
Set Kol
If J = 1 Then

'przy zmiennej j

=1..3 sprawdzaj klawiaturê

Set W1

End If
If J = 2 Then

Set W2

End If
If J = 3 Then

Set W3

End If

If S1 = 0 Or S2 = 0 Or S3 = 0 Then

'zapisz odczytana wartoϾ z klawiatury do
zmiennej key

Key = Pind And &B01111011

End If
Reset W1
Reset W2
Reset W3
Incr J
If J = 11 Then

'Je¿eli j=11 to

zmieñ na j=1

J = 1

End If
If J = 1 Then

'wyswietl punkt

tab(1)

If Tab(1) = 1 Then

'wartoϾ

Zapisywana Do Tablicy Oznacza :1 - œwieci
led czerwona,

Set W1 : Set Dr1

'2 -

œwieci led zielona

End If
If Tab(1) = 2 Then

Set W1 : Set Dg1

End If

End If
If J = 2 Then

'Zapis do drugiego

elementu tablicy

If Tab(2) = 1 Then

Set W2 : Set Dr1

End If
If Tab(2) = 2 Then

Set W2 : Set Dg1

End If

End If

………..
………..
If J = 9 Then

If Tab(9) = 1 Then

Set W3 : Set Dr3

End If
If Tab(9) = 2 Then

Set W3 : Set Dg3

End If

End If
If J = 10 Then

'J=10 jest zarezer-

wowana dla led pokazuj¹cej kolejnoœæ prze-
ciwnika

If P = 1 Then

'Wartoœæ P okreœla

którego przeciwnika dotyczy kolejka gry

Set W3
Reset W2
Reset W1

Else

Set W2
Reset W1
Reset W3

End If
Reset Kol

End If

Return

Listing 3

Sub Obs_klaw

'obs³uga oraz kon-

wersja wartoœci jak¹ zawiera zmienna key

If Key = 104 Then

'wartoϾ 104 oznacza

naciœniecie klawisza numer 2

Temp = 2

End If
If Key = 112 Then

Temp = 3

End If
If Key = 88 Then

Temp = 1

End If

………….
………….
If Temp <> 0 Then

'Je¿eli przycisk by³

ju¿ naciœniety to nie przypisuj zmiennym
tablicy nic

If Tab(temp) = 0 Then

Licznik = 0
Sound Portb.0 , 100 , 1000

'Wydaje dŸwiêk po ka¿dym naciœniêciu przy-
cisku

Tab(temp) = P
Flaga1 = 1

End If
Temp = 0

End If
If Flaga1 = 1 Then 'Je¿eli flaga1

ustawiona to zmieñ przeciwnika na poprzed-
niego

Reset Flaga1
If P = 1 Then

P = 2

Else

P = 1

End If

End If

End Sub

Zalacz:
'Przerwanie obs³ugi przycisku nowej gry

Set Flaga3

'Flaga3 okreœla

rozpoczêcie nowej gry

Waitms 250
Licznik = 0

background image

P³ytka klawiatury z diodami wymaga bar-
dziej skomplikowanego monta¿u. W pierw-
szej kolejnoœci, po wlutowaniu mikrosty-
ków, nale¿y tak wyprofilowaæ kolorowe
diody LED, by znalaz³y siê nad przyciska-
mi, a ich naciœniêcie powodowa³o zadzia³a-
nie tych¿e przycisków. Po zmontowaniu
p³ytek nale¿y je z³o¿yæ w przys³owiow¹ ka-
napkê. Po poprawnym zmontowaniu uk³ad
powinien od razu poprawnie pracowaæ.
Uk³ad modelowy zosta³ zasilony napiêciem
6V z 4 ogniw 1,5. Próby, jakie przeprowa-
dzi³em, wykaza³y, ¿e gra tak¿e dzia³a po-
prawnie przy napiêciu zasilaj¹cym 3V, ale
dla wiêkszej jasnoœci diod nale¿y zmniej-
szyæ wartoœci rezystorów ograniczaj¹cych
R5-R7. Grê nale¿y obowi¹zkowo wyposa-
¿yæ w wy³¹cznik zasilania, poniewa¿ w sta-
nie IDLE pobór pr¹du nie jest pomijalnie
ma³y. Ca³y uk³ad nale¿y umieœciæ w jednej
z dostêpnych na rynku obudów. W przypad-
ku braku obudowy mo¿na wykonaæ j¹ z ka-
wa³ków laminatu, przy czym przyk³adowy
projekt laminatowej p³yty czo³owej znajdu-
je siê na rysunku we wk³adce. Wystarczy
wtedy wykonaæ boki oraz dno urz¹dzenia.
Nale¿y tak¿e schowaæ baterie zasilaj¹ce.
Obs³uga gry jest bardzo prosta i sprowadza
siê tylko do naciskania przycisków na wy-
znaczonej tablicy. Kolejka graczy jest poka-
zywana odpowiednim kolorem diody D10.
Po naciœniêciu przycisku na wyznaczonej
tablicy, naciœniêty przycisk przyjmuje kolor,
na jaki wskazywa³a dioda D10. Naciœniêcie
przycisku z diod¹ S10 uruchamia now¹ grê
oraz wychodzi ze stanu IDLE, podczas gdy
mikrokontroler siê w nim znalaz³. W przy-
padku remisu grê nale¿y rozpocz¹æ po naci-
œniêciu wspomnianego przycisku startu
(S10). Kolorom diod mog¹ byæ przypisane
odpowiednio kó³ko lub krzy¿yk, dlatego we
w³asnym zakresie nale¿y podj¹æ decyzjê, ja-
ki kolor diody bêdzie uwa¿any za kó³ko,
a jaki za krzy¿yk. Grê mo¿na, po zmianie
programu zawartego w mikrokontrolerze,
wykorzystaæ tak¿e jako dwie kostki szeœcio-
œcienne. Wyœwietlacz gry w sam raz siê
nadaje do tego celu. Jedn¹ kostk¹ mog³yby
byæ diody zielone, a drug¹ czerwone. Loso-
wanie oraz wybranie kostek do pokazania

umo¿liwia³by przycisk startu S10. W wyni-
ku braku pamiêci w mikrokontrolerze nie
uda³o mi siê zaimplementowaæ jako drugiej
rozrywki kostki do gry, oczywiœcie w jed-
nym mikrokontrolerze. Aby to da³o siê zro-
biæ, trzeba by wymieniæ mikrokontroler na
mikrokontroler o wiêkszej pamiêci, którym
mo¿e byæ znany 89C4051. Ma on 4k pamiê-
ci i z powodzeniem do gry „kó³ko i krzy-
¿yk” mo¿na dopisaæ implementacjê kostki
szeœcioœciennej. Przy zastosowaniu powy¿-
szego mikrokontrolera nale¿y pamiêtaæ
o zmianie obwodu zerowania na zalecany
dla rodziny mikrokontrolerów ’51. Mo¿na
by tak¿e wymyœliæ inne rodzaje gier, które
mog³yby byæ zaimplementowane do opisy-

wanego urz¹dzenia, oczywiœcie przy jego
ograniczeniach wyœwietlacza i klawiatury.
Mog¹ to byæ wszelkiego rodzaju gry zrêcz-
noœciowe, logiczne czy innego rodzaju. Pa-
miêæ zawarta w mikrokontrolerze AVR mo-
¿e wystarczyæ do realizacji ró¿nych gier.
Ale je¿eli oka¿e siê za ma³a, mo¿na zmieniæ
mikrokontroler na wspomniany 89C4051.
Mam nadziejê, ¿e mo¿na wymyœliæ jeszcze
wiele innych implementacji gier dla tego
urz¹dzenia.

Marcin Wi¹zania

20

Elektronika dla Wszystkich

Wykaz elementów

Rezystory
R1,R5,R6,R7 . . . . . . . . . . . . . . . . . . . . .220

R2,R3,R4 . . . . . . . . . . . . . . . . . . . . . . . .10k

Kondensatory
C1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4,7µF
C2,C3 . . . . . . . . . . . . . . . . . . . . . . . . . . .33pF
C4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47µF
C5 . . . . . . . . . . . . . . . . . . . . . . . . . . . .100nF

Pó³przewodniki
U1 . . . . . . . . . . . . . . . . . . . . . . . .AT90S2313
X1 . . . . . . . . . . . . . . . . . . . . . . . .Kwarc 8MHz
T1,T2,T3 . . . . . . . . . . . . . . . . . . . . . . .BC548
D1 – D10 . . . . . . . . . .LED 5mm dwukolorowe

Inne
S1 – S10 . . . . . .Mikrostyk o niskim przycisku
S11 . . . . . . . . . . . . . . . .Prze³¹cznik hebelkowy
Q1 . . . . . . . . . . . . . . . . . . . . .Membrana piezo
Z1 . . .Goldpin 1x15 oraz odpowiednie gniazdo
BT1 . . . . . . . . . . . . .Koszyk na baterie 4x1,5V

Komplet podzespo³ów z p³ytk¹ jest dostêpny

w sieci handlowej AVT jako kit szkolny AVT-3021

Rys. 2 i 3 Schematy monta¿owe


Wyszukiwarka

Podobne podstrony:
AVT3020
AVT302
AVT302 Compresor
AVT302

więcej podobnych podstron