Prosty programator mikrokontrolerów AT89Cx051-AT89C5x.pdf

(278 KB) Pobierz
Prosty programator mikrokontrolerów AT89Cx051/AT89C5x
P R O J E K T Y C Z Y T E L N I K Ó W
Dzia³ Projekty Czytelników zawiera opisy projektów nades³anych do redakcji EP przez Czytelników. Redakcja nie bierze
odpowiedzialnoci za prawid³owe dzia³anie opisywanych uk³adów, gdy¿ nie testujemy ich laboratoryjnie, chocia¿
sprawdzamy poprawnoæ konstrukcji.
Prosimy o nadsy³anie w³asnych projektów z modelami (do zwrotu). Do artyku³u nale¿y do³¹czyæ podpisane owiadczenie,
¿e artyku³ jest w³asnym opracowaniem autora i nie by³ dotychczas nigdzie publikowany . Honorarium za publikacjê
w tym dziale wynosi 250,- z³ (brutto) za 1 stronê w EP. Przysy³anych tekstów nie zwracamy. Redakcja zastrzega sobie
prawo do dokonywania skrótów.
Prosty programator mikrokontrolerów
AT89Cx051/AT89C5x
Projekt
107
Na rynku dostêpnych
jest wiele programatorów
uniwersalnych (drogich)
i specjalizowanych dla
danej grupy uk³adów
(tañszych). Taki w³anie
tani, lecz funkcjonalny
programator przedstawiamy
w artykule.
dla nich jest
cena narzêdzi sprzêto-
wych (uk³ady PCF8574A s¹
stosunkowo drogie). S³uszn¹
alternatyw¹ w takim wypadku
jest zbudowanie w³asnego pro-
gramatora, którego koszt wy-
konania bêdzie ograniczony do
minimum. Od takiego progra-
matora wymagana jest tylko
jedna cecha - ma kasowaæ i za-
pisywaæ pamiêæ Flash uk³adu.
Nie musi on ustawiaæ ¿adnych
dodatkowych opcji w progra-
mowanym uk³adzie, gdy¿ ma
s³u¿yæ on do celów laborato-
ryjnych, a nie komercyjnych
(choæ mo¿na go stosowaæ i tu-
taj). Okazuje siê, ¿e w Inter-
necie opisów takich progra-
matorów jest wiele. Jednak al-
bo ich oprogramowanie pozo-
stawia wiele do ¿yczenia albo
moj¹ drobne, acz istotne b³ê-
dy w schemacie.
Niew¹tpliw¹ zalet¹ mik-
rokontrolerów zgodnych pro-
gramowo z 8051, jest mno-
goæ dostêpnego kodu ród³o-
wego. Stwarza to mo¿liwoæ
³atwego wypróbowania
swoich si³ m.in. w asemble-
rze. Zapewne wielu elektro-
ników pragnê³oby tak¿e do³¹-
czyæ do grona u¿ytkowników
Bascoma 8051, jednak barier¹
Budowa i dzia³anie
Postanowi³em wiêc zapro-
jektowaæ w³asny programator,
który bêdzie domylnie pro-
gramowa³ uk³ady AT89Cx051,
a po zastosowaniu dodatko-
wej p³ytki, tak¿e AT89C5x.
Zak³adam, ¿e rozpoczynaj¹cy
przygodê z mikrokontrolerami
dysponuj¹ zazwyczaj kompu-
terem, wiêc sterowanie prac¹
Rys. 1
Elektronika Praktyczna 2/2003
93
32568865.051.png 32568865.056.png 32568865.057.png 32568865.058.png 32568865.001.png 32568865.002.png 32568865.003.png 32568865.004.png 32568865.005.png 32568865.006.png 32568865.007.png 32568865.008.png 32568865.009.png 32568865.010.png 32568865.011.png 32568865.012.png 32568865.013.png 32568865.014.png 32568865.015.png 32568865.016.png 32568865.017.png 32568865.018.png 32568865.019.png 32568865.020.png 32568865.021.png 32568865.022.png 32568865.023.png 32568865.024.png 32568865.025.png 32568865.026.png 32568865.027.png 32568865.028.png 32568865.029.png 32568865.030.png 32568865.031.png
P R O J E K T Y C Z Y T E L N I K Ó W
Rys. 2
programatora zosta³o przerzu-
cone na PC-ta. Program do
jego obs³ugi zosta³ napisany
w Turbo Pascalu i jest dostêp-
ny na p³ycie CD-EP2/2003.
Schemat elektryczny pro-
gramatora pokazano na rys. 1 .
Programator jest wykrywany
automatycznie przez oprogra-
mowania za spraw¹ po³¹cze-
nia wyprowadzeñ 13 i 14 z³¹-
cza drukarkowego. Owo
z³¹cze ma tê zaletê, ¿e nie
potrzeba nam dodatkowego
kabla do portu równoleg³ego
- wystarczy od³¹czyæ go od
drukarki. Program sprawdza
równie¿, czy programowany
uk³ad jest w³o¿ony do progra-
matora (linia ACK), a w przy-
padku braku odpowiedniego
napiêcia programuj¹cego rów-
nie¿ informuje o b³êdzie.
Tranzystor T1, sterowany
sygna³em DSL ustala, czy uk³ad
bêdzie kasowany czy progra-
mowany. Tranzystor T2, stero-
wany sygna³em ALF w³¹cza
napiêcie programuj¹ce. Dioda
D1 zabezpiecza programowany
uk³ad przed uszkodzeniem
w przypadku, gdy pod³¹czymy
odwrotnie spolaryzowane na-
piêcie zasilania. Wówczas co
najwy¿ej wzronie temperatura
stabilizatora U2.
Rezystor R1 wraz z kon-
densatorem C1 stanowi uk³ad
ca³kuj¹cy dla sygna³u zega-
rowego. Jest on niezbêdny
gdy stosujemy d³ugi przewód
po³¹czeniowy. W praktyce
okaza³o siê jednak, ¿e R1
w wiêkszoci przypadków po-
winien byæ zwarty.
Zworka JP1 pozwala wy-
braæ ród³o sygna³u zegaro-
wego. Kiedy programujemy
powinnimy wybraæ pozycjê
1-2, za jeli chcemy na szy-
bko sprawdziæ poprawnoæ
naszego prostego programu
(np. generatora) po zaprogra-
mowaniu uk³adu, nale¿y wy-
braæ pozycjê 2-3. Kiedy chce-
my programowaæ uk³ad
AT89Cx51 za pomoc¹ omó-
wionego dalej adaptera dla
du¿ych '51 (drugiej p³ytki)
powinnimy ustawiæ dwie
zworki na pozycjach 1-2 oraz
3-4.
W adapterze dla uk³adów
AT89C5x (schemat elektrycz-
ny na rys. 2 ) wewnêtrzny licz-
nik adresu uk³adów
AT89x051 zosta³ zast¹piony
przez liczniki U9 i U10, co
pozwala adresowaæ pamiêæ
o 16-bitowym adresie (mo¿na
go w razie potrzeby wykorzys-
taæ do programowania innych
uk³adów, np. pamiêci EP-
ROM). Uk³ady te s¹ zerowane
poprzez tranzystor T3 w cza-
sie, gdy nie ma ¿adnego na-
piêcia programuj¹cego. Naj-
lepszym rozwi¹zaniem jest
umieszczenie w miejsce T3
tranzystora MOSFET (z kana-
³em typu N) i usuniêcie re-
zystora R7. Wtedy uk³ad ze-
ruj¹cy nie bêdzie obni¿a³ na-
piêcia programuj¹cego.
cu wlutowujemy goldpiny (do
jumperów - JP2 k¹towe - i za-
silania) oraz z³¹cze drukarko-
we, od którego nale¿y wcze-
niej odkrêciæ plastikow¹ czêæ
lub zwiêkszyæ w niej odleg³oæ
nó¿ek pomiêdzy rzêdami.
Uruchomienie rozpoczyna-
my od pod³¹czenia napiêcia
zasilania (12 V, stabilizowane)
i sprawdzenia poprawnoci
napiêæ w podstawce do pro-
gramowania uk³adu. Nastêpnie
mo¿emy zabraæ siê do pierw-
szego programowania.
Druga p³ytka - adaptera
dla AT89C5x - pomimo wszel-
kich prób minimalizacji, zo-
sta³a zaprojektowana jako
dwustronna. Wybra³em kom-
promis w liczbie przelotek dla
tych osób, które bêd¹ wyko-
nywa³y j¹ jako dwuwarstwo-
w¹ oraz dla osób, które wy-
konaj¹ j¹ jako jednostronn¹,
a resztê po³¹czeñ wykonaj¹
przewodami (np. kynarem
cie¿ki sygna³owe i jakim
grubszym cie¿ki zasilania).
Monta¿ tej p³ytki rozpoczyna-
my od podstawek uk³adów,
poza U3. Nastêpnie wlutowu-
jemy elementy dyskretne. Te-
raz zabieramy siê za U3 i wlu-
towujemy od spodu p³ytki
dwa rzêdy 10-nó¿kowych gol-
dpinów (dla druku jedno-
stronnego wpuszczamy je
w p³ytkê tylko w niewielkim
stopniu).
Po tej operacji osoby wy-
konuj¹ce p³ytkê jednostronn¹
powinny zabraæ siê za po³¹-
czenia przewodowe (z górnej
warstwy druku dwustronne-
go). Goldpiny nie bêd¹ nam
Monta¿ i uruchomienie
Podstawowa p³ytka pro-
gramatora zosta³a zaprojekto-
wana jako jednowarstwowa.
Jej wzór zamieszczamy wraz
z oprogramowaniem na CD-
EP3/2003.
Monta¿ programatora nale-
¿y rozpocz¹æ od omiu zwor.
Najlepiej od razu równie¿ ze-
wrzeæ tak¿e wyprowadzenia
rezystora R1. Nastêpnie wlu-
towujemy kolejno podstawki
pod uk³adu scalone, stabiliza-
tor, rezonator kwarcowy. Obu-
dowê tego ostatniego, w celu
ograniczenia liczby harmo-
nicznych, warto po³¹czyæ
z mas¹, co jest mo¿liwe, gdy
zamontujemy go na le¿¹co. Je-
li wykonalimy te czynnoci,
zabieramy siê do monta¿u ele-
mentów dyskretnych. Na koñ-
Zworka JP2 pozwala wy-
braæ napiêcie programuj¹ce
dla wiêkszych '51, a tak¿e
sterowaæ sygna³em zeruj¹cym
mikrokontrolera. W pozycji 1-
2 ustalamy napiêcie 12 V, za
2-3 5 V. Gdy zdejmiemy zwor-
kê (ustawimy j¹ prostopadle)
napiêcie wyniesie 0. Procedu-
rê programowania omówiê da-
lej. Dane 8-bitowe s¹ przesy-
³ane do uk³adu bezporednio
z portu (D0...D7) podobnie jak
sygna³ programuj¹cy (INI).
W celu programowania AT89C55 nale¿y dodaæ dwie cie¿-
ki dla linii A14 oraz A15. W tym celu nale¿y po³¹czyæ:
- 8 wyprowadzenie 74LS93 (U10) z 10 wyprowadzeniem
AT89C5x (U4),
- 11 wyprowadzenie 74LS93 (U10) z 11 wyprowadzeniem
AT89C5x (U4).
94
Elektronika Praktyczna 2/2003
Elektronika Praktyczna 2/98
32568865.032.png 32568865.033.png 32568865.034.png 32568865.035.png 32568865.036.png 32568865.037.png 32568865.038.png 32568865.039.png 32568865.040.png 32568865.041.png 32568865.042.png 32568865.043.png 32568865.044.png 32568865.045.png 32568865.046.png 32568865.047.png 32568865.048.png 32568865.049.png 32568865.050.png 32568865.052.png 32568865.053.png
P R O J E K T Y C Z Y T E L N I K Ó W
szym programatorze, musimy
je przekonwertowaæ do pliku
bin . Mo¿emy to uczyniæ z ³at-
woci¹ stosuj¹c np. program
hex2bin (zamieszczamy go na
CD-EP2/2003) i podaj¹c jako
parametr nazwê pliku hex .
Pliki tego formatu generu-
je tak¿e Bascom 8051, ale na-
le¿y je najpierw od niego
wykraæ. Na pocz¹tku wy-
bieramy z menu Op-
tions>Compiler>Output i za-
znaczamy pola Binary File
HEX File (w razie potrzeby
Old Intel HEX File ). Nastêp-
nie przechodzimy do Op-
tions>Programmer>Other .
W polu Programmer wybiera-
my External Programmer , od-
znaczamy opcje Auto Flash
Auto Verify , a w  Program
wskazujemy program edycyj-
ny notepad i zaznaczamy Use
HEX File . W okno Parameter
wpisujemy {file}, a w  Mode
wybieramy Go to application
directory and run . Jeli po-
trzebujemy danych w forma-
cie bin to odznaczamy opcjê
Use HEX File . Po skompilo-
waniu programu wybieramy
Run Programmer i mo¿emy
z poziomu notatnika zapisaæ
plik bin , a nastêpnie przejæ
do DOS-u i zaprogramowaæ
nasz uk³ad.
DOS-em nie musimy siê
jednak w Bascomie przejmo-
waæ. Gdy nie chcemy stoso-
waæ powy¿szej, doæ d³ugiej
metody, wystarczy wybraæ ja-
ko programator urz¹dzenie
o nazwie BlowIT Programmer
(dostêpny na pewno w wersji
Bascom 8051 2.0.2.0 i 2.0.6.0)
- prezentowany programator
jest z nim kompatybilny. Na-
stêpnie wybieramy odpowied-
ni port LPT ( LPT-address )
w zak³adce Parallel (progra-
mator nie zostanie wykryty
automatycznie), ustawiamy
Port Delay np. na 5 i odzna-
czamy pozosta³e pola. Od tej
pory mo¿emy programowaæ
z poziomu Bascom-a uk³ady
do 4 kB pamiêci Flash. Pozo-
staje jeszcze dodaæ, ¿e trzeba
prawid³owo wybraæ ustawie-
nie zworek: JP1 w pozycji 1-
2 (dla AT89C5x dodatkowo
w 3-4), JP2 dla AT89Cx051
w pozycji 1-2, a dla AT89C5x
w zale¿noci od wersji (5/
12 V).
Przypominam o mo¿liwo-
ci sprawdzenia dzia³ania
prostego programu w progra-
matorze (po od³¹czeniu kabla
LPT). Nale¿y tylko ustawiæ
odpowiednio zworki. Jako
przyk³adowy program testowy
proponujê (Bascom):
WYKAZ ELEMENTÓW
Rezystory
R1: 1k
W
lub zwora (patrz
opis)
R2...R4, R6: 10k
W
W
R7: 10k
W
lub zwora (patrz
opis)
R8: 5,1k
W
Kondensatory
C1: 1nF
C2, C3: 20...40pF
C4, C9: 100nF
C5, C6, C7: 10
Rys. 3
niestety pasowa³y do pod-
stawki precyzyjnej w p³ytce
bazowej. Musimy wykonaæ
prost¹ przejciówkê - czyli
u¿yæ dwóch jednorzêdowych
podstawek precyzyjnych. One
bêd¹ ju¿ nam pasowa³y.
Ewentualnie, zamiast tego ca-
³ego zamieszania wokó³ U3,
mo¿emy u¿yæ kabla (tamy)
z wtykiem emulacyjnym.
Uruchomienie drugiej p³yt-
ki polega na prawid³owym
wpiêciu U3 do podstawki U1,
a nastêpnie zmierzeniu w pod-
stawkach napiêæ zasilaj¹cych
(uwaga na licznik U10, który
ma napiêcie zasilania na
nó¿kach 5 i 10). Jeli s¹ po-
prawne, to mo¿emy umieciæ
w nich uk³ady scalone. Jeli
nie, nale¿y dok³adnie przea-
nalizowaæ po³¹czenia. Teraz
wystarczy uruchomiæ program
i w³o¿yæ w podstawkê uk³ad
do zaprogramowania.
matora wymagane zasilanie,
ale bez przewodu od drukarki.
2. Ustawiamy jumper JP1
na pozycji 2-3 ( xtal ), a JP2 2-
3 (5 V - reset on ).
3. Wk³adamy uk³ad
AT89Cx051 do podstawki.
4. Zdejmujemy JP2 ( reset
off ) - od tej pory nasz pro-
gram jest wykonywany.
5. Program restartujemy
zak³adaj¹c ponownie JP2 na
pozycjê 2-3 (5 V).
6. Od³¹czamy zasilanie
i wyjmujemy zaprogramowa-
ny uk³ad.
Programowanie mikrokon-
trolerów AT89C5x przeprowa-
dza siê nastêpuj¹co:
1. Ustawiamy dwie zwor-
ki JP1 na pozycjach 1-2
( clock ) i 3-4 ( xtal ), a JP2 na
pozycjê 2-3 (5V).
2. Wpinamy (poprawnie!)
adapter AT89C5x do p³ytki
bazowej.
3. Pod³¹czamy do progra-
matora wymagane zasilanie
oraz przewód od drukarki.
4. Uruchamiamy program
My_x051 z nazw¹ pliku binar-
nego, którego zawartoæ chce-
my umieciæ w programowa-
nym uk³adzie, jako parametr.
5. Wk³adamy programowa-
ny uk³ad do podstawki.
6. Jeli mamy wersjê wy-
sokonapiêciow¹ uk³adu
(12 V zamiast 5 V), przesta-
wiamy jumper JP2 na pozycjê
1-2 (12 V).
7. Wykonujemy punkty 6,
7 i 8 dla AT89Cx051.
Oprogramowanie steruj¹ce
programatora bêdzie wci¹¿
rozwijane tak, aby nie wyma-
ga³o szybkiego CPU (w tej
chwili czas mierzony jest bar-
dzo dok³adnie, zajmuj¹c przy
tym znaczny czas procesora).
Dostêpna jest tak¿e wersja
przystosowana do pracy pod
opiek¹ systemem Windows
( rys. 3 ). Nowe wersje pojawi¹
siê na stronie autora: http://
nopsoft.republika.pl .
m
F/10V
Pó³przewodniki
U2: 7805
U9: CMOS 4040
U10: 74LS93
D1: 1N4148
T1, T2: BC547B
T3: BC547B lub MOSFET-N
BS170, BS109 (patrz opis)
Ró¿ne
U1: podstawka precyzyjna
DIP20
U3: dwa goldpin-y oraz
dwie podstawki precyzyjne
jednorzêdowe
U4: podstawka precyzyjna
DIP40
U9: podstawka DIL16
U10: podstawka DIL14
Q1: rezonator kwarcowy
4...12MHz
JP1: goldpin z dwoma
jumperami
JP2: goldpin z jumperem
J1: 36-nó¿kowe z³¹cze
drukarkowe (¿eñskie)
J2: goldpin
Obs³uga programatora
Programowanie uk³adu nie
jest zbyt skomplikowane. Naj-
pierw przedstawiê procedurê
programowania mikrokontro-
lerów AT89Cx051:
1. Pod³¹czamy do progra-
matora wymagane zasilanie
oraz przewód od drukarki.
2. Ustawiamy jumper JP1
na pozycji 1-2 ( clock ), a JP2
2-3 (5 V).
3. Uruchamiamy program
My_x051 z nazw¹ pliku binar-
nego, którego zawartoæ chce-
my umieciæ w programowa-
nym uk³adzie, jako parametr.
4. Wk³adamy uk³ad do
podstawki.
5. Przestawiamy jumper
JP2 na pozycjê 1-2 (12 V).
6. Wciskamy ENTER.
7. Po zakoñczeniu progra-
mu przestawiamy jumper JP2
z powrotem na pozycjê 2-3
(5 V).
8. Od³¹czamy zasilanie
(niekoniecznie) i (starannie)
wyjmujemy zaprogramowany
uk³ad.
P³ytkê bazow¹ mo¿emy
wykorzystaæ tak¿e jako prost¹
p³ytkê uruchomieniow¹:
1. Pod³¹czamy do progra-
Do
cpl p1.7
Wait 1
cpl p1.6
Loop
a dla assemblera:
loop1:
CPL P1.7
MOV A,#5
;zale¿nie od czêstotli-
;woci rezonatora
;kwarcowego
loop2:
PUSH ACC
CLR A
loop3:
MOV B,#0
DJNZ B,$
DJNZ ACC,loop3
POP ACC
DJNZ ACC,loop2
CPL P1.6
SJMP loop1
Pozostaje ju¿ tylko urucho-
miæ i sprawdziæ woltomierzem
lub sond¹ logiczn¹ czy zmie-
niaj¹ siê stany wyprowadzeñ
18 i 19 uk³adu AT89Cx051.
Janusz U¿ycki
nopsoft@skrzynka.pl
Uwagi koñcowe
Wiêkszoæ kompilatorów
generuje jedynie pliki hex .
Aby móc je wykorzystaæ w na-
Elektronika Praktyczna 2/2003
95
R5: 2k
32568865.054.png 32568865.055.png
Zgłoś jeśli naruszono regulamin