background image

Radioelektronik Audio-HiFi-Video 8/2003

Przedstawiamy niezwy-

kle prost¹, lecz w pe³ni

funkcjonaln¹ i nowocze-

sn¹ zabawkê, któr¹ mo¿e

zmontowaæ ka¿dy po-

cz¹tkuj¹cy adept sztuki

programowania i wyko-

rzystania mikrosterowni-

ków AVR lub zgodnych ze

standardem przemys³o-

wym MCS51,. 

U

k³ad symuluje rzut kostk¹ sze-

œcienn¹ do gier (np. do gry w ko-

œci lub do gier planszowych).

Prawdopodobieñstwo wyrzuce-

nia od 1 do 6 oczek  jest takie samo jak

w ”prawdziwej” kostce i wynosi 1/6. Uk³ad

wyœwietla wynik wyrzuconych oczek, w za-

le¿noœci od wersji wykonania, na diodach

LED lub na wyœwietlaczu 7 segmentowym

w postaci odpowiedniej cyfry.

Opis uk³adu

W przedstawionej konstrukcji wykorzystano

tani i popularny mikrosterownik AVR _

At90s2313, który steruje wszystkimi funkcja-

mi uk³adu. Schematy symulatorów przedsta-

wiono na rys.1 i 2. Ró¿ni¹ siê one miêdzy

sob¹ sposobem wyœwietlania wyniku wyrzu-

conych oczek. Niewielkie ró¿nice s¹ równie¿

w programach obs³uguj¹cych uk³ady. Mikro-

sterownik jest wyposa¿ony w minimaln¹

liczbê elementów zewnêtrznych umo¿liwia-

j¹cych jego poprawne funkcjonowanie. Przy-

cisk Start/Stop s³u¿y zarówno do wprawie-

nia kostki w ”ruch”, jak i do jej ”zatrzymania”.

Po w³¹czeniu napiêcia zasilaj¹cego kostka

”toczy siê” (jest w ”ruchu”), œwiec¹ siê wszy-

stkie diody D1

÷

D7 lub znak ”_” na wyœwie-

tlaczu W1. Je¿eli teraz naciœniemy przy-

cisk SW1, to po jego zwolnieniu kostka ”za-

trzymuje siê”. W wersji z diodami œwieca siê

tylko te, które symbolizuj¹ liczbê wyrzuco-

nych oczek, a pozosta³e gasn¹, natomiast

w przypadku wyœwietlacza W1 pojawia siê

cyfra od 1 do 6. 

Je¿eli po raz kolejny naciœniemy SW1, to

po jego zwolnieniu kostka znowu zaczyna siê

”toczyæ”, zaœwiecaj¹ siê wszystkie diody lub

MIKROPROCESOROWY SYMULATOR

RZUTU  KOSTK¥

r

Z PRAKTYKI

22

Rys. 1. Schemat mikroprocesorowego 

symulatora rzutu kostk¹ z diodami

Rys. 2. Schemat mikroprocesorowego 

symulatora rzutu kostk¹ z wyœwietlaczem

Rys. 3. P³ytka drukowana symulatora z diodami

(skala 1:1)

Rys. 4. P³ytka drukowana symulatora 

z wyœwietlaczem (skala 1:1)

znak ”_” na wyœwietlaczu SW1. Dodatkow¹

sygnalizacjê czy kostka siê ”toczy” czy te¿ jest

”zatrzymana” zapewniaj¹ diody œwiec¹ce D8

i D9. Ograniczenie wartoœci pr¹du p³yn¹ce-

go przez diody, wyœwietlacz, i porty I/O mikro-

sterownika daj¹ rezystory R3

÷

R11. Rezy-

stor R2 jest elementem uk³adu kasowania mi-

krosterownika AVR po w³¹czeniu napiêcia

zasilaj¹cego. Kondensatory C1 i C2 odsprzê-

gaj¹ i filtruj¹ napiêcie zasilaj¹ce +5 V. Ca³oœæ

uzupe³nia oscylator kwarcowy 1 MHz taktu-

