plik


ÿþµP3021 µP3021 Gra  KóBko i krzy|yk Gra  KóBko i krzy|yk Do czego to sBu|y? wo zastaBy doBczone przyciski S1-S9. Tran- filtrowanie zasilania. Z tego niewielkiego opi- Sama nazwa mówi co to za gra. Ka|dy z nas, zystory T1-T3 steruj kolumnami matrycy, su wynika, |e budowa elektroniczna gry jest zna j od najmBodszych lat. Ale dla przypo- natomiast rezystory R5-R7 ograniczaj prd bardzo prosta, ale program zawarty w mikro- mnienia, jest to prosta gra logiczna polegaj- pByncy przez odpowiednie diody wy[wietla- kontrolerze te| nie musi by skomplikowany. ca na zapeBnianiu przez przeciwników (kóB- cza. DoBczenie przycisków do matrycy po- Dlatego te| teraz przedstawi kilka procedur kami i krzy|ykami) tablicy o wymiarach za- zwoliBo na zmniejszenie ilo[ci poBczeD po- zawartych w oprogramowaniu kontrolera. Li- zwyczaj 3x3. Je|eli w zapeBnionej tablicy trzebnych do obsBugi klawiatury. Membrana sting 1 pokazuje ptl gBówn programu. znajd si jednakowe elementy obok siebie piezo Q1 sygnalizuje ka|de naci[nicie przy- Zmienna  licznik jest inkrementowana po linii prostej lub po skosie, to wygrywa ten cisków tablicy oraz proces zakoDczenia gry. w przerwaniu od timera 1, w którym realizo- zawodnik, do którego te elementy nale|aBy. Dioda D10 wskazuje na kolejno[ przeciwni- wane jest multipleksowanie klawiatury oraz Mo|na w ni gra na kawaBku kartki, ale pro- ka. Poniewa| brakowaBo wyprowadzeD mi- wy[wietlacza. Je|eli zmienna ta osignie ponuj, zamiast tego rozwizania zastosowa krokontrolera, jej anody zostaBy doBczone do przedstawion warto[, wyBczany jest wy- elektroniczn wersj gry  kóBko i krzy|yk , matrycy sterujcej tablic diod. Przycisk S10, [wietlacz a mikrokontroler przechodzi w stan w której wyeliminowane zostaBy kartka i dBu- który wywoBuje przerwanie, sBu|y do restarto- IDLE. Zmienna licznik jest kasowana po ka|- gopis. Mo|e niezupeBnie, ale kartka mo|e si wania gry oraz budzenia mikrokontrolera dym naci[niciu przycisku tablicy, co bdzie przyda do zapisywania wyników rozgrywek. z trybu IDLE. Kondensator C1 zeruje ukBad widoczne na pozostaBych listingach. Zmienna Proponowana wersja gry jest bardzo prosta po wBczeniu napicia zasilajcego, natomiast w obsBudze, dziki czemu mo|e by u|ywana kondensatory C4 i C5 s odpowiedzialne za Rys. 1 Schemat ideowy przez wszystkich, nawet tych najmBodszych. CaBe urzdzenie przypomina narysowan na kartce tablic, przy czym ma aktywne wewn- trzne pola, które po naci[niciu przyjmuj ko- lor czerwony lub zielony w zale|no[ci od ko- lejki gry. Wspomniane kolory nale|y domy[l- nie uznawa za kóBko lub krzy|yk. Dodatko- wa dioda wskazuje kolejno[ przeciwnika, by nie byBo jakichkolwiek nieporozumieD pod- czas rozgrywek. Dziki niewielkim wymia- rom, gr mo|na nosi w kieszeni. WyBczanie wy[wietlacza podczas dBu|szej bezczynno[ci gry przyczynia si do zmniejszonego poboru prdu, który dla [wiccych diod jest znaczny. U|ytkownicy o koDcu gry s powiadamiani dzwikiem wydobywajcym si z membrany piezo, przy czym jednocze[nie zostaje zablo- kowana klawiatura urzdzenia. Jak to dziaBa? Schemat ideowy gry znajduje si na rysunku 1. GBównym elementem sterujcym gr jest mi- krokontroler AVR o symbolu AT90S2313. Jest to odpowiednik dobrze znanego 89C2051. Diody wy[wietlacza zostaBy poB- czone w matryc, do której kolumn dodatko- Elektronika dla Wszystkich 18  licznik osignie swoj warto[ tylko przy diody czerwonej, a 2-diody zielonej. Wpisanie obsBugi wy[wietlacza na odpowiednie warto- braku naci[ni przycisków tworzcych tabli- warto[ci 0 powoduje zgaszenie diody okre[lo- [ci zgodne z utworzon tablic  Tab . Je|eli c. Je|eli  flaga4 bdzie ustawiona, to mo|li- nej indeksem tablicy. Przy J=10 obsBugiwana przyci[nity zostaB przycisk, któremu odpo- wa jest obsBuga klawiatury oraz sprawdzane s jest dioda D10, która jak wspominaBem poka- wiadajca warto[ elementu w tablicy jest warunki zakoDczenia gry (warunki wygranej), zuje kolejno[ rozgrywki. Listing 3 przedsta- równa  0 , to wydawany jest dzwik oraz jest których, jak Batwo policzy, mo|e by dla ma- wia elementy programu konwertujce warto- za[wiecany odpowiedni kolor diody w zale|- trycy 3x3 tylko 8. Zmienna  Tab(x) okre[la [ci zmiennej  key odczytanej w przerwaniu no[ci, od tego na jaki kolor wskazywaBa dio- element tablicy utworzonej matrycy. Je|eli da kolejno[ci D10. Tak jak wspominaBem, ze- Listing 2 który[ warunek zakoDczenia gry si zgadza, rowana jest zmienna  licznik , dziki czemu ustawiana jest  flaga2 . Ustawienie tej|e flagi przedBu|any jest czas pracy gry. Na tym listin- Wyswietl: 'Procedura realizu- powoduje przeBczenie si diody wskazujcej jca wy[wietlanie zaznaczeD oraz obsBugu- gu widoczna jest tak|e procedura obsBugi jca klawiatur matrycowa kolejno[ przeciwnika na kolor zwycizcy. przerwania od przycisku startu S10. Zerowa- Incr Licznik 'Zwiksz zmienna W dalszej kolejno[ci generowany jest odpo- licznik okre[lajca stan kiedy procesor ma na jest w nim wspomniana  flaga3 oraz przej[ w stan IDLE wiednio spreparowany za pomoc ptli  for zmienna licznik. Wyzerowanie  flagi3 jest Portb = 0 dzwik. Nastpnie program kr|y w ptli, a| równowa|ne ze startem gry od pocztku. Po- Set Kol If J = 1 Then 'przy zmiennej j zostanie ustawiona  flaga3 . Jest ona ustawia- zostaBe elementy programu s zamieszczone =1..3 sprawdzaj klawiatur na w przerwaniu po naci[niciu przycisku wdoBczonym oryginalnym programie. Set W1 startu S10. Na listingu 2 przedstawiona zosta- End If If J = 2 Then Ba obsBuga wy[wietlacza oraz klawiatury. Na Listing 3 Set W2 samym pocztku sprawdzany jest stan klawia- End If Sub Obs_klaw 'obsBuga oraz kon- If J = 3 Then tury (tylko przy warto[ciach zmiennej wersja warto[ci jak zawiera zmienna key Set W3 If Key = 104 Then 'warto[ 104 oznacza J=1...3), po czym program obsBuguje pozosta- End If naci[niecie klawisza numer 2 If S1 = 0 Or S2 = 0 Or S3 = 0 Then Be diody wy[wietlacza. Wpisanie do zmiennej Temp = 2 'zapisz odczytana warto[ z klawiatury do End If  Tab(x) warto[ci 1 powoduje za[wiecenie si zmiennej key If Key = 112 Then Key = Pind And &B01111011 Temp = 3 End If End If Listing 1 Reset W1 If Key = 88 Then Reset W2 Temp = 1 Do Reset W3 End If If Licznik => 60000 Then 'Warunek Incr J & & & & . wprowadzajcy mikrokontroler w tryb IDLE If J = 11 Then 'Je|eli j=11 to & & & & . Disable Timer0 zmieD na j=1 If Temp <> 0 Then 'Je|eli przycisk byB Stop Timer0 J = 1 ju| naci[niety to nie przypisuj zmiennym Portb = 0 End If tablicy nic Reset W1 If J = 1 Then 'wyswietl punkt If Tab(temp) = 0 Then Reset W2 tab(1) Licznik = 0 Reset W3 If Tab(1) = 1 Then 'warto[ Sound Portb.0 , 100 , 1000 Idle Zapisywana Do Tablicy Oznacza :1 - [wieci 'Wydaje dzwik po ka|dym naci[niciu przy- End If led czerwona, cisku If Flaga4 = 0 Then 'Je|eli Set W1 : Set Dr1 '2 - Tab(temp) = P flaga4=0 to obsBuguj klawiatur matrycowa [wieci led zielona Flaga1 = 1 oraz End If End If Call Obs_klaw If Tab(1) = 2 Then Temp = 0 'sprawdzaj warunki zakoDczenia gry Set W1 : Set Dg1 End If For I = 1 To 2 End If If Flaga1 = 1 Then 'Je|eli flaga1 If Tab(1) = I Then End If ustawiona to zmieD przeciwnika na poprzed- 'Pierwsze warunki zakoDczenia gry If J = 2 Then 'Zapis do drugiego niego If Tab(2) = I Then elementu tablicy Reset Flaga1 If Tab(3) = I Then If Tab(2) = 1 Then If P = 1 Then Set Flaga2 Set W2 : Set Dr1 P = 2 End If End If Else End If If Tab(2) = 2 Then P = 1 End If Set W2 : Set Dg1 End If If Tab(2) = I Then 'Drugie End If End If warunki zakoDczenia gry End If End Sub If Tab(5) = I Then & & & .. If Tab(8) = I Then & & & .. Zalacz: Set Flaga2 If J = 9 Then 'Przerwanie obsBugi przycisku nowej gry End If If Tab(9) = 1 Then Set Flaga3 'Flaga3 okre[la End If Set W3 : Set Dr3 rozpoczcie nowej gry End If End If Waitms 250 & & & & . If Tab(9) = 2 Then Licznik = 0 & & & & . Set W3 : Set Dg3 If Flaga2 = 1 Then 'Je|eli End If flaga2 ustawiona to zeruj flage4 oraz End If wygeneruj dzwik zwycistwa If J = 10 Then 'J=10 jest zarezer- P = I wowana dla led pokazujcej kolejno[ prze- Set Flaga4 ciwnika Monta| i uruchomienie For K = 50 To 250 Step 50 If P = 1 Then 'Warto[ P okre[la Gr nale|y zmontowa na pBytkach drukowa- 'Generowanie dzwiku którego przeciwnika dotyczy kolejka gry Sound Portb.0 , 100 , K Set W3 nych przedstawionych na rysunku 2 i 3, przy Next K Reset W2 czym pBytka wy[wietlacza jest dwustronna. Reset Flaga2 Reset W1 End If Monta| najlepiej bdzie rozpocz od pBytki Else Next I Set W2 sterownika, wlutowujc w pierwszej kolejno- End If Reset W1 Loop Until Flaga3 = 1 'Je|eli [ci dwie zworki, przechodzc dalej do ele- Reset W3 flaga3 ustawiona zostaBa w przerwaniu od End If mentów najmniejszych, a koDczc na wBo|e- przycisku S10 Reset Kol niu zaprogramowanego mikrokontrolera Loop 'to End If wyjdz z ptli do-loop Return do podstawki. End Cig dalszy na stronie 25. Elektronika dla Wszystkich 19

Wyszukiwarka

Podobne podstrony:
edw 03 s56
edw 03 s61
edw 03 s56
edw 03 s12
edw 03 s20
edw 03 s13
edw 03 s20
edw 03 s51
edw 03 s55
edw 03 s54
edw 03 s68
edw 03 s61
edw 03 s10
edw 03 s38
edw 03 s56

więcej podobnych podstron