54
UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET KATEDRA ZA ELEKTRONIKU Smer: EKIS Predmet: EMBEDDED SISTEMI Digitalni voltmetar realizovan pomoću mikrokontrolera AT89S8253 Mentor: Studenti: Prof. dr. Mile Stojčev Uglješa Jovanović 11509 Marko Stojanović 11645

Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET KATEDRA ZA ELEKTRONIKU Smer: EKIS Predmet: EMBEDDED SISTEMI

Digitalni voltmetar realizovan pomoću mikrokontrolera AT89S8253

Mentor: Studenti: Prof. dr. Mile Stojčev Uglješa Jovanović 11509 Marko Stojanović 11645

Page 2: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

1

Sadržaj:

Sadržaj: .......................................................................................................................... 1 Uvod .............................................................................................................................. 2 Voltmetar....................................................................................................................... 3 A/D konvertor MCP3204 .............................................................................................. 7

Komunikacija MCP3204 A/D konvertora sa mikrokontrolerima ........................... 11

LCD displej Hitachi HD44780.................................................................................... 12 DDRAM memorija .................................................................................................. 14 CGROM memorija................................................................................................... 15 CGRAM memorija................................................................................................... 16 Komande, povezivanje i inicijalizacija LCD displeja............................................. 17

Mikrokontroler AT89S8253........................................................................................ 20 ROM memorija ........................................................................................................ 24 RAM memorija ........................................................................................................ 24 EEPROM memorija ................................................................................................. 24 SPI sistem................................................................................................................. 25

Projektni zadatak ......................................................................................................... 26 Hardver ........................................................................................................................ 26 Softver ......................................................................................................................... 31 Prilog A – Iskorišćenost memorija i RAM lokacija.................................................... 45

Prilog B – Kôd u Assembler-u .................................................................................... 47 Literatura ..................................................................................................................... 52 Biografije autora.......................................................................................................... 53

Page 3: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

2

Uvod

Smisao ovog zadatka je da se pomoću AT89S8253 mikrokontrolera na LCD

displeju prikažu vrednosti napona na ulazu 12-bitnog A/D konvertora. Za ovaj zadatak upotrebljen je A/D konvertor pod oznakom MCP3204 firme Microchip i LCD displej firme HITACHI pod oznakom HD44780. Za pisanje kôda, korišćen je kompajler mikroC firme Mikroelektronika, a za upis kôda u mikrokontroler korišćen je Microcontroller ISP Software korišćenjem AT89ISP programatora firme Atmel. U prvom poglavlju dat je elementarni uvod u voltmetre, odnosno u njihovu podelu i ključne razlike.

U drugom poglavlju opisan je A/D konvertor MCP3204 i objašnjen je njegov princip rada, inicijalizacija kao i komunikacija sa mikrokontrolerima.

U trećem poglavlju opisan je LCD HD44780, inicijalizacija kao i načini povezivanja.

U četvrtom poglavlju opisan mikrokontroler AT89S8253 u okvirima koji su bitni za ovaj projekat.

U petom poglavlju opisana je konkretna realizacija hardvera sa električnom šemom i izgledom celokupnog sistema.

U šestom poglavlju objašnjen je softver koji je korišćen za pisanje kôda i programiranje mikrokontrolera kao i način programiranja, takoñe je izlistan i korišćeni kôd u C-u kao i u Assembler-u.

Page 4: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

3

Voltmetar

Voltmetar je instrument za merenje napona izmeñu dve tačke u električnom

kolu. U pogledu načina obrade i prikaza rezultata merenja, postoji uobičajena podela na analogne i digitalne voltmetre. Primenom mikroračunarskih tehnika i tehnologija, moderne konstrukcije procesa merenja se delimično ili potpuno automatizuju, tako da se merni proces izvršava prema instaliranom softveru mikrokontrolera ili mikroračunara. Takve merne komponente danas su poznate kao pametni (smart) merni senzori i inteligentni merni moduli i instrumenti. Analogni voltmetri vrednost napona prikazuju pomeranjem kazaljke na skali pri čemu se pre merenja mora odabrati odgvorajući opseg merenja. Digitalni voltmetri vrednost prikazuju na numeričkom displeju. Na slici 1 prikazan je izgled analognog voltmetra.

Slika 1. Analogni voltmetar

Na slici 2 prikazan je izgled digitalnog voltmetra.

Slika 2. Digitalni voltmetar

Page 5: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

4

U svom razvoju, analogni voltmetri dostigli su visoki stepen usavršenosti tehnoloških i konstruktivnih rešenja, tako da su u dužem periodu imali dominantnu ulogu i značaj. Osnovna karakteristika analognih voltmetra jeste indikacija neprekidne prirodne funkcije promene merene veličine u vremenu, dok digitalni voltmetri prikazuju mernu informaciju u diskretnim vremenskim trenutcima. Ipak, osnovna prednost digitalnih voltmetra je kako u pogledu tačnosti i brzine merenja, tako i u mogućnosti jednostavnog memorisanja niza ponovljenih rezultata merenja u digitalnom obliku i što ne postoji gubitak informacija u daljoj obradi mernog signala. Analogne voltmetre sve više zamenjuju digitalni, meñutim, njihovi ulazni stepeni po svojoj prirodi i dalje moraju biti sa analognim procesiranjem.

Najduže su se u primeni zadržali merni instrumenti zasnovani na elektromehaničkom principu poreñenja merene i referentne veličine, kod kojih se posmatrana električna veličina posredno prevodi u mehaničku silu ili momemt, odnosno u translatorni ili rotacioni pomeraj pokretnog elementa po graduisanoj skali instrumenta. Ova vrsta instrumenata posebno je prisutna u oblasti elektrometrije u kojoj su merene veličine parametri elektrostatičkih polja (količina elektriciteta, električno polje ili potencijal). Zbog svojih izuzetnih karakteristika, od električnih mernih instrumenata analognog tipa, najviše se u primeni zadržao elektromehanički merni instrument sa obrtnim (kretnim) kalemom sa pokaznim elementom na skali - kazaljkom, koji se proizvodi kao panel instrument za ugradnju u električnim mernim ureñajima.

Princip analognog indikatora voltmetra prikazan je na slici 3a, a princip digitalne indikacije rezultata merenja prikazan je na slici 3b.

(a) (b)

Slika 3. Princip indikacije mernog signala u a) analognom i b) digitalnom obliku

Kod analognih voltmetra rezultat merenja koji pokazuje kazaljka može biti očitan sa proizvoljnom tačnošću, na primer, sa idealnom skalom i kazaljkom rezultat može biti 75,2345...V. Meñutim, pod uticajem različitih nesigurnosti na merni postupak, praktični značaj može imati samo očitani podatak 75,2V, koji može biti korisna informacija. Memorisanje i ponavljanje indikacije analognog signala

Page 6: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

5

relativno je teško, dok dalje procesiranje dovodi do neizbežnog gubitka merne informacije.

Kod digitalnih voltmetra merenje se odvija u diskretnim vremenskim trenutcima tk, k=1, 2, 3, 4. Ako je u datom slučaju vrednost najmanje moguće merene vrednosti (kvant), na primer 0,5V, znači da će merena vrednost napona u trenutku t2 biti 10,25<V<10,75 V, a digitalni indikator bi prikazao kao najverovatniju vrednost izmerenog napona od 10,50V. Ako je vrednost kvanta odreñena u skladu sa datom nesigurnošću merenja, onda prikazana vrednost predstavlja zaista upotrebljivu informaciju.

Digitalni voltmetri vrednost prikazuju na numeričkom displeju konvertovanjem vrednosti pomoću A/D konvertora, mogu imati automatski opseg merenja ili manuelno biranje, precizniji su od analognih što se postiže korišćenjem pojačavača. Na slici 4 prikazan je blok dijagam prostog digitalnog voltmetra.

A/D konvertorPojačavač i filtar

RegistarIzbor opsega merenja

Displej

Ulazni signal

Slika 4. Blok dijagram prostog digitalnog voltmetra

Na slici 5a i 5b prikazane su strukturne šeme voltmetra na principu manuelnog, odnosno automatskog izbora opsega merenja, respektivno.

(a)

Page 7: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

6

(b)

Slika 5. Strukturne šeme na principu (a) manulenog i (b) automatskog izbora opsega

Kod manuelnog principa, operater podešava opseg dok se na indikatoru ne dobije podatak o jednakosti mere i merene veličine, kada je ispunjen uslov da je x=kX0. U tom slučaju vrednost merene veličine se očitava na displeju. Za razliku od manuelnog postupka, podešavanje opsega ostvaruje se automatski posredstvom kontrolnog stepena na osnovu stanja izlaza stepena za poreñenje. Kontrolni stepen zamenjuje ulogu indikatora poreñanja i posmatrača sa slike 5a. Kada je ispunjen uslov da je x-kX0=0, posmatrač dobija rezultat merenja sa displeja. Voltmetar sa slike 2 je sa manulenim podešavanjem opsega merenja dok voltmetar sa slike 6 ima automatski izbor opsega.

Slika 6. Digitalni voltmetar sa automatskim opsegom

Page 8: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

7

A/D konvertor MCP3204

MCP3204 je 12-bitni A/D konvertor sa sukcesivnom aproksimacijom. Poseduje 4 kanala koji se mogu koristiti kao 4 nezavisna kanala ili kao 2 diferencijalna para. Diferencijalna nelinaernost (DNL) iznosi ±1 LSB dok integralna nelinearnost (INL) iznosi ±1 LSB.

Komunikacija sa ureñajima se izvodi korišćenjem serijskog interfejsa kompatibilnog sa SPI protokolom. Brzina uzorkovanja je do 100 ksps. Ovaj konvertor radi u širokom naponskom opsegu izmeñu 2.7V i 5.5V. Potrebne struje za napajanje iznose u stand by modu 500nA, a u aktivnom modu 320µA. Na slici 7 prikazan je izgled A/D konvertora i raspored pinova.

Slika 7. Izgled A/D konvertora i raspored pinova

U tabeli 1 prikazane su funkcije pinova A/D konvertora.

Broj pina Naziv pina Funkcija pina

1 CH0 analogni ulaz (prvi kanal)

2 CH1 analogni ulaz (drugi kanal)

3 CH2 analogni ulaz (treći kanal)

4 CH3 analogni ulaz (četvrti kanal)

5 N.C. bez funkcije

6 N.C. bez funkcije

7 DGND digitalna masa

8 CS/SHDN chip select/shutdown ulaz

9 DIN ulazi za serijske podatke

10 DOUT izlazi za serijske podatke

11 CLK serijski takt

12 AGND analogna masa

13 VREF referentni naponski ulaz

14 VDD napon napajanja (od 2.7V do 5.5V)

Tabela 1. Funkcije pinova

Page 9: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

8

Na slici 8 prikazan je funkcionalni blok dijagram A/D konvertora koga čine: 1. Multiplekser za ulazne kanale; 2. Sample and Hold kolo; 3. D/A konvertor; 4. komparator; 5. 12-bitni SAR (Successive Approximation Register); 6. pomerački (Shift) registar; 7. kontrolna logika.

Slika 8. Funkcionalni blok dijagram

MCP3204 nudi izbor izmeñu 4 nezavisna kanala i 2 pseudo-diferencijalna kanala. Konfiguracija se vrši kao deo serijske komande pre svake konverzije. Kada se koristi u pseudo-diferencijalnom modu svaki par kanala se programira tako da bude IN+ i IN- ulaz. IN+ ulaz može imati vrednost izmeñu IN- i Vref + IN-. IN- ulaz je ograničen na vrednost od ±100mV od vrednosti Vss-a.

Kada MCP3204 radi u pseudo-diferencijalnom modu ukoliko je napon na IN+ ulazu jednak ili manji od napona na IN- ulazu izlazni kôd će biti 000h. Ukoliko je napon na IN+ jednak ili veći od (Vref+IN-)–1LSB izlazni kôd će biti FFFh. Ukoliko je napon na IN- ulazu manji od Vss za više od jednog LSB-a napon na ulazu IN+ mora biti manji od Vss-a kako bi izlazni kôd bio 000h. Ukoliko je napon na IN- ulazu veći od Vss za više od jednog LSB-a napon na ulazu IN+ mora biti veći od Vref-a kako bi izlazni kôd bio FFFh.

Referentni napon Vref odreñuje analogni ulazni opseg, kako se on smanjuje smanjuje se i vrednost LSB-a. Digitalni izlazni kôd koji stvara A/D konvertor se dobija iz funkcije:

Vref

VinKod

∗= 4096

pri čemu je Vin ulazni napon a Vref referentni napon.

Page 10: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

9

Komunikacija sa MCP3204 A/D konvertorom se obavlja pomoću standardnog SPI kompatibilnog serijskog interfejsa. Inicijalizacija komunikacije sa bilo kojim ureñajem se vrši dovoñenjem logičke nule na pin CS. Prvi primljeni taktni impuls zajedno sa signalom CS na nuli i signalom DIN na jedinici generisaće startni bit za serijsku komunikaciju. Zatim, iza startnog bita sledi SGL/DIFF bit i njime se odreñuje da li će se za konverziju koristiti jedan kanal u nezavisnom ili dva kanala u diferencijalnom modu rada. Naredna tri bita (D2, D1 i D0) odreñuju odgovarajuću konfiguraciju ulaznih kanala pri čemu vrednost bita D2 nije bitna za ovaj A/D konvertor. Sa semplovanjem analognog signala počinje se na četvrtoj rastućoj ivici taktnog signala nakon prolaska startnog bita a završetak semplavanja je na petoj opadajućoj ivici takta. Za potrebe ovog zadatka koristi se kanal CH0 u nezavisnom modu rada.

U tabeli 2 prikazana je konfiguracija bitova za MCP3204.

Kontrolni bitovi

SINGLE/DIFF D2 D1 D0 Konfiguracija

Selekcija kanala

1 X 0 0 nezavisna CH0

1 X 0 1 nezavisna CH1

1 X 1 0 nezavisna CH2

1 X 1 1 nezavisna CH3

0 X 0 0 diferencijalna CH0=IN+ CH1=IN-

0 X 0 1 diferencijalna CH0=IN- CH1=IN+

0 X 1 0 diferencijalna CH2=IN+ CH3=IN-

0 X 1 1 diferencijalna CH2=IN- CH3=IN+

Tabela 2. Konfiguracija bitova

Nakon prolaska bita D0 potrebno je da proñe još jedan takt za završenje

sample and hold perioda. Na opadajućoj ivici narednog takta na DOUT izlazu se javlja null bit. Narednih 12 bitova na izlazu DOUT označavaju rezultat konverzije pri čemu se prvi javlja MSB bit, kao što je prikazano na slici 9. Podaci se na izlazu uvek šalju na opadajućoj ivici takta.

Page 11: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

10

Slika 9. Komunikacija A/D konvertora MCP3204

Ukoliko su svih 12 bitova poslati na izlaz DOUT a pin CS je još uvek na

logičkoj nuli A/D konvertor će na izlaz opet poslati rezultat konverzije ali počevši od LSB-a ka MSB-u, kao što je prikazano na slici 10. Ukoliko je nakon i ovog slanja pin CS još uvek na logičkoj nuli na izlaz DOUT se šalju nule.

Slika 10. Komunikacija A/D konvertora MCP3204 ukoliko se CS bit ne postavi na 1

Za vreme tDATA smanjuje se struja polarizacije i isključuje se komparator dok

referentni ulaz postaje čvor sa visokom impedansom pri čemu se za to vreme šalje LSB bit.

Page 12: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

11

Komunikacija MCP3204 A/D konvertora sa mikrokontrolerima

U komunikaciji sa mikrokontrolerima obično se šalju i primaju 3 bajta. Takoñe

je potrebno da SPI interfejs mikrokontrolera bude podešen tako da taktuje podatke na opadajućoj ivici a da ih lečuje na rastućoj. Na slici 11 prikazana je komunikacija izmeñu mikrokontrolera i A/D konvertora u SPI Mode 0,0 režimu rada za koji je potrebno da signal SCLK iz mikrokontrolera bude na logičkoj nuli.

Slika 11. Komunikacija izmeñu mikrokontrolera i A/D konvertora

Kao što je prikazano na slici 11 prvi bajt poslat A/D konvertoru od strane mikrokontrolera sadrži 5 nula nakon čega slede startni bit, SGL/DIFF bit i D2 bit. Po slanju drugog bajta A/D konvertoru u prijemnom registru mikrokontrolera sadržaće se 3 nepoznata bita (DOUT je na stanju visoke impedanse za prva dva takta), zatim sledi null bit nakon čega slede 4 bita najveće težine rezultata konverzije (B11-B8). MSB bit se šalje na opadajućoj ivici dvanaestog taktnog impulsa. Po slanju trećeg bajta A/D konvertoru prijemni registar mikrokontrolera će sadržati 8 nižih bitova rezultata konverzije. Ovakvim metodom slanja omogućava se lakša obrada rezultata konverzije.

Page 13: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

12

LCD displej Hitachi HD44780

LCD displej služi za ispisivanje poruka po minijaturnom ekranu i sadrži kontroler HD44780 firme Hitachi. LCD displej prikazan je na slici 12.

Slika 12. LCD displej Hitachi HD44780

LCD displej se sastoji iz 2 reda sa po 16 linija u kojima se ispisuju karakteri

dok se svako od ovih polja sastoji od matrice veličine 5x8 piksela kao što je prikazano na slici 13.

Slika 13. Izgled matrice LCD displeja

Displej prikazuje sva slova abecede, grčka slova, znakove interpukcije,

matematičke simbole itd. Pored toga moguće je prikazati i znakove koje korisnik sam isprojektuje. Takoñe poseduje i automatsko pomeranje poruka preko ekrana (šiftovanje ulevo i udesno), pojavljivanje kursora, pozadinsko osvetljenje plave boje i slično.

Kontrast na ekranu zavisi od napona napajanja i od toga da li se poruke ispisuju u jednom ili dva reda. Zbog toga se na izvod označen sa Vee priključuje promenljivi napon od 0 – Vdd (obično se za ovo koristi trimer potenciometar).

Page 14: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

13

LCD displej se sastoji iz 16 pinova čija je uloga opisna u tabeli 3.

Pin Naziv Uloga Logičko stanje Opis

1. Vss Masa - 0V

2. Vdd Napajanje - +5V

3. Vee Kontrast - 0 – Vdd

0 D0 – D7 se tumače kao komande 4. RS

1 D0 – D7 se tumače kao podaci

0 Upis podataka (iz mikrokontrolera) 5. R/W

1 Čitanje podataka (u mikrokontroler)

0 Onemogućen pristup LCD-u

1 Normalan rad

6. En K

ontr

ola

rad

a

iz 1 u 0 Podaci/komande se prenose u LCD

7. D0 0/1 Bit 0 LSB

8. D1 0/1 Bit 1

9. D2 0/1 Bit 2

10. D3 0/1 Bit 3

11. D4 0/1 Bit 4

12. D5 0/1 Bit 5

13. D6 0/1 Bit 6

14. D7

Po

daci

/ ko

man

de

0/1 Bit 7 MSB

15. LED+ - +5V

16. LED–

Pozadinsko osvetljenje - 0V

Tabela 3. Funkcija i opsi pinova LCD-a

Unutar displeja se nalaze 3 memorijska bloka:

1. DDRAM – Display Data RAM, 2. CGROM – Character Generator ROM, 3. CGRAM – Character Generator RAM.

Page 15: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

14

DDRAM memorija

U ovu memoriju smeštaju se karakteri koji treba da budu prikazani na displeju.

Veličina ove memorije je dovoljna za smeštanje 80 znakova, a jedan deo ovih lokacija ima direktne veze sa poljima na ekranu. Na slici 13 prikazana je adresna mapa DDRAM memorije.

Slika 13. Adresna mapa DDRAM memorije

Displej se konfiguriše tako da automatski uvećava adrese (pomeranje udesno) i

zatim postavi početnu adresu za poruku koja treba da se ispiše. Nakon toga svi karakteri koji se pošalju linijama D0 – D7 pojaviće se ispisani u vidu poruke s leva u desno. Ako se pošalje više od 16 karaktera oni će i dalje biti memorisani ali neće biti vidljivi. Da bi se prikazali, treba koristiti komandu za pomeranje (shift) čime se dobija efekat da poruka „prelazi“ preko ekrana.

Ako se omogući prikazivanje kursora, on će se pojaviti na mestu koje je trenutno adresirano, odnosno, karakteri se pojavljuju na mestu kursora dok se on automatski pomera na sledeće adresirano polje.

Pošto je ova memorija RAM tipa, podaci u nju mogu da se upisuju i da se očitavaju ali se sadržaj nepovratno gubi nestankom napona napajanja.

Page 16: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

15

CGROM memorija

U ovu memoriju fabrički je upisana mapa sa izgledom svih karaktera koje

displej može da prikaže, svakom karakteru odgovara jedna memorijska lokacija. Na slici 14 prikazana je memorijska mapa CGROM memorije.

Slika 14. Memorijska mapa CGROM memorije

Adrese memorijskih lokacija CGROM-a se poklapaju sa standardnim ASCII vrednostima karaktera. To znači da, ukoliko se u programu koji mikrokontroler izvršava zahteva ispisivanje nekog karaktera, na izlazu će se pojaviti binarna vrednost karaktera. Kada se binarni broj učita u LCD displej, prikazaće se simbol koji se nalazi na memorijskoj lokaciji koja odgovara binarnom broju u CGROMU-u. Ovo važi za sva slova abecede (velika i mala) ali ne i za brojeve.

Page 17: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

16

CGRAM memorija

Pored toga što prikazuje sve standardne karaktere, LCD displej može da prikaže i oznake koje korisnik sâm definiše. To omogućava ispisivanje ćirili čnih fontova kao i drugih simbola koji staju u okvir veličine 5x8 piksela. Sve to omogućava mala RAM memorija (CGRAM) veličine 64 bajta. Veličina registra u ovoj memoriji je 8 bita ali se koristi samo nižih 5. Logička jedinica u svakom registru predstavlja zatamnjen piksel, dok osam lokacija uzetih zajedno predtavljaju jedan znak. Na slici 15 prikazan je primer simbola koje korisnik može sam da definiše.

Slika 15. Primer simbola koje korisnik definiše

Simboli se definišu na početku programa a njihovo prikazivanje se vrši

pozivanjem adrese (prva kolona u CGROM mapi).

Page 18: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

17

Komande, povezivanje i inicijalizacija LCD displeja

Svi podaci koji se prenose na LCD dsiplej preko izvoda D0 – D7 biće tumačeni

kao komande ili podaci u zavisnosti od logičkog stanja na pinu RS. RS = 1 – Bitovi D0 – D7 su adrese karaktera koji treba da se prikažu na

displeju.Ugrañeni procesor adresira ugrañenu mapu karaktera i prikazuje odgovarajući znak. Mesto pojavljivanja je odreñeno DDRAM adresom.

RS = 0 – Bitovi D0 – D7 su komande koje odreñuju način rada displeja. Spisak svih komandi koje LCD displej podržava su navedene u tabeli 5.

Komanda RS R/W D7 D6 D5 D4 D3 D2 D1 D0

Obriši displej 0 0 0 0 0 0 0 0 0 1

Kursor na početak 0 0 0 0 0 0 0 0 1 X

Unos karaktera 0 0 0 0 0 0 0 1 I/D S

Uključeno/isključeno 0 0 0 0 0 0 1 D U B

Pomeranje 0 0 0 0 0 1 D/C R/L x X

Način rada 0 0 0 0 1 DL N F x x

CGRAM adresa 0 0 0 1 CGRAM adresa

DDRAM adresa 0 0 1 DDRAM adresa

Čitanje BUSY flega (BF) 0 1 BF DDRAM adresa

Upis u CGRAM ili DDRAM 1 0 D7 D6 D5 D4 D3 D2 D1 D0

Čitanje iz CGRAM-a/DDRAM-a 1 1 D7 D6 D5 D4 D3 D2 D1 D0

Tabela 5. Komande LCD displeja

I/D 1 = Inkrement R/L 1 = Pomeranje udesno 0 = Dekrement 0 = Pomeranje ulevo S 1 = Uključen šift registra DL 1 = 8-bitno povezivanje 0 = Isključen šift registra 0 = 4-bitno povezivanje D 1 = Uključen displej N 1 = Ispis u dve linije 0 = Isključen displej 0 = Ispis u jednoj liniji U 1 = Vidljiva linija kursora F 1 = Format 5x10 0 = Bez linije kursora 0 = Format 5x8 B 1 = Kursor treperi D/C 1 = Pomeranje displeja 0 = Kursor ne treperi 0 = Pomeranje kursora