j¹cy mikrosterownik US1.

2

background image

z wyœwietlaczem. Nastêpnie przystêpuje-

my do wlutowania pozosta³ych elementów

zgodnie ze schematami monta¿owymi (rys.5

i 6) z wyj¹tkiem mikroprocesora US1. Na po-

lu lutowniczym pod US1 umieszczamy od-

powiedni¹ podstawkê, w któr¹ póŸniej za-

montujemy zaprogramowany uk³ad. 

Teraz nale¿y zaprogramowaæ mikroprocesor

At90s2313 (mog¹ byæ te¿ At89c1051, 2051

lub 4051, przy zmodyfikowanym odpowie-

dnio uk³adzie ”reset” mikrosterownika).

W celu zaprogramowania trzeba pobraæ

z Internetu, (ze strony redakcyjnej lub auto-

ra) odpowiednie programy obs³ugi. W zale¿-

noœci od potrzeby pobieramy program Ko-

stka11.hex przeznaczony do sterowania

wyœwietlaczem 7. segmentowym lub pro-

gram Kostka22.hex do sterowania diodami

LED. Nastêpnie nale¿y przyst¹piæ do zapro-

gramowania mikroprocesora przy pomocy

odpowiedniego programatora. Je¿eli nie

dysponujemy w³asnym programatorem, to

powinniœmy skorzystaæ z pomocy serwisu

elektronicznego dysponuj¹cego programa-

torem do mikroprocesorów standardu AVR.

Zaprogramowany uk³ad montujemy w pod-

stawkê na p³ytce drukowanej, a nastêpnie

do³¹czamy napiêcie zasilaj¹ce, które mo¿e

mieœciæ siê w przedziale od 4 do 6 V. Uk³ad

mo¿na zasilaæ ze zwyk³ej p³askiej baterii

3R12. Je¿eli w trakcie odwzorowania uk³a-

du nie pope³niliœmy ¿adnych b³êdów a pro-

ces programowania i weryfikacji programu

dla mikrosterownika przebieg³ pomyœlnie,

to uk³ad powinien dzia³aæ od razu po w³¹cze-

niu napiêcia zasilaj¹cego, bez ¿adnych do-

datkowych czynnoœci uruchomieniowych.

Dziêkujemy firmie Elfa Polska za dostarcze-

nie najwa¿niejszych podzespo³ów urz¹dze-

nia (tablica). Podzespo³y mo¿na kupiæ w sy-

stemie sprzeda¿y wysy³kowej Elfa: obslu-

ga.klienta

@

elfa.se lub tel. (0-22) 520-2200.

Ceny mo¿na znaleŸæ w katalogu 

www.elfa.se/pl

n

Mariusz Janikowski

Bc107

@

Poczta.Onet.pl

L I T E R A T U R A

[1] Ga³ka P., Ga³ka P.: Podstawy programowania mikro-

kontrolera 8051, MIKOM, Warszawa 1995, wyd. I.

[2] Pe³ka R.: Mikrokontrolery Architektura programowa-

nie zastosowania, WK£, Warszawa 1999, wyd. I.

23

Radioelektronik Audio-HiFi-Video 8/2003

Opis programu

Do obs³ugi przedstawionej konstrukcji s³u-

¿¹ programy Kostka11.hex, Kostka11.asm,

Kostka22.hex, Kostka22.asm, które zosta-

³y napisane dla wykorzystanego w kon-

strukcji mikrosterownika AVR At90s2313.

Programy mo¿na pobraæ z redakcyjnej stro-

ny internetowej http://www.radioelektronik.pl

lub z witryny autora http://bc107.republika.pl.

Program Kostka11 obs³uguje wersjê uk³adu

z wyœwietlaczem 7 segmentowym, nato-

miast Kostka22 jest przeznaczony do obs³u-

gi diod œwiec¹cych. Zatrzymanie lub urucho-

mienie ”toczenia siê” kostki jest realizowa-

ne za poœrednictwem zg³oszenia przerwa-

nia sprzêtowego INT0 po naciœniêciu przy-

cisku SW1. Obs³ugê przerwania zapewnia

fragment programu umieszczony w pamiê-

ci Flash ROM mikroprocesora pocz¹wszy

od adresu $01 hex. W kodzie Ÿród³owym

fragment ten zaczyna siê od nag³ówka

.ORG Int0addr. 

Do sygnalizacji stanu kostki wykorzystano

flagê ogólnego przeznaczenia Fo umieszczo-

n¹ w obszarze rejestrów, w rejestrze R30.

W momencie zg³oszenia przerwania pro-

gram sprawdza stan tej flagi i w zale¿noœci od

tego, czy jest ona ustawiona czy zgaszona

podejmuje odpowiednie dzia³anie polegaj¹-

ce na wyœwietleniu liczby wyrzuconych oczek

lub ustawieniu wyœwietlacza w stanie nieak-

tywnym, kiedy kostka ”toczy siê”. 

G³ówna pêtla programu zaczynaj¹ca siê od

etykiety START: realizuje wylosowany wynik,

który widzimy na wyœwietlaczu lub diodach.

Losowanie odbywa siê przez cykliczn¹ i re-

gularn¹ zmianê kodu wpisanego do rejestru

R31, która zmienia siê co 3 cykle maszyno-

we. (Przy rezonatorze 1 MHz zmiana bêdzie

wiêc nastêpowaæ regularnie co 3 

µ

s). Dla ³a-

twiejszego zrozumienia istoty rzeczy g³ów-

na czêœæ programu zosta³a podzielona na

sekcje od 1 do 6, z których ka¿da jest tak

skonstruowana, aby jej wykonanie zajê³o

w³aœnie 3 cykle maszynowe. Dziêki temu

przychodz¹ce w dowolnej chwili przerwanie

INT0 mo¿e z równym prawdopodobieñ-

stwem trafiæ na jeden z szeœciu kodów liczb

lub iloœci zapalonych diod w rejestrze R30.

W wyniku tego prawdopodobieñstwo tra-

fienia liczby od 1 do 6 jest takie samo jak na

”prawdziwej” kostce i wynosi 1/6. Je¿eli

zmienimy liczbê cykli maszynowych przypa-

daj¹cych na poszczególne sekcje, to w kon-

sekwencji tego zmieni siê równie¿ rozk³ad

tego prawdopodobieñstwa. Kod Ÿród³owy

programu zawiera jeszcze dwa dodatkowe

podprogramy wywo³ywane w trakcie swej

pracy i s³u¿¹ce do nastêpuj¹cych celów:

podprogram MILISEK realizuje kalibrowane

opóŸnienie 20 ms s³u¿¹ce do eliminacji

drgañ zestyków prze³¹cznika SW1 oraz

podprogram CZEKAJ, który realizuje chwi-

lowe wstrzymanie pracy programu. Warto

w tym miejscu dodaæ, ¿e autor tego artyku-

³u udostêpnia tak¿e programy obs³ugi mikro-

sterowników At89c1051, 2051, 4051, mog¹-

cych pracowaæ zamiennie zamiast uk³adu

2313.

Monta¿ i uruchomienie

Monta¿ uk³adu rozpoczynamy od wykona-

nia jednej z p³ytek drukowanych przedsta-

wionych na rys. 3 lub 4. W pierwszej kolej-

noœci lutujemy zwory ZW dla wersji uk³adu

Rys. 5. Rozmieszczenie elemntów 

na p³ytce drukowanej symulatora z diodami

Rys. 6. Rozmieszczenie elemntów na p³ytce 

drukowanej symulatora z wyœwietlaczem

Nazwa 

Typ 

Numer katalogowy 

ELFA

Mikroprocesor 

At90s2313 

73-665-78

Wyœwietlacz 

MAN6660 

75-512-52

Oscylator 

1 MHz 

74-557-77

Oscylator 

12 MHz 

74-560-31

LED bia³a 

110140-01 

75-008-95

LED czerwona 

EL264-7IT

75-021-56

LED zielona

HLMP3950

75-049-70