U zavisnosti od toga koliko se linija koristi za povezivanje sa mikrokontrolerom razlikuju se 8-bitni i 4-bitni način rada LCD displeja. U prvom

Page 19: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

18

slučaju podaci se prenose preko izvoda D0 – D7 onako kako je već objašnjeno. U drugom slučaju, za komunikaciju se koriste samo 4 viša bita (D4 – D7) dok se ostali mogu ostaviti nepovezani kao što je prikazano na slici 16. U tom slučaju, svaki podatak se LCD-u šalje u dva koraka: prvo se šalju 4 viša bita a zatim se šalju 4 niža bita.

Slika 16. 8-bitni i 4-bitni način rada LCD-a

Odmah nakon dovoñenja napona napajanja LCD displej se automatski resetuje. Nakon toga displej je spreman za rad i nalazi se u fabrički podešenom načinu rada što znači:

1. Displej je obrisan; 2. Način rada:

DL = 1komunikacija se izvodi 8-bitnom vezom; N = 0 poruke se ispisuju u jednom redu; F = 0 koriste se fontovi formata 5x8 tačaka;

3. Uključeno/isključeno: D = 0 displej je isključen; U = 0 ne vidi se linija kursora; B = 0 isključeno je blinkanje kursora;

4. Unos karaktera: ID = 1 adrese na ekranu se automatski uvećavaju za 1 S = 0 isključeno pomeranje (shift)

Page 20: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

19

Algoritam po kome se obavlja inicijalizacija u slučaju 4-bitnog povezivanja prikazan je na slici 17.

Slika 17. Algoritam inicijalizacije LCD-a

Page 21: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

20

Mikrokontroler AT89S8253

Pošto je realizacija projekta bazirana na mikrokontroleru AT89S8253, potrebno je opisati njegovu strukturu i osnovne osobine neophodne za realizaciju projekta. Na slici 18 prikazan je izgled mikrokontrolera AT89S8253.

Slika 18. Izgled mikrokontrolera

AT89S8253 je 8-bitni mikrokontroler visokih performansi, koji je izrañen u CMOS tehnologiji. Poseduje sledeće karakteristike:

• Pripada familiji mikrokontorlera 8051. • 12KB fleš memorije za smeštanje programa.

o Program se upisuje pomoću SPI serijskog interfejsa. o Program je moguće upisati/obrisati do 1000 puta.

• 2KB EEPROM memorije. • 256B internog RAM-a za smeštanje promenljivih. • Napon napajanja izmeñu 4-6V. • Radna frekvencija izmeñu 0-24MHz. • 32 ulazno-izlazne linije rasporeñene u 4 porta sa po 8 pinova. • Tri 16-bitna tajmera-brojača. • 9 izvora interapta. • Programabilnu UART serijsku komunikaciju. • Programabilni Voč dog (Watch Dog) tajmer. • 2 dodatna moda rada za smanjenje potrošnje, Idle i Power-down mod. • Trostepenu zaštitu upisanog programa.

Na slici 19 prikazana je struktura AT89S8253 mikrokontrolera.

Page 22: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

21

Slika 19. Struktura mikrokontrolera AT89S8253

Na slici 20 prikazan je izgled kućišta mikrokontrolera sa obeleženim nazivima pinova.

Page 23: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

22

Slika 20. Raspored pinova i izgled kućišta PDIP40

Funkcija i opis pinova mikrokontolera je nadalje detaljnije objašnjena: • Vcc – napon napajanja (4-6V). • GND – masa. • Port 0 (P0.0 – P0.7) – Kada se definišu kao izlazi, na svaki od ovih pinova

može se priključiti do 8 TTL ulaznih kola. Kada se odredi da rade kao ulazi, tada su to ulazi beskonačne unutrašnje otpornosti. To znači da njihov potencijal nije definisan u odnosu na masu odnosno takvi ulazi se ponašaju kao da „vise u vazduhu“. Ako se koristi dodatna memorija, na ovim izvodima se naizmenično pojavljuju podaci i adrese (A0-A7) namenjeni za pristup ovom dodatnom memorijskom čipu. Signal na ALE pinu, pritom, odreñuje šta će i u kom trenutku biti prosleñeno na port.

• Port 1 (P1.0 – P1.7) – Kada rade kao izlazi, na svaki od ovih pinova može se priključiti do 4 TTL ulaza. Kada se odredi da rade kao ulazi, ovi izvodi se ponašaju kao standardni TTL ulazi, što znači da je na svaki od njih interno priključen otpornik relativno velike otpornosti prema pozitivnom polu napajanja i na njima postoji napon od 5V. Pored ovog, izvodi ovog porta imaju i alternativnu ulogu objašnjenu u tabeli 5.

Page 24: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

23

Pin na portu Alternativna funkcija

P1.0 T2 (ulaz tajmera 2)

P1.1 T2EX (kontrolni ulaz tajmera 2)

P1.4 SS (kontrolni ulaz SPI sistema)

P1.5 MOSI (ulaz/izlaz SPI sistema)

P1.6 MISO (ulaz/izlaz SPI sistema)

P1.7 SCK (taktni signal SPI sistema)

Tabela 5. Alternativne funkcije porta P1

• Port 2 (P2.0 – P2.7) – Kada se ovi izvodi koriste kao ulazi ili izlazi, njihove osobine su po svemu slične portu P1. Ako se koristi spoljna memorija, ovde će se pojaviti viši adresni bajt (A8-A15) za adresiranje dodatnog čipa.

• Port 3 (P3.0 – P3.7) – Kao i na portu P1, izvodi se i ovde koriste kao univerzalni ulazi ili izlazi ali imaju i dodatnu ulogu prikazanu u tabeli 6.

Pin na portu Alternativna funkcija

P3.0 RXD (serijski ulaz)

P3.1 TXD (serijski izlaz)

P3.2 0INT (spoljni interapt 0)

P3.3 1INT (spoljni interapt 1)

P3.4 T0 (spoljni ulaz tajmera 0)

P3.5 T1 (spoljni ulaz tajmera 1)

P3.6 WR (signal za upis u spoljnu memoriju)

P3.7 RD (signal za čitanje iz spoljne memorije)

Tabela 6. Alternativne funkcije porta P3

• RST – pozitivan naponski impuls na ovom pinu resetuje mikrokontroler. • ALE/PROG – U normalnom radu, ovaj pin emituje povorku impulsa čija je

frekvencija jednaka 1/6 frekvencije glavnog oscilatora. Ako se koristi dodatna memorija, signal na ovom pinu upravlja dodatnim registrom u kojem se privremeno smešta niži adresni bajt (A0-A7). Za vreme upisivanja programa u mikrokontroler, ovaj pin takoñe služi kao kontrolni ulaz.

• PSEN – Signal sa ovog pina koristi se za čitanje spoljne programske ROM memorije.

• EA/VPP – Kada se ovaj pin spoji na potencijal mase, mikrokontroler će programske instrukcije uzimati iz spoljne programske memorije.

• XTAL1 – Ulaz internog oscilatora. • XTAL2 – Izlaz internog oscilatora.

Page 25: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

24

ROM memorija

ROM memorija je kapaciteta 12KB i izvedena je u FLASH tehnologiji, što

omogućava veliki broj upisa/brisanja programa. Njeno programiranje se vrši preko ugrañenog SPI modula (Serial Peripheral Interface). Moguće je da se ROM „dogradi“ spoljnim čipom.

RAM memorija

RAM memorija se sastoji od 3 bloka sa po 128 registara čija struktura odgovara

8051 standardu kao što je prikazano na slici 21: • 128 registara opšte namene, • 128 memorijskih lokacija rezervisanih za SFR registre. Iako su samo neke od

njih stvarno iskorišćene, prazne lokacije ne treba da se koriste za smeštanje promenljivih.

• 128 dodatnih registara koji su slobodni za upotrebu (nemaju neku posebnu namenu). Pošto imaju iste adrese kao i SFR registri njima se pristupa indirektnim putem.

Slika 21. RAM memorija

EEPROM memorija

Ovo je posebna vrsta memorije koja ima osbine i RAM-a i ROM-a, podaci se

upisuju i brišu u toku rada ali ostaju sačuvani i posle nestanka napona napajanja. Ovaj mikrokontroler ima ukupno 2KB (2048 lokacija) EEPROM-a.

Page 26: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

25

SPI sistem

Mikrokontroler AT89S8253 pored UART-a poseduje još sistem za serijsku komunikaciju koji ne spada u standard 8051. To je SPI sistem koji omogućava brzu sinhronu vezu izmeñu kontrolera i jednog ili više periferijskih ureñaja koji podržavaju SPI sistem. Kod ovakve veze uvek je jedan ureñaj glavni (master). On odreñuje brzinu, smer prenosa (da li se podaci šalju ili primaju) i format podataka. Na drugom kraju veze nalazi se slave, koji je u podreñenom položaju, što znači da ne može pokrenuti razmenu podataka i mora da se prilagoñava uslovima koje nameće master strana. Na slici 22 prikazan je SPI sistem.

Slika 22. SPI sistem

Podaci se prenose full duplex vezom pomoću 3 provodnika koji se povezuju sa izvodima MISO (P1.6), MOSI (P1.5) i SCK (P1.7). Četvrti kontorlni pin SS se na strani mastera ne koristi i može se biti iskorišćen kao ulaz/izlaz dok na strani slejva mora biti na nivou 0V. Ako se na SS izvod slejva dovede signal logičke jedinice njegov SPI sistem se deaktivira i MOSI pin može da se iskoristi kao ulaz za neku drugu namenu.

Page 27: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

26

Projektni zadatak

Shodno priloženoj šemi, realizovati mikroračunarski sistem zasnovan na

mikrokontroleru AT89S8253. Upis programa je preko PC-a (serijski ili paralelno). Mikrokontroler se koristi za pretvaranje digitalnog podatka sa A/D konvertora

MCP3204 u ASCII kôd, koji se prikazuje na LCD displeju. Realizovati voltmetar, kod koga je ulazni napon, napon koji se dovodi na ulazne kanale A/D konvertora. Odabir kanala vršiti DIP prekidačem i to po sledećem rasporedu:

• prekidač 1 – kanal 0 u nezavisnom modu, meri napon sa potenciometra; • prekidač 2 – kanal 1 u nezavisnom modu, meri napon sa spoljašnjeg izvora; • prekidač 3 – kanali 2 i 3 u diferencijalnom modu, mere razliku napona na

svojim ulazima. Vršiti konverziju ulaznih napona u granicama od 0V do 5.0V. Zatim se, u

mikrokontroleru, digitalni podatak pretvara u oblik koji je pogodan za prikazivanje na LCD displeju, tj. u ASCII kôdu. Na LCD-u se može očitati vrednost napona na ulazima A/D konvertora MCP3204.

Hardver

Za hardversku realizaciju ovog sistema iskorišćena je PCB pločica koju je

projektovao student Jovica Jovanović. Blok šema PCB-a je data na slici 23. Na šemi je prikazano kako su povezani: mikrokontroler AT89S8253, ispravljač napona sa 230V AC 50Hz na 5V DC (transformator je smešten na raster ploči), bafersko kolo 74LS244 kao pomoćno kolo za spregu sa računarom preko paralelnog porta, kolo MAX232 za spregu sa računarom preko RS232 porta i LCD displej Hitachi HD44780 za prikazivanje vrednosti napona.

Gornja i donja strana štampane ploče (layout) su prikazane na slikama 24 i 25, respektivno.

Kao što je prikazano na slici 23, na PORT 0 je povezan LCD displej, a na slici 26 prikazana je veza A/D konvertora sa mikrokontrolerom odnosno na SPI interfejs.

Page 28: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

27

Slika 23. Blok šema elemenata smeštenih na PCB ploči

Page 29: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

28

Slika 24. Layout gornje strane PCB-a

Slika 25. Layout donje strane PCB-a

Page 30: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

29

Na raster ploči pored trafoa smešten je A/D konvertor sa pratećim komponentama i LCD displej. Na slici 26 je prikazana veza mikrokontrolera sa A/D konvertorom preko SPI protokola a na slici 27 prikazan je izgled sistema.

Slika 26. Veza mikrokontrolera sa A/D konvertorom

Slika 27. Izgled sistema

Page 31: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

30

Spisak upotrebljenih komponenti dat je u tabeli 7.

Komponente Broj komada

mikrokontroler AT89S8253 1

A/D konvertor MCP3204 1

LCD 2x16 karaktera 1

74LS244 1

MAX232 1

LM7805 1

QUARTZ 11.0592 MHz 1

grec 1A-250V 1

podnožje 40DIL 1

podnožje 20DIL 1

podnožje 16DIL 1

podnožje 14DIL 1

DSUB9 konektor, ženski 1

DSUB25 konektor, ženski 1

prekidač DIP4 2

trafo 9V 500mA 1

LED plava 1

BC577 PNP tranzistor 1

elektrolitski kondenzator 470µF/25V 1

elektrolitski kondenzator 100µF/25V 1

elektrolitski kondenzator 10µF/16V 5

blok kondenzator 100nF/63V 3

otpornik 4k7 1/4W 5

otpornik 1k 1/4W 2

otpornik 100Ω 1/4W 6

otpornik 10k 1/4W 3

potenciometar 10k 2

mikroprekidač 5mm 1

raster ploča 10×16 cm 1

priključni kabl za 230V 1

Tabela 7. Spisak upotrebljenih komponenata

Page 32: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

31

Softver

Za pisanje kôda iskorišćen je program mikroC a kôd je pisan u C-u. Osnovni razlog za korišćenje ovog kompajlera se ogleda u par činjenica:

• Pisanje kôda u C-u korišćenjem integrisanog editora koji pruža automatsku kontrolu i upozorenja vezana za sintaksu kôda i automatsku korekciji pojedinih grešaka;

• Preglednost strukture programa (kôda), promenljivih i funkcija omogućava Code explorer;

• Programer ima na raspolaganju veliki broj integrisanih biblioteka i rutina, koje značajno ubrzavaju pisanje programa;

• Jasan asemblerski kôd i standardna kompatibilnost generisanih HEX datoteka toka programa preko ugrañeg debagera (debugger).

Instalacija počinje pokretanjem aplikacije mikroC_PRO_8051_Build.2.20.exe, po pokretanju aplikacije pojavljuje se prozor sa naredne slike.

Instalacija se nastavlja klikom na Next. Prateći uputstva potrebno je nekoliko puta kliknuti na dugme Next sve dok se ne doñedo prozora sa naredne slike.

Page 33: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

32

Klikom na Finish istalacija se završava.

Po startovanju kompajlera potrebno je kreirati novi projekat što je opisano u narednim postupcima. Iz menija Project odabere se New Project kao što je prikazano na slici.

Page 34: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

33

Zatim je potrebno odabrati tip mikrokontrolera, u ovom slučaju to je AT89S8253.

Nakon odabira mikrokontrolera potrebno je uneti frekvenciju kristala koja u ovom slučaju iznosi 11.0592MHz.

Page 35: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

34

Po upisu frekvencije kristala potrebno je odabrati jedan od 3 ponuñena memorijska modula, u ovom slučaju dovoljan je Small memorijski model.

Zatim je potrebno odabrati putanju i naziv projekta.

Page 36: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

35

U narednom koraku je potrebno priključiti neke fajlove projektu ako postoje.

U narednom koraku projektu se dodaju biblioteke, u ovom slučaju potrebno je izabrati Include All (Default) .

Page 37: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

36

Konačno dolazi se do kraja pa je potrebno kliknuti na Finish.

Klikom na Finish otvara se novi projekat i nakon toga potrebno je uneti kôd u Code Editor.

Page 38: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

37

Na slici 28 prikazan je algoritam rada programa korišćenog u ovom zadatku.

Definicija pinova LCD-a i ADC-a

Inicijalizacija LCD-a i SPI-a

Merenje

Izbor kanala

Očitavanje napona sa kanala

Konverzija u ADC-u

Ispis vrednosti napona na LCD-u

Slika 28. Algoritam rada programa

Page 39: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

38

Kôd korišćen u ovom zadatku je nadalje izlistan, a u komentaru su opisani blokovi iz algoritma uz dodatna objašnjenja na kraju: 01: // Definisanje pinova LCD-a i ADC-a 02: sbit LCD_RS at P3_6_bit; // LCD - pin RS 03: sbit LCD_EN at P3_7_bit; // LCD - pin EN 04: sbit LCD_D4 at P0_4_bit; 05: sbit LCD_D5 at P0_5_bit; 06: sbit LCD_D6 at P0_6_bit; 07: sbit LCD_D7 at P0_7_bit; 08: sbit ADC_CS at P1_4_bit; // ADC - pin CS 09: // Kraj definisanja pinova 10: 11: unsigned int vrednost; 12: // Inicijalizovanje LCD-a i SPI-a 13: void Init() 14: LCD_Init(); // inicijalizovanje LCD-a 15: LCD_Cmd(_LCD_CLEAR); // brisanje ekrana LCD-a 16: LCD_Cmd(_LCD_CURSOR_OFF); // iskljucenje kursora na LCD-u 17: SPI1_Init(); // inicijalizovanje SPI-a 18: ADC_CS = 1; // deselektovanje ADC-a, CS=1 19: 20: // Kraj inicijalizovanja 21: 22: //Obrada analogne vrednosti napona u ADC-u 23: unsigned int ADC(unsigned short mod_rada, unsigned short kanal) 24: unsigned int rezultat; // vraca 0..4096 25: ADC_CS = 0; // selektovanje ADC-a, CS=0 26: SPI1_Write(mod_rada); // Mod rada, single ili differential 27: kanal = kanal << 6; // bitovi 7 i 6 (D1, D0) 28: rezultat = SPI1_Read(kanal) & 0x0F; // salje D1 i D0 a prima B11..B8 29: rezultat = rezultat << 8; // smesta B11..B8 u gornji bajt rezultata 30: rezultat |= SPI1_Read(0); // smesta B7..B0 u donji bajt rezultata 31: ADC_CS = 1; // deselektovanje ADC-a, CS=1 32: return rezultat; 33: 34: // Kraj obrade 35: 36: // Ispisivanje vrednosti napona na LCD-u 37: void ispis(unsigned int napon) 38: unsigned char i; 39: long jlong; 40: jlong = (long)napon * 5000; 41: jlong = jlong / 4095; 42: i = jlong /1000; 43: LCD_Out(2, 2, "Napon:"); // ispisuje rec Napon: 44: LCD_Chr(2, 9, 48+i); // ispisuje prvu cifru 45: LCD_Out(2, 10, "."); // ispisuje tacku 46: i = (jlong /100) % 10; 47: LCD_Chr(2, 11, 48+i); // ispisuje prvu decimalu 48: i = (jlong /10) % 10; 49: LCD_Chr(2, 12, 48+i); // ispisuje drugu decimalu 50: i = jlong % 10; 51: LCD_Chr(2, 13, 48+i); // ispisuje trecu decimalu 52: LCD_Out(2, 15, "V"); // ispisuje V 53: 54: // Kraj ispisivanja vrednosti 55: 56: // Glavna petlja programa 57: void main() 58: Init(); // inicijalizacija SPI-a i LCD-a 59: while(1) 60: LCD_Out(1,3,"Izbor kanala"); 61: LCD_Out(2,3,"P1 P2 P3"); 62: if (P1_3_bit) // kanal 0 kao single 63: LCD_Cmd(_LCD_CLEAR); 64: LCD_Out(1,5,"Kanal 0"); // ispis reci u prvom redu LCD-a

Page 40: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

39

65: vrednost = ADC(6, 0); // ocitavanje napona sa kanala i obrada 66: ispis(vrednost); // prikaz vrednosti na LCD-u 67: Delay_ms(1000); // pauza 68: LCD_Cmd(_LCD_CLEAR); 69: 70: if (P1_2_bit) // kanal 1 kao single 71: LCD_Cmd(_LCD_CLEAR); 72: LCD_Out(1,5,"Kanal 1"); // ispis reci u prvom redu LCD-a 73: vrednost = ADC(6, 1); // ocitavanje napona sa kanala i obrada 74: ispis(vrednost); // prikaz vrednosti na LCD-u 75: Delay_ms(1000); // pauza 76: LCD_Cmd(_LCD_CLEAR); 77: 78: if (P1_1_bit) 79: LCD_Cmd(_LCD_CLEAR); // kanali 2 i 3 kao differential 80: LCD_Out(1,3,"Kanali 2 i 3"); // ispis reci u prvom redu LCD-a 81: vrednost = ADC(4, 2); // ocitavanje napona sa kanala i obrada 82: ispis(vrednost); // prikaz vrednosti na LCD-u 83: Delay_ms(1000); // pauza 84: LCD_Cmd(_LCD_CLEAR); 85: 86: 87: 88: // Kraj glavne petlje

Na početku programa potrebno je definisati pinove sa mikrokontrolera za četiri viša bita za podatke sa LCD displeja, kao i pinove Enabled i Reset a sa A/D konvertora pin Chip Select što je predstavljeno linijama kôda od 02 do 08.

Zatim sledi inicijalizovanje LCD displeja i SPI protokola u funkciji Init koja ne vraća nikakav rezultat. Funkcija zauzima linije kôda od 13 do 19.

U funkciji ADC se setuje A/D konvertor, odnosno vrši odabir moda rada kao i kanala, pa se potom prihvata rezultat konverzije koji zatim funkcija vraća po pozivanju. Funkcija zauzima linije kôda od 23 do 33.

Potom sledi funkcija ispis u kojoj se na LCD displeju ispisuje vrednost napona sa ulaza. Funkcija zauzima linije kôda od 37 do 53.

U funkciji main prvo se poziva funkcija Init za inicijalizaciju LCD displeja i SPI protokola, zatim se u beskonačnoj petlji provera koji pin je na stanju logičke jedinice odnosno koji prekidač je uključen a samim tim i odabran kanal sa A/D konvertora. Po odabiru kanala sa njega se očitava analogna vrednost koja se zatim konvertuje u digitalnu pozivom funkcije ADC nakon čega se ispisuje na LCD displeju pozivom funkcije ispis. Po isključenju prekidača program se vraća u početno stanje gde čeka novo uključenje nekog od prekidača. Funkcija main zauzima linije kôda od 57 do 87.

Nakon uspešne kompilacije potrebno je upisati HEX kôd u

mikrokontroler. Za upis HEX kôda u mikrokontroler iskorišćen je ISP programator AT89ISP firme Atmel prikazan na slici 29.

Page 41: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

40

Slika 29. ISP programator AT89ISP

Uz ISP programator dobija se program Microcontroller ISP Software pomoću koga se upisuje HEX kôd u mikrokontroler. Postupak instlacije je opisan u narednim koracima. Pokretanjem aplikacije otvara se prozor gde je potrebno kliknuti na Next.

Zatim je potrebno kliknuti par puta na dugme Next sve dok se ne doñe do prozora prikazanog na slici gde je potrebno kliknuti na Install .

Page 42: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

41

Nakon uspešne instalacije pojavljuje se prozor sa naredne slike gde je potrebno kliknuti na Finish.

Po instalaciji Microcontroller ISP Software-a potrebno je pokrenuti aplikaciju nakon čega se dobija prozor prikazan na narednoj slici.

Page 43: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

42

Iz menija Options izabere se opcija Select Device... nakon čega se prikazuje prozor za odabir mikrokontorlera prikazan na sledećoj slici.

Po odabiru mikrokontorlera potrebno je kliknuti na OK nakon čega se pojavljuje se prozor sa naredne slike. U prozoru su prikazani sadržaji dva bafera i to bafera za kôd i bafera za podatke koji su po pokretanju programa prazni.

Page 44: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

43

Iz menija File potrebno je odabrati opciju Load Buffer... nakon čega se pojavljuje prozor sa slike u kom je potrebno otvoriti generisani HEX fajl.

Nakon otvaranja HEX fajla menja se sadržaj bafera za kôd dok bafer za podatke ostaje nepromenjen kao što je prikazano na narednoj slici.

Page 45: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

44

Zatim iz opcije Instructions treba izabrati opciju Auto Program kojom se inicira upisivanje sadržaja iz bafera za kôd u memoriju mikrokontrolera. Po uspešnom snimanju pojavljuje se prozor sa naredne slike.

Nakon upisa HEX kôda mikrokontroler je spreman za rad.

Page 46: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

45

Prilog A – Iskoriš ćenost memorija i RAM lokacija

Na sledećoj slici prikazana je iskorišćenost ROM memorije.

Na sledećoj slici prikazana je iskorišćenost RAM memorije.

Page 47: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

46

Iskorišćenost RAM lokacija za imena koja koristi programski jezik C prikazana je u narednoj tabeli.

Ekvivalentma iskorišćenost RAM lokacija za imena koja koristi programski jezik Assembler prikazana u narednoj tabeli.

Page 48: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

47

Prilog B – Kôd u Assembler-u 01: _Init: 02: ;ADC.c,13 :: void Init() 03: ;ADC.c,14 :: LCD_Init(); 04: LCALL _Lcd_Init+0 05: ;ADC.c,15 :: LCD_Cmd(_LCD_CLEAR); 06: MOV FARG_Lcd_Cmd_out_char+0, #1 07: LCALL _Lcd_Cmd+0 08: ;ADC.c,16 :: LCD_Cmd(_LCD_CURSOR_OFF); 09: MOV FARG_Lcd_Cmd_out_char+0, #12 10: LCALL _Lcd_Cmd+0 11: ;ADC.c,17 :: SPI1_Init(); 12: LCALL _SPI1_Init+0 13: ;ADC.c,18 :: ADC_CS = 1; 14: SETB P1_4_bit+0 15: ;ADC.c,19 :: 16: RET 17: ; end of _Init 18: 19: _ADC: 20: ;ADC.c,23 :: 21: ;ADC.c,25 :: ADC_CS = 0; 22: CLR P1_4_bit+0 23: ;ADC.c,26 :: SPI1_Write(mod_rada); 24: MOV FARG_SPI1_Write_data_out+0, FARG_ADC_mod_rada+0 25: LCALL _SPI1_Write+0 26: ;ADC.c,27 :: kanal = kanal << 6; 27: MOV R1, #6 28: MOV A, FARG_ADC_kanal+0 29: INC R1 30: SJMP L__ADC5 31: L__ADC6: 32: CLR C 33: RLC A 34: L__ADC5: 35: DJNZ R1, L__ADC6 36: MOV R0, A 37: MOV FARG_ADC_kanal+0, 0 38: ;ADC.c,28 :: rezultat = SPI1_Read(kanal) & 0x0F; 39: MOV FARG_SPI1_Read_data_out+0, 0 40: LCALL _SPI1_Read+0 41: ANL 0, #15 42: MOV ADC_rezultat_L0+0, 0 43: CLR A 44: MOV ADC_rezultat_L0+1, A 45: ;ADC.c,29 :: rezultat = rezultat << 8; 46: MOV ADC_rezultat_L0+1, ADC_rezultat_L0+0 47: MOV ADC_rezultat_L0+0, #0 48: ;ADC.c,30 :: rezultat |= SPI1_Read(0); 49: MOV FARG_SPI1_Read_data_out+0, #0 50: LCALL _SPI1_Read+0 51: MOV A, ADC_rezultat_L0+0 52: ORL 0, A 53: MOV A, ADC_rezultat_L0+1 54: ORL 1, A 55: MOV ADC_rezultat_L0+0, 0 56: MOV ADC_rezultat_L0+1, 1 57: ;ADC.c,31 :: ADC_CS = 1; 58: SETB P1_4_bit+0 59: ;ADC.c,32 :: return rezultat; 60: ;ADC.c,33 :: 61: RET 62: ; end of _ADC 63: 64: _ispis: 65: ;ADC.c,37 :: void ispis(unsigned int napon)

Page 49: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

48

66: ;ADC.c,40 :: jlong = (long)napon * 5000; 67: MOV R0, FARG_ispis_napon+0 68: MOV R1, FARG_ispis_napon+1 69: CLR A 70: MOV R2, A 71: CLR A 72: MOV R3, A 73: MOV R4, #116 74: MOV R5, #19 75: MOV R6, #0 76: MOV 7, #0 77: LCALL _Mul_32x32+0 78: MOV ispis_jlong_L0+0, 0 79: MOV ispis_jlong_L0+1, 1 80: MOV ispis_jlong_L0+2, 2 81: MOV ispis_jlong_L0+3, 3 82: ;ADC.c,41 :: jlong = jlong / 4095; 83: MOV R4, #44 84: MOV R5, #16 85: MOV R6, #0 86: MOV 7, #0 87: LCALL _Div_32x32_S+0 88: MOV ispis_jlong_L0+0, 0 89: MOV ispis_jlong_L0+1, 1 90: MOV ispis_jlong_L0+2, 2 91: MOV ispis_jlong_L0+3, 3 92: ;ADC.c,42 :: i = jlong /1000; 93: MOV R4, #232 94: MOV R5, #3 95: MOV R6, #0 96: MOV 7, #0 97: LCALL _Div_32x32_S+0 98: MOV ispis_i_L0+0, 0 99: ;ADC.c,43 :: LCD_Out(2, 2, "Napon:"); 100: MOV FARG_LCD_Out_row+0, #2 101: MOV FARG_LCD_Out_column+0, #2 102: MOV FARG_LCD_Out_text+0, #?lstr1_ADC+0 103: LCALL _LCD_Out+0 104: ;ADC.c,44 :: LCD_Chr(2, 9, 48+i); 105: MOV FARG_Lcd_Chr_row+0, #2 106: MOV FARG_Lcd_Chr_column+0, #9 107: MOV A, #48 108: ADD A, ispis_i_L0+0 109: MOV FARG_Lcd_Chr_out_char+0, A 110: LCALL _Lcd_Chr+0 111: ;ADC.c,45 :: LCD_Out(2, 10, "."); 112: MOV FARG_LCD_Out_row+0, #2 113: MOV FARG_LCD_Out_column+0, #10 114: MOV FARG_LCD_Out_text+0, #?lstr2_ADC+0 115: LCALL _LCD_Out+0 116: ;ADC.c,46 :: i = (jlong /100) % 10; 117: MOV R4, #100 118: MOV R5, #0 119: MOV R6, #0 120: MOV 7, #0 121: MOV R0, ispis_jlong_L0+0 122: MOV R1, ispis_jlong_L0+1 123: MOV R2, ispis_jlong_L0+2 124: MOV R3, ispis_jlong_L0+3 125: LCALL _Div_32x32_S+0 126: MOV R4, #10 127: MOV R5, #0 128: MOV R6, #0 129: MOV 7, #0 130: LCALL _Div_32x32_S+0 131: MOV R0, 4 132: MOV R1, 5 133: MOV R2, 6 134: MOV R3, 7

Page 50: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

49

135: MOV ispis_i_L0+0, 0 136: ;ADC.c,47 :: LCD_Chr(2, 11, 48+i); 137: MOV FARG_Lcd_Chr_row+0, #2 138: MOV FARG_Lcd_Chr_column+0, #11 139: MOV A, #48 140: ADD A, R0 141: MOV FARG_Lcd_Chr_out_char+0, A 142: LCALL _Lcd_Chr+0 143: ;ADC.c,48 :: i = (jlong /10) % 10; 144: MOV R4, #10 145: MOV R5, #0 146: MOV R6, #0 147: MOV 7, #0 148: MOV R0, ispis_jlong_L0+0 149: MOV R1, ispis_jlong_L0+1 150: MOV R2, ispis_jlong_L0+2 151: MOV R3, ispis_jlong_L0+3 152: LCALL _Div_32x32_S+0 153: MOV R4, #10 154: MOV R5, #0 155: MOV R6, #0 156: MOV 7, #0 157: LCALL _Div_32x32_S+0 158: MOV R0, 4 159: MOV R1, 5 160: MOV R2, 6 161: MOV R3, 7 162: MOV ispis_i_L0+0, 0 163: ;ADC.c,49 :: LCD_Chr(2, 12, 48+i); 164: MOV FARG_Lcd_Chr_row+0, #2 165: MOV FARG_Lcd_Chr_column+0, #12 166: MOV A, #48 167: ADD A, R0 168: MOV FARG_Lcd_Chr_out_char+0, A 169: LCALL _Lcd_Chr+0 170: ;ADC.c,50 :: i = jlong % 10; 171: MOV R4, #10 172: MOV R5, #0 173: MOV R6, #0 174: MOV 7, #0 175: MOV R0, ispis_jlong_L0+0 176: MOV R1, ispis_jlong_L0+1 177: MOV R2, ispis_jlong_L0+2 178: MOV R3, ispis_jlong_L0+3 179: LCALL _Div_32x32_S+0 180: MOV R0, 4 181: MOV R1, 5 182: MOV R2, 6 183: MOV R3, 7 184: MOV ispis_i_L0+0, 0 185: ;ADC.c,51 :: LCD_Chr(2, 13, 48+i); 186: MOV FARG_Lcd_Chr_row+0, #2 187: MOV FARG_Lcd_Chr_column+0, #13 188: MOV A, #48 189: ADD A, R0 190: MOV FARG_Lcd_Chr_out_char+0, A 191: LCALL _Lcd_Chr+0 192: ;ADC.c,52 :: LCD_Out(2, 15, "V"); 193: MOV FARG_LCD_Out_row+0, #2 194: MOV FARG_LCD_Out_column+0, #15 195: MOV FARG_LCD_Out_text+0, #?lstr3_ADC+0 196: LCALL _LCD_Out+0 197: ;ADC.c,53 :: 198: RET 199: ; end of _ispis 200: 201: _main: 202: MOV SP+0, #128 203: ;ADC.c,57 :: void main()

Page 51: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

50

204: ;ADC.c,58 :: Init(); 205: LCALL _Init+0 206: ;ADC.c,59 :: while(1) 207: L_main0: 208: ;ADC.c,60 :: LCD_Out(1,3,"Izbor kanala"); 209: MOV FARG_LCD_Out_row+0, #1 210: MOV FARG_LCD_Out_column+0, #3 211: MOV FARG_LCD_Out_text+0, #?lstr4_ADC+0 212: LCALL _LCD_Out+0 213: ;ADC.c,61 :: LCD_Out(2,3,"P1 P2 P3"); 214: MOV FARG_LCD_Out_row+0, #2 215: MOV FARG_LCD_Out_column+0, #3 216: MOV FARG_LCD_Out_text+0, #?lstr5_ADC+0 217: LCALL _LCD_Out+0 218: ;ADC.c,62 :: if (P1_3_bit) 219: JNB P1_3_bit+0, L_main2 220: NOP 221: ;ADC.c,63 :: LCD_Cmd(_LCD_CLEAR); 222: MOV FARG_Lcd_Cmd_out_char+0, #1 223: LCALL _Lcd_Cmd+0 224: ;ADC.c,64 :: LCD_Out(1,5,"Kanal 0"); 225: MOV FARG_LCD_Out_row+0, #1 226: MOV FARG_LCD_Out_column+0, #5 227: MOV FARG_LCD_Out_text+0, #?lstr6_ADC+0 228: LCALL _LCD_Out+0 229: ;ADC.c,65 :: vrednost = ADC(6, 0); 230: MOV FARG_ADC_mod_rada+0, #6 231: MOV FARG_ADC_kanal+0, #0 232: LCALL _ADC+0 233: MOV _vrednost+0, 0 234: MOV _vrednost+1, 1 235: ;ADC.c,66 :: ispis(vrednost); 236: MOV FARG_ispis_napon+0, 0 237: MOV FARG_ispis_napon+1, 1 238: LCALL _ispis+0 239: ;ADC.c,67 :: Delay_ms(1000); 240: MOV R5, 8 241: MOV R6, 1 242: MOV R7, 245 243: DJNZ R7, 244: DJNZ R6, 245: DJNZ R5, 246: NOP 247: ;ADC.c,68 :: LCD_Cmd(_LCD_CLEAR); 248: MOV FARG_Lcd_Cmd_out_char+0, #1 249: LCALL _Lcd_Cmd+0 250: ;ADC.c,69 :: 251: L_main2: 252: ;ADC.c,70 :: if (P1_2_bit) 253: JNB P1_2_bit+0, L_main3 254: NOP 255: ;ADC.c,71 :: LCD_Cmd(_LCD_CLEAR); 256: MOV FARG_Lcd_Cmd_out_char+0, #1 257: LCALL _Lcd_Cmd+0 258: ;ADC.c,72 :: LCD_Out(1,5,"Kanal 1"); 259: MOV FARG_LCD_Out_row+0, #1 260: MOV FARG_LCD_Out_column+0, #5 261: MOV FARG_LCD_Out_text+0, #?lstr7_ADC+0 262: LCALL _LCD_Out+0 263: ;ADC.c,73 :: vrednost = ADC(6, 1); 264: MOV FARG_ADC_mod_rada+0, #6 265: MOV FARG_ADC_kanal+0, #1 266: LCALL _ADC+0 267: MOV _vrednost+0, 0 268: MOV _vrednost+1, 1 269: ;ADC.c,74 :: ispis(vrednost); 270: MOV FARG_ispis_napon+0, 0 271: MOV FARG_ispis_napon+1, 1 272: LCALL _ispis+0

Page 52: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

51

273: ;ADC.c,75 :: Delay_ms(1000); 274: MOV R5, 8 275: MOV R6, 1 276: MOV R7, 245 277: DJNZ R7, 278: DJNZ R6, 279: DJNZ R5, 280: NOP 281: ;ADC.c,76 :: LCD_Cmd(_LCD_CLEAR); 282: MOV FARG_Lcd_Cmd_out_char+0, #1 283: LCALL _Lcd_Cmd+0 284: ;ADC.c,77 :: 285: L_main3: 286: ;ADC.c,78 :: if (P1_1_bit) 287: JNB P1_1_bit+0, L_main4 288: NOP 289: ;ADC.c,79 :: LCD_Cmd(_LCD_CLEAR); 290: MOV FARG_Lcd_Cmd_out_char+0, #1 291: LCALL _Lcd_Cmd+0 292: ;ADC.c,80 :: LCD_Out(1,3,"Kanali 2 i 3"); 293: MOV FARG_LCD_Out_row+0, #1 294: MOV FARG_LCD_Out_column+0, #3 295: MOV FARG_LCD_Out_text+0, #?lstr8_ADC+0 296: LCALL _LCD_Out+0 297: ;ADC.c,81 :: vrednost = ADC(4, 2); 298: MOV FARG_ADC_mod_rada+0, #4 299: MOV FARG_ADC_kanal+0, #2 300: LCALL _ADC+0 301: MOV _vrednost+0, 0 302: MOV _vrednost+1, 1 303: ;ADC.c,82 :: ispis(vrednost); 304: MOV FARG_ispis_napon+0, 0 305: MOV FARG_ispis_napon+1, 1 306: LCALL _ispis+0 307: ;ADC.c,83 :: Delay_ms(1000); 308: MOV R5, 8 309: MOV R6, 1 310: MOV R7, 245 311: DJNZ R7, 312: DJNZ R6, 313: DJNZ R5, 314: NOP 315: ;ADC.c,84 :: LCD_Cmd(_LCD_CLEAR); 316: MOV FARG_Lcd_Cmd_out_char+0, #1 317: LCALL _Lcd_Cmd+0 318: ;ADC.c,85 :: 319: L_main4: 320: ;ADC.c,86 :: 321: LJMP L_main0 322: ;ADC.c,87 :: 323: SJMP #254 324: ; end of _main

Page 53: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

52

Literatura

1. Arhitektura i programiranje 8051 mikrokontrolera, Milan Verle,

Mikroelektronika; 2. AT89S8253 Datasheet, Atmel, www.atmel.com; 3. MCP3204 Datasheet, Microchip, www.microchip.com; 4. HD44780 Datasheet, Hitachi, www.sparkfun.com; 5. mirkoC 8051 manual, Mikroelektronika, www.mikroe.com; 6. AT89ISP manual, Atmel, www.atmel.com.

Page 54: Digitalni voltmetar realizovan pomo ću mikrokontrolera ...es.elfak.ni.ac.rs/Papers/UJovanovic - MStojanovic - Digitalni Voltmetar.pdf · princip rada, inicijalizacija kao i komunikacija

53

Biografije autora

Ime: Uglješa Prezime: Jovanović Datum roñenja: 01.03.1985. Adresa: Žikice Talevića 46/16, Kruševac E-mail: [email protected] Obrazovanje: Elektrotehnička škola Kruševac Smer: Elektrotehničar automatike

Ime: Marko Prezime: Stojanović Datum roñenja: 23.10.1985. Adresa: Radnička 7, selo Miloševac, Velika Plana E-mail: [email protected] Obrazovanje: Tehnička škola Smederevo

Smer: Elektrotehničar automatike