modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a
DESCRIPTION
diplomski radTRANSCRIPT
UNIVERZITET U BIHAĆU
TEHNIČKI FAKULTET
BIHAĆ
ZAVRŠNI DIPLOMSKI RAD
MODELIRANJE MIKROPROCESORSKIH SISTEMA U
RAZVOJNOM OKRUŽENJU PROTEUS-a
Kevilj Ammar
Bihać, decembar 2012.
Kevilj Ammar
MODELIRANJE MIKROPROCESORSKIH SISTEMA U RAZVOJNOM
OKRUŽENJU PROTEUS-a
SAŽETAK:
Ovim završnim radom detaljno je opisan način rada programskog paketa
Proteus. Taj opis je započeo simuliranjem osnovnih kola digitalne logike, čija je
simulacija poslužila kao uvod u složenije sisteme digitalne elektronike, odnosno
mikrokontrolere. Za prikaz rada složenijeg mikrokontrolerskog sistema, u Proteusu je
simuliran razvojni sistem za mikrokontrolerske aplikacije. U svrhu testiranja tog
razvojnog sistema kreirane su mikrokontrolerske aplikacije namijenjene za interakciju
sa perifernim komponentama tog sistema, a zatim je slikovito prikazana i opisana sama
simulacija tih mikrokontrolerskih aplikacija. U posljednjem poglavlju ovog rada
prikazano je projektovanje i ispitivanje sistema baziranog na mikrokontroleru, a
namjenjenog zaštiti objekata elektronskom bravom.
Ključne riječi : proteus, simulacija, mikrokontroler, sistem.
MODELING MICROPROCESSOR SYSTEM IN DEVELOPMENT
ENVIRONMENT OF PROTEUS
ABSTRACT: This final work is detailed described mode of software package Proteus. That
description started simulating basic digital logic circuits, which is a simulation as a
introduce to more complex systems of digital electronics and microcontrollers. For
represetation complex work of microcontroller system , in Proteus is simulated
development system for microcontroller applications. In order to test the development
system designed microcontroller applications are intended to interact with the
peripheral components of the system, and then illustrated and described herself
microcontroller simulations of these applications. In the final section of this work is
shown the designing and testing system based on microcontroller, intended to protect
the objects with electronic lock.
Key words : proteus, simulation, microcontroller, system.
POPIS SLIKA
Slika 2.1 Grafičko okruženje 3
Slika 2.4 Radno okruženje Proteus VSM-a 5
Slika 2.5 Promjena smjera žice klikom na radnu površinu 6
Slika 2.6 Primjer povezivanja komponenti pomoću sabirnice [2] 6
Slika 2.7 Menadžer biblioteke komponenti [2] 7
Slika 2.8 Prikaz izlaznih karakteristika tranzistora 8
Slika 3.1 Prikaz digitalnog signala [3] 9
Slika 3.2 Prikaz osnovnnih digitalnih kola [3] 11
Slika 3.3 Prikaz simulacije osnovnih digitalnih kola u Proteus VSM-u 12
Slika 3.4 Tablica istine za polusabirač 13
Slika 3.5 Tablica istine za potpuni sabirač 14
Slika 3.6 Multiplekser simuliran u Proteus VSM-u 15
Slika 3.8 Demultiplekser simuliran u Proteus VSM-u 16
Slika 3.9 Prikaz izlaznih signala i selektivnih ulaznih signala demultipleksera 17
Slika 3.11 Tablica stanja SR bistabila 19
Slika 3.12 SR bistabil simuliran u Proteus VSM-u 19
Slika 3.13 Graf SR bistabila 20
Slika 3.14 D bistabil simuliran u Proteus VSM-u 21
Slika 3.15 Graf D bistabila 21
Slika 3.16 JK bistabil simuliran u Proteus VSM-u 22
Slika 3.17 Tablica stanja i graf JK bistabila 22
Slika 3.18 T bistabil simuliran u Proteus VSM-u 23
Slika 3.20 Tablica stanja i graf T bistabila 24
Slika 3.21 Asinhroni brojač 0-9 25
Slika 3.22 Graf asinhronog brojača 0-9 25
Slika 3.23 Stanja sinhronog brojača 26
Slika 3.24 Karnaughove tablice signala: a) J1 i K1 b) J2 i K2 c) J3 i K3 27
Slika 3.25 Sinhroni brojač 0-9 27
Slika 3.26 Graf sinhronog brojača 0-9 27
Slika 4.1 Dijagram izvoda PIC16F887 mikrokontrolera [8] 30
Slika 4.2 Arhitektura PIC16F887 mikrokontrolera [8] 32
Slika 4.3 Povezivanje eksternog RC oscilatora [8] 32
Slika 4.4 Odabir kondenzatora na osnovu frekvencije kvarcnog kristala [8] 33
Slika 4.6 Mapa registara mikrokontrolera PIC16F887 [8] 37
Slika 4.7 Analogno-digitalna konverzija [8] 38
Slika 4.3 Šema napajanje mikrokontrolera PIC16F887 [8] 40
Slika 4.5 Šema spajanja LED dioda na pinove mikrokontrolera [10] 41
Slika 4.8 Upotreba CCP modula kao PWM generatora signala [10] 43
Slika 4.9 Programski kod u mikroC-u za primjer 3 44
Slika 4.10 Upotreba A/D konverzije sa mikrokontrolerom [10] 45
Slika 4.11 Programski kod u mikroC-u za primjer 4 45
Slika 4.12 Memorisanje podataka u EEPROM memoriju [10] 46
Slika 4.13 Programski kod u mikroC-u za primjer 5 47
Slika 4.14 Primjer povezivanja LCD-a i mikrokontrolera [10] 48
Slika 4.15 Mjerenje i očitavanje analognih veličina [10] 48
Slika 4.16 Programski kod u mikroC-u za primjer 6 49
Slika 4.17 DB9 muški konektor [11] 50
Slika 4.18 Povezivanje pomoću RS232 serijske komunikacije [10] 51
Slika 4.20 Mjerenje temperature pomoću senzora DS1820 [10] 52
Slika 4.22 Generisanje zvuka pomoću Sound biblioteke [10] 54
Slika 5.1 Blok šema elektronske brave 57
Slika 6.1 Električna šema tastature [13] 59
Slika 6.2 Električna šema napajanja [13] 60
Slika 6.3 Modelirani sistem u Proteus VSM-u 61
POPIS KORIŠTENIH SIMBOLA
Simbol Značenje Mjerna jedinica
U napon V
R otpor Ω
T vrijeme s
I struja A
F frekvencija Hz
C kapacitet F
Bps brzina prenosa bit/s
1 bajt veličina memorije 8 bita
SADRŽAJ
1. UVOD ........................................................................................................................... 1
2. PROGRAMSKI PAKET PROTEUS ........................................................................ 2
2.1. Proteus VSM .......................................................................................................... 2
2.2. Grafičko okruženje ................................................................................................. 2
2.3. Proteus ISIS ............................................................................................................ 5
2.4. Interaktivna simulacija ........................................................................................... 7
2.5. Grafički prikaz simulacije ...................................................................................... 8
3. SIMULACIJA OSNOVNIH DIGITALNIH KOLA ................................................ 9
3.1. Digitalni signali ...................................................................................................... 9
3.2. Logička kola ......................................................................................................... 10
3.3. Logičke mreže ...................................................................................................... 12
3.4. Kombinacione mreže ........................................................................................... 13
3.5. Polusabirač (Half Adder) ..................................................................................... 13
3.6. Potpuni sabirač (Full Adder) ................................................................................ 14
3.7. Multiplekser ......................................................................................................... 14
3.8. Demultiplekser ..................................................................................................... 16
3.9. Dekoder ................................................................................................................ 17
3.10. Sekvencijalne mreže........................................................................................... 18
3.11. Bistabili .............................................................................................................. 18
3.12. SR bistabil .......................................................................................................... 18
3.13. D bistabil ............................................................................................................ 20
3.14. JK bistabil .......................................................................................................... 21
3.15. T bistabil ............................................................................................................ 23
3.16. Brojači ................................................................................................................ 24
3.17. Asinhroni brojač ................................................................................................. 24
3.18. Sinhroni brojač ................................................................................................... 26
3.19. Obitelji IC kola ................................................................................................... 28
4. RAZVOJ MIKROKONTROLERSKIH APLIKACIJA ....................................... 29
4.1. Uvod u mikroC ..................................................................................................... 29
4.2. Mikrokontroler PIC16F887 .................................................................................. 30
4.3. Arhitektura PIC16F887 mikrokontrolera ............................................................. 31
4.4. Oscilator ............................................................................................................... 32
4.5. Reset stanje........................................................................................................... 33
4.6. Watchdog tajmer .................................................................................................. 34
4.7. Prekidi (Interrupt)................................................................................................. 34
4.8. Tajmeri ................................................................................................................. 35
4.9. Portovi .................................................................................................................. 36
4.10. Organizacija memorije ....................................................................................... 36
4.11. A/D konvertor .................................................................................................... 38
4.12. Periferne jedinice ............................................................................................... 39
4.13. Napajanje mikrokontrolera................................................................................. 39
4.14. Upotreba ulazno/izlaznih portova, funkcija kašnjenja ....................................... 40
4.15. Brojači TMR0, TMR1 i TMR2, upotreba prekida ............................................. 42
4.16. Modul CCP1 kao PWM generator signala ......................................................... 43
4.17. Upotreba A/D konvertora ................................................................................... 44
4.18. Upotreba EEPROM memorije ........................................................................... 46
4.19. Upotreba LCD zaslona ....................................................................................... 47
4.20. RS232 serijska komunikacija ............................................................................. 50
4.21. Mjerenje temperature pomoću DS1820 senzora ................................................ 52
4.22. Generisanje zvuka .............................................................................................. 54
5. RAZVOJ MODELIRANOG SISTEMA ................................................................. 56
5.1. Definisanje problema ........................................................................................... 56
5.2. Moguća rješenja ................................................................................................... 56
5.3. Odabrano rješenje................................................................................................. 56
5.4. Šema modeliranog sistema ................................................................................... 57
6. REALIZACIJA SISTEMA U OKRUŽENJU PROTEUS .................................... 58
6.1. Mikrokontroler ..................................................................................................... 58
6.2. Displej .................................................................................................................. 58
6.3. Tastatura ............................................................................................................... 59
6.4. Napajanje.............................................................................................................. 60
6.5. Modelirani sistem u Proteus VSM-u .................................................................... 60
7. ZAKLJUČAK ............................................................................................................ 62
8. LITERATURA .......................................................................................................... 63
PRILOZI ........................................................................................................................ 64
1
1. UVOD
U ovom radu opisan je programski paket Proteus. U prvom dijelu ovog rada
predstavljeno je samo sučelje ovog programskog paketa. Proteus programski paket je
jednostavan simulacijski alat koji predstavlja važnu ulogu u modeliranju
mikroprocesorskih sistema. Centralni element ovih sistema je mikrokontroler koji vrši
upravljanje perifernim komponentama. Da bi se upotpunosti razumjeli mikrokontroleri,
potrebno je objasniti rad osnovnih digitalnih elementa od kojih je i sam izrađen. Ovaj
dio predstavljen je u drugom poglavlju ovog rada. U sljedećem poglavlju rada opisan je
mikrokontroler, predstavljena je njegova arhitektura, opisane su funkcije i dati primjeri
koji će poslužiti za izradu složenih mikroprocesorskih sistema. Svaki primjer je detaljno
objašnjen uz programski kod sa komentarima. Na kraju samog rada upoznajemo se sa
problemom zaštite objekata i prostorija. Kao rješenje je opisan sistem elektronske brave
baziran na PIC mikrokontroleru kao glavnom elementu. Izabrano rješenje je
najprikladnije moguće rješenje koje će zadovoljiti osnovne kriterije sistema i ostaviti
prostora za nadogradnju. Sistem je modeliran i izvršeno je testiranje u Proteus
programskom okruženju. Programski kod za mikrokontroler je dat u prilogu. Svi
savremeni sistemi posjeduju mikrokontrolere zbog jednostavnosti rukovanja i
prikladnih cijena takvih sistema. Modeliranje sistema sa mikrokontrolerom predstavlja
važan korak u izradi svakog projekta. Fizički prototip predstavlja skupo rješenje za
modeliranje sistema i nedozvoljava pravljenje greški, zbog toga ovaj rad poklanja veliku
pažnju virtuelnom modeliranju mikrokontrolerskih sistema u programskom okruženju
Proteus. Odstupanja su vrlo mala i prihvatljiva pa zbog toga možemo reći da se radi o
realnim sistemima i simulacijama.
2
2. PROGRAMSKI PAKET PROTEUS
2.1. Proteus VSM
Proteus VSM (Virtual System Modelling), što u prijevodu znači modeliranje
virtualnih sistema, programski je paket koji omogućava interaktivnu simulaciju
električnih kola u razvojnom okruženju. Modeliranje virtualnih sistema vrši se u
kombinaciji simulatora analognih električnih kola (engl. Simulation Program with
Integrated Circuit Emphasis - SPICE), mikrokontrolerskih modela i modela
interaktivnih komponenti, što omogućava i uveliko olakšava simulaciju kompletnih
mikrokontrolerskih sistema. Najvažnija činjenica koja proizlazi iz Proteus VSM-a je
mogućnost razvijanja i testiranja dizajna nekog sistema prije nego što je uopće
napravljen fizički prototip. Interakcija sa dizajnom ostvarena je putem različitih
indikatora kao što su LED diode i LCD ekrani, te različitih upravljačkih komponenti
kao što su sklopke i tipkala. Sama simulacija vrši se u realnom vremenu ili s vrlo malim
odstupanjem. Proteus VSM pruža i opsežan sadržaj za otklanjanje grešaka uključujući
tačke prekida, izvršavanje programa korak po korak, prikaz varijabli koda samog
sklopa, ali i koda čiji je izvor neki programski jezik više razine. Kao pomoć sadržaju za
otklanjanje greški u programskom paketu Proteus nalaze se dijagnostičke poruke. One
omogućavaju sagledavanje uloge određene komponente u bilo kojem trenutku
simulacije i pružaju detaljne tekstualne poruke o svoj aktivnosti i međusobnoj
interakciji sistema. Time je omogućeno lociranje i otklanjanje greški kako u
programskom, tako i u hardverskom dijelu, puno brže nego kod rada na fizičkom
prototipu [2].
2.2. Grafičko okruženje
Prvo sa čime korisnik ima susret je grafičko okruženje nekog programskog
paketa. Za Proteus VSM možemo reći da ima vrlo jednostavno grafičko okruženje u
kojem se svaki početnik lahko snalazi. Glavni dio Proteus VSM-a (Slika 2.1), naziva se
Prozor za uređivanje i na njemu se prikazuju sve komponente koje korisnik odabire
prilikom izrade projekta. Prozor za uređivanje koristi mrežu tački kao pozadinu radi
lakšeg postavljanja komponenti i upravljanja sa istim. Izgled mreže se može mijenjati ili
upotpunosti isključiti naredbom Grid u opcijama menija. U desnom donjem uglu
grafičkog okruženja prikazane su koordinate kursora kada se on nalazi na crtežu. U
gornjem lijevom uglu nalazi se prozor za pregled, pomoću kojeg možemo povećati ili
umanjti sami crtež, tj. možemo se fokusirati na određenu komponentu radi lakšeg
povezivanja sa istom. Međutim da bi postavili određenu komponentu iz biblioteke
potrebno je odabrati birač komponenti. Prilikom dvostrukog klika na birač komponenti
koji se nalazi na lijevoj strani grafičkog okruženja, otvara se novi prozor za odabir
komponenti. Ovaj prozor je sačinjen od tri dijela. Prvi dio predstavlja pretraživanje
željene komponente, drugi dio predstavlja modele koji se mogu pronaći za određenu
komponentu i zadnji dio prikazuje PCB izgled određene komponente za vizuelno
modeliranje. Ne posjeduju svi elementi iz biblioteke i svoj vizuelni izgled, pa ukoliko
korisnik želi može učitati biblioteke za PCB izgled. Grafičko okruženje posjeduje i
standardnu traku sa opcijama za uređivanje i spremanje određenih šema ili projekta. Na
sljedećoj slici prikazano je grafičko okruženje sa definisanim dijelovima [2].
3
Slika 2.1 Grafičko okruženje : 1) Prozor za uređivanje 2) Prikaz trenutnih koordinata
kursora 3) Prozor za pregled
Međutim, ukoliko je u Biraču komponenti označen neki objekat, Prozor za pregled
koristi se za prikaz izgleda te komponente (Slika 2.2).
Slika 2.2 Grafičko okruženje : 1) Prozor za pregled (prikaz izgleda komponenti) 2)
Birač komponenti 3) Alatna traka
Proteus VSM posjeduje svoju standardnu konfiguraciju koju korisnik može da mijenja
poput radne temperature, tolerancije, odstupanja, brzine simuliranja i dijagrama itd.
4
Alatna traka Proteus VSM-a (Slika 2.2), sadrži ikone različitih funkcija od kojih su one
važnije prikazane u nastavku.
- otvaranje novog dokumenta
- otvaranje postojećeg, već spremljenog dizajna
- spremanje promjena u dizajnu
- uključivanje/isključivanje mreže tačkica
-odabir komponenti iz odgovarajućih biblioteka
- alat za dodavanje postavki komponentama u dizajnu
Možete spremiti svoj projekat u bilo kojem trenutku putem Save naredbe u File meniju
ili pomoću opcije Save u alatnoj traci. Za ispis šema, prvo odaberite ispravan uređaj za
ispis i postavite njegovu konfiguraciju. Možete povećati ili smanjiti prikaz prozora za
komponente pomoću zoom in i zoom out naredbe koje se također nalaze na alatnoj traci.
Slika 2.3 Traka komponenti Proteus VSM-a
Na lijevoj strani radnog prozora nalazi se traka sa raznim vrstama komponenti, poput
komponenti generatora, grafova i raznih mjernih instrumenata. U donjem desnom uglu
se nalaze opcije za pokretanje, zaustavlja i stopiranje simulacije. Također nalazi se lista
za otkrivanje greški koje se dešavaju prilikom simulacije.
5
2.3. Proteus ISIS
Inteligentni sistem unosa šematskih prikaza, poznatiji kao ISIS (Intelligent
Schematic Input System), koristi se za crtanje i uređivanje šema i predstavlja samu
jezgru Proteus programskog okruženja. Ovaj sistem kombinira dizajnersku okolinu sa
mogućnostima definisanja različitih aspekata izgleda šema. ISIS osigurava potpunu
kontrolu nad mijenjanjem izgleda šema u pogledu širine linija, stilova ispunjavanja,
boja i fontova i još puno različitih opcija. Izgled šema definiran je u smislu stilskog
predloška, što je posebno pogodno ukoliko korisnik želi primijeniti općeniti izgled za
sve svoje dizajne. Nadalje, sama šema omogućava prilagođavanje izgleda komponenti
iz biblioteke Proteus razvojnog okruženja po vlastitim potrebama ili ukusu [2].
Slika 2.4 Radno okruženje Proteus VSM-a
Pri izradi ISIS-a puno pažnje posvećeno je, što je moguće većem, pojednostavljenju
najučestalijih radnji. Kao prvi primjer nameće se činjenica da ISIS nema posebnog
moda za povezivanje komponenti žicama. Umjesto toga, korisnik može jednostavno i u
bilo kojem trenutku kliknuti na izvod neke od komponenti na šemi ili na već
postavljenu žicu i tako povezivati željene komponente ili žice. Naredbe za postavljanje
komponenti na šemu, uređivanje, pomicanje i brisanje mogu se izvršiti jednostavno
otvaranjem posebnog menija kojem se pristupa direktno desnim klikom miša, bez
potrebe traženja menija i ikona za pristupanje tim naredbama, što ISIS čini još bržim i
jednostavnijim. Postavljanje žica može se izvršiti jednostavno pritiskom lijeve tipke
miša na dva izvoda koja se želi povezati, dok ostali posao obavlja automatski
usmjerivač žica (engl. Wire Auto-Router). Ukoliko postoji potreba za postavljanjem žice
na tačno određeno mjesto, pritiskom lijeve tipke miša po površini šeme žica se može
usmjeravati do željenog izvoda ili pomicati naknadno nakon spajanja sa krajnjim
izvodom. Automatski usmjerivač žica koristan je i kod pomicanja povezanih
6
komponenti, gdje on automatski popravlja položaj žice obuhvaćene premještanjem
komponenti.
Slika 2.5 a) Promjena smjera žice klikom na radnu površinu b) Pomicanje žice nakon
što su komponente povezane [2]
Osim što podržava normalne dizajne preko više radnih površina (ekvivalentne sistemu
koji je proširen na više komada papira), ISIS ima potpunu podršku za hijerarhijsko
uređenje unutar dizajna. Drugim riječima, određena komponenta može biti definirana
kao modul, koji je zatim predstavljen daljnjom šemom, odnosno podsistemom.
Hijerarhija može biti raširena preko nekoliko razina, a hijerarhijski moduli mogu biti
nacrtani kao standardne komponente ili kao posebni podsistemski blokovi na koje se
naknadno mogu dodavati izvodi koji povezuju podsisteme [2].
Slika 2.6 Primjer povezivanja komponenti pomoću sabirnice [2]
Stvar koja ISIS čini idealnim za mikrokontrolerske dizajne je podrška za sabirničke
vodove, terminale, priključke modula i izvode različitih komponenti. Kod
kompliciranijih mikrokontrolerskih sistema neke od komponenti mogu imati preko 400
fizičkih izvoda. Eventualno mukotrpno uređivanje sabirnica izbjegnuto je zasebnim
crtanjem svake adrese i podatkovne sabirnice kao jedan izvod. Izvodi sabirnica
omogućuju i sabirničko povezivanje hijerarhijskih modula [2]. U Programskom paketu
Proteus, tačnije unutar ISIS-a, nalaze se i njegove biblioteke simbola i komponenata.
ISIS sadrži dvije biblioteke simbola i preko 25 biblioteka komponenti od kojih su u
nastavku nabrojane one koje su najčešće korištene:
- biblioteka za komponente tranzistorsko-tranzistorske logike (TTL)
- biblioteka za CMOS komponente
- biblioteka za komponente ECL logičke grupe
7
- biblioteka mikrokontrolera
- biblioteka memorijskih komponenti
- biblioteka analognih integriranih kola
Slika 2.7 Menadžer biblioteke komponenti [2]
Od ostalih biblioteka treba spomenuti biblioteke sa stotinama različitih vrsta dioda,
bipolarnih i FET tranzistora i ostalih poluprovodničkih komponenti, ali i one biblioteke
koje sadrže komponente specifičnih proizvođača. Komponente unutar biblioteka mogu
se u bilo kojem trenutku uređivati po vlastitim potrebama pomoću različitih alata za
uređivanje. Nove komponente mogu se izrađivati pomoću linija, okvira, krugova,
lukova, teksta i specijalnih izvoda. Neelektrični simboli mogu se napraviti za upotrebu u
različitim mehaničkim i blok dijagramima [1].
2.4. Interaktivna simulacija
Interaktivnom simulacijom se upravlja preko jednostavnog videorekordera koji
ima izgled panela i radi kao normalni daljinski upravljač. Ova kontrola se nalazi na dnu
radnog prozora u lijevom uglu. Postoje četiri tipke koje se koriste za upravljanje
simulacije, a to su :
PLAY tipka se koristi za pokretanje simulatora.
STEP tipka omogućuje jedan korak simulacije. Ako se pritisne tipka i pusti,
onda simulacija izvrši jedan vremenski korak, a ako se tipka drži stisnuta, onda
simulacija se izvršava kontinuirano u vremenu.
8
PAUSE tipka za zaustavljanje simulacije u vremenu. U Slučaju da poslije tipke
pause stisnemo tipku play, simulacija se nastavlja kontinuirano u vremenu.
STOP tipka ima ulogu da prekine simulaciju, tj. da simulator bude ugašen.
Ako nema dovoljno procesorske snage za pokretanje simulacije u stvarnom vremenu,
zaslon će pročitati 100% upotrebu CPU-a i vrijeme simulacije će prestati da teče u
realnom vremenu. Simulacija u Proteus VSM okruženju vrši se u realnom vremenu ili
sa vrlo malim odstupanjem pomoću SPICE-a. Prilikom simulacije se koristi veliki broj
interaktivnih komponenti koje u realnom vremenu daju rezultate, tj. mogu biti aktivni
elementi kola koji pokazuju razne parametre sistema [1].
2.5. Grafički prikaz simulacije
Nakon što je nacrtana šema, možete odabrati vrstu analize kola koja vam je
potrebna tako što postavite graf odgovarajuće vrste na šemi. Možete postaviti koliko
god grafova želite i može te čak imati nekoliko grafova istog tipa, ako želite. Prilikom
pokretanja svake simulacije grafovi će iscrtati jedan kompletan ciklus posmatranog
signala. Ukoliko korisnik iz nekog razloga ne želi pokrenuti simulaciju cijelog sklopa,
desnim klikom miša na graf može pokrenuti samostalnu simulaciju tog grafa bez
simulacije ostatka šeme. Na grafovima se mogu prikazati analize prijelaznih pojava,
frekvencije, buke, smetnje, AC i DC uzorci i Fourierova transformacija. Audio graf
omogućuje reprodukciju simuliranih talasnih oblika [1].
Slika 2.8 Prikaz izlaznih karakteristika tranzistora
Sve navedene komponente rade u virtualnom okruženju Proteus VSM-a, njih je moguće
povezati sa realnim komponentama, čime je omogućeno simuliranje električnih kola čiji
su dijelovi realne periferne komponente. Time su uveliko proširene mogućnosti Proteus
razvojonog okruženja jer to znači da je moguće mjeriti realne varijable pomoću
različitih senzora i ostvariti komunikaciju sa realnim uređajima. Veza virtualnog i
realnog okruženja ostvaruje se pomoću virtualnih komponenti koje zasebno
predstavljaju realne priključke za RS232 serijsku komunikaciju, priključak za USB
komunikaciju i priključak za ethernet komunikaciju [2].
9
3. SIMULACIJA OSNOVNIH DIGITALNIH KOLA
3.1. Digitalni signali
Izraz digitalni potiče od korištenja riječi pri opisu realnih brojeva. Kod digitalne
predstave, veličine nisu predstavljene preko proporcionalnih veličina, već simbolima
nazvanim digiti. Digitalni signali se još zovu "diskretni" signali. Digitalni signali mogu
da se mijenjaju velikom brzinom i informacija je obično sadržana u statičkom stanju
bita, odnosno grupe bitova, u određenom trenutku. Imaju stalnu amplitudu i samo dvije
moguće vrijednosti (niski i visoki nivo). Radi razumijevanja najprikladnije je značenje 0
i 1 dodjeliti naponskim razinama, tako da 0 V odgovara 0, a +5 V odgovara 1. Opsezi u
kojima niski i visoki nivoi TTL signala mogu da budu su :
niski nivo: 0,0 ÷ 0,8 V
visoki nivo: 2,0 ÷ 5,0 V
Slika 3.1 Prikaz digitalnog signala [3]
Kao što vidimo gornja i dojnja granica varira bez ikakvog utjecaja na binarno značenje
koje mu je dodjeljeno. Da bi razlučivanje između 0 i 1 bilo sigurno, u realnom sistemu
mora između njih postojati zabranjeno područje u kojem se napon ne smije naći. Na
slici iznad je ilustrativno prikazan digitalni signal [3].
10
3.2. Logička kola
Logička kola su osnovni gradivni element digitalnih sklopova. U računaru se
bitovi predstavljaju električnim impulsima. Električni impuls predstavlja 1, a stanje bez
impulsa predstavlja 0. Impulsi se stvaraju tako što se struja provodi kroz logička kola.
Većina logičkih kola ima dva ulaza i jedan izlaz, a logičko kolo može općenito imati
jedan ili više ulaza i jedan ili više izlaza. Logička kola procesuiraju impulse koji
reprezentuju "istinu" ili "laž". Pozitivni napon na ulazima +5V predstavlja "istinu", dok
0V prezentuje "laž", odnosno električni impuls (+5V) predstavlja 1, a stanje bez impulsa
(0V) predstavlja 0. Ako je na izlazu stanje 1, kaže se da izlaz "postoji" a ako je na izlazu
stanje 0, kaže se da izlaz "ne postoji". Izlaz postoji (tj. na njemu će se pojaviti napon
koji odgovara binarnom broju 1), samo ako su ispunjeni određeni uslovi. Može se reći
da je stanje izlaza logička posljedica ispunjenja ili neispunjenja određenih uslova.
Osnovna logička kola su I, ILI i NE. Što je digitalni sklop složeniji, to će veći biti broj
upotrebljenih osnovnih kola. U šemama se osnovna kola prikazuju pomoću
odgovarajućih simbola. Tako se dobiva na preglednosti i izbjegava uzastopno crtanje
jednakih električkih šema. Kod logičkog kola, pored njegove logičke funkcije, posebnu
pozornost treba posvetiti njegovim električkim svojstvima, kao što su npr. napon
napajanja, mogućnost opterećenja njegovog izlaza, vrijeme zadržavanja, osjetljivost na
smetnje, područja napona logičke 1 i 0 itd. U ovom poglavlju obradit će se osnovna
logička kola I, ILI i NE, a zatim NI, NILI i XILI.
Logičko kolo I (engl. AND), obavlja logičku funkciju I. Kod logičke funkcije I odgovor
je pozitivan samo ako su ispunjeni svi uvjeti, tj. prvi i drugi, i treći itd. (koliko ih u
datom slučaju ima). Prema tome, logičko kolo I bit će takvo kolo koje će na svom izlazu
davati napon koji odgovara logičkoj 1 samo ako se na svim njegovim ulazima nalaze
naponi koji odgovaraju logičkoj 1. Ako se na barem jednom od ulaza pojavi napon koji
odgovara logičkoj 0 na izlazu će biti napon koji odgovara logičkoj 0 [3].
Logičko kolo ILI (engl. OR), obavlja logičku funkciju ILI. Kod logičke funkcije ILI
odgovor je pozitivan ako je ispunjen barem jedan uslov, tj. prvi,ili drugi, ili treći itd, ili
dva od njih, ili tri od njih itd, ili svi uslovi. Zbog toga se ova funkcija naziva još i
"uključiva" ILI-funkcija. Prema tome logičko kolo ILI bit će takavo kolo koje će na
svom izlazu davati napon koji odgovara logičkoj nuli samo ako nije ispunjen niti jedan
uslov. Ako se na barem jednom ulazu pojavi napon koji odgovara logičkoj jedinici i na
izlazu će se pojaviti napon koji odgovara logičkoj jedinici [3].
Logičko kolo NE (engl. NOT), obavlja logičku funkciju NE. Kod logičke funkcije NE
odgovor je pozitivan ako uslov nije ispunjen, a negativan ako je uslov ispunjen. Prema
tome, logičko kolo NE bit će takavo kolo koje će na svom izlazu davati napon koji
odgovara logičkoj 1 samo ako je na njegovom ulazu napon koji odgovara logičkoj nuli.
Ako se na ulazu pojavi napon koji odgovara logičkoj jedinici, na izlazu će biti napon
koji odgovara logičkoj 0 [3].
Osnovna logička kola I i ILI sastavljena su od pasivnih elemenata i imaju ograničene
mogućnosti u pogledu opterećenja i realizacije složenijih logičkih sklopova. Osnovni
logički sklop NE sadrži aktivni element (tranzistor) i ima vrlo dobra svojstva u pogledu
mogućnosti opterećenja. Ako se na izlaz kola I nadoveže kolo NE, očito je da će se
dobiti sklop dobrih električkih osobina u pogledu mogućnosti opterećenja. Takav sklop
imat će, međutim, i dobra logička svojstva, jer će se pomoću njega moći ostvariti sve
11
jednostavne (osnovne) i složene logičke operacije. Sklop sastavljen od sklopova I i NE
obavlja prvo operaciju I, a zatim operaciju NE. Stezanjem je dobiven uobičajeni naziv
za ovaj sklop : NI. Kod logičke funkcije NI odgovor je pozitivan samo ako barem jedan
uslov nije ispunjen. Ako su svi uslovi ispunjeni operacija NI daje negativan odgovor
(nulu), tj. obratno nego kod sklopa I [3].
Slika 3.2 Prikaz osnovnnih digitalnih kola [3]
Ako se na izlaz kola ILI nadoveže sklop NE, takav će sklop obavljati prvo operaciju
ILI, a zatim operaciju NE. Drugim riječima, ono što daje sklop ILI još se invertira.
Stezanjem je dobiven uobičajeni naziv za ovaj sklop : NILI. Kod logičke funkcije NILI
odgovor je pozitivan samo ako nije ispunjen niti jedan uslov. Ako je barem jedan uslov
ispunjen odgovor je negativan. Sve je obratno u odnosu na sklop ILI. Sklop NILI ima
dobre električne osobine u pogledu mogućnosti opterećenja izlaza. Sklop NILI ima,
međutim, i dobra logička svojstva, jer će se pomoću njega moći ostvariti sve
jednostavne (osnovne), pa prema tome i složene logičke operacije [3].
Ekskluzivno ILI (engl. XOR), je logička operacija u kojoj dva operanta daju pozitivan
rezultat ako i samo ako jedan od operanata (ali ne i oba) ima pozitivnu vrijednost. Na
slici 1.c) prikazano je kako se na izlazu logičkog sklopa NI pojavljuje logička 0 samo
ako su oba ulaza u stanju 1.
Prethodno smo objasnili i prikazali osnovna logička kola koja sačinjavaju arhitekturu
današnjih sklopova. Osnovna logička kola simulirana su i u Proteusu (Slika 3.3). Na
ulaze svake od ovih logičkih kola, pomoću funkcijskih generatora, dovedeni su digitalni
signali frekvencije 1Hz. Izlazni signal koji je rezultat logičke operacije pojedinih
logičkih kola, mjeri se pomoću sonde za mjerenje napona. Za svaka osnovna logička
kola zasebno je iscrtan graf mogućih stanja (Slika 3.3), kako bi se prikazala logička
operacija koju ista vrše.
12
Slika 3.3 Prikaz simulacije osnovnih digitalnih kola u Proteus VSM-u
Slovom Q označeni su izlazni signali. Ulazni signal u slučaju NE logičkog kola označen
je slovom A jer ona imaju samo jedan ulaz, dok se kod svih ostalih logičkih kola nalaze
dva ulaza pa su ona označena sa A i B . Na ovim grafovima vidi se kompletan ciklus
promjene stanja pojedinih logičkih kola, ali je on zamrznut u vremenu. Promjene stanja
u realnom vremenu prilikom trajanja simulacije korisnik može vidjeti u obliku tački
koje se prilikom simulacije mijenjaju iz plave u crvenu boju i obrnuto, ovisno o
trenutnom stanju (Slika 3.3). Crvena boja u ovom slučaju predstavlja logičku jedinicu,
dok plava boja predstavlja logičku nulu [2].
3.3. Logičke mreže
Na logičkom nivou digitalna kola se dijele na dvije velike klase: ona koja ne
posjeduju memoriju nazivamo kombinacionim kolima, dok su ona koja posjeduju
memoriju poznata pod imenom sekvencijalna kola, tj. ako je stanje izlaza ovisno samo o
trenutnom stanju ulaza, radi se o kombinacionom logičkom sklopu. Ako stanje izlaza
logičkog sklopa nije ovisno samo o trenutnom stanju ulaza, nego i o unutarnjem stanju
sklopa, radi se o slijednom (sekvencijalnom) logičkom sklopu. Izlazna stanja
kombinacijskih mreža koje smo razmatrali (logička kola), postoje samo dotle dok
postoje ulazni signali, ukoliko ovi signali nestanu i izlazna stanja se gube. Međutim, u
digitalnoj obradi podataka postoji potreba da se zadržavaju, pamte ili memorišu
prethodna stanja u pojedinim dijelovima uređaja, ili da se memoriše (uskladišti) i po
potrebi koristi određena količina vanjskih podataka. Elementi koji zadržavaju - pamte
uspostavljena stanja i po prestanku dejstva pobudnih signala koji su ih prouzrokovali,
nazivaju se memorijski elementi. Zbog toga, njihova naredna izlazna stanja ne zavise
samo od ulaznih pobudnih signala u posmatranom trenutku već i od redoslijeda ili
sekvencije prethodnih stanja u kojima su se nalazili. Električne mreže koje pored
13
kombinacionih logičkih elemenata sadrže i memorijske - sekvencijalne elemente,
nazivaju se sekvencijalne mreže [7].
3.4. Kombinacione mreže
Kombinacione mreže mogu da sadrže proizvoljan broj logičkih kola, ali izlazni
signal sa bilo kojeg kola se ne smije dovoditi na ulaz mreže, kako ne bi uticao na ulaz
istog tog kola. Ponašanje kombinacionog kola u potpunosti je specificirano tablicom
istinitosti ili skupom jednačina koje za svaku ulaznu kombinaciju daju odgovarajuću
izlaznu kombinaciju. Ova kola preslikavaju ulazne podatke u izlazne, tj. obavljaju
izračunavanje u jednom koraku. U praksi postoji neznatno kašnjenje prije nego što
izlazni signali promijene svoje stanje kao odziv na promjene vrijednosti signala na
ulazu. Vrijeme odziva je obično veoma kratko, najčešće reda nanosekunde ili kraće,
tako da se sa tog aspekta za odziv kombinacionih kola kaže da je trenutan. U idealnom
slučaju, kombinaciono kolo se definiše kao kolo čije je vrijeme odziva nula. U općem
slučaju, ponašanje kombinacionog kola sa n ulaza koje koristi binarne signale se može
opisati tablicom istine koja ima 2n vrsta, po jednu za svaku moguću ulaznu
kombinaciju. Prvi korak pri projektovanju složenih kombinacionih sklopova jest
definicija problema, tj. izrada tablice stanja. Tablica sadrži sva moguća stanja
nezavisnih (ulaznih) varijabli i pripadna stanja zavisnih (izlaznih) varijabli. Zatim treba
vidjeti da li se problem može razložiti na nekoliko jednostavnijih problema. Za taj
postupak nema pravila. To je stvar iskustva i snalažljivosti projektanta. Sljedeći korak je
praktična realizacija sklopa čije je logičko rješenje dobiveno prethodnim korakom.
Općenito mogu se koristiti osnovni sklopovi (I, ILI i NE), a može se raditi i samo s
NILI ili samo s NI sklopovima. Treba naći što jednostavnije rješenje s obzirom na
sklopove koji stoje na raspolaganju. Kombinaciona kola se dobijaju povezivanjem
logičkih kola (gejtova) tako da se izlazi nekih od logičkih kola dovode na ulaz drugih.
Kombinacionim kolima se realizuju raznovrsne upravljačke i aritmetičko logičke
funkcije računara. Svako kombinaciono kolo može biti opisano tabelom istinitosti kao i
osnovna logička kola. Posmatrajmo nekoliko primjera kombinatornih kola [16].
3.5. Polusabirač (Half Adder)
Osnova računarskih operacija u procesoru je sabiranje dva binarna broja. Pri
tome se, kao i kod sabiranja u bilo kojem drugom sistemu (npr. dekadnom), kao rezultat
dobija zbir odgovarajućih cifara i u slučaju kada je zbir veći od cifara tog sistema, može
dobiti i jedinica za prenos za zbir u većoj cifri.
Slika 3.4 Tablica istine za polusabirač
U slučaju kada su ulazi u logički sklop koji realizuje sabiranje samo odgovarajuće cifre
sabiraka, a izlaz odgovarajuća cifra zbira i dodatno rezultat za prenos na veću cifru, tada
je to riječ o polusabiraču (half adder). Napravimo najprije tabelu istinitosti za
14
polusabirač. Pretpostavimo da X i Y predstavljaju dvije binarne cifre, a S i C sumu (S) i
prijenos (carry C), slika 3.4. Za projektovanje polusabirača dovoljno je da u tablici
istinitosti uočimo da se suma (S) izlaz dobija kao ekskluzivno ILI kolo od ulaza X i Y, a
broj za prijenos (C) kao I kolo sa istim ulazima (X i Y). Odavde slijedi da
kombinaciono kolo sa slike 3.4, prikazuje polusabirač. Polusabirač može poslužiti samo
za najnižu cifru (u zbiru nema prenosa neke niže cifre). U slučaju sabiranja ostalih
cifara mora se koristiti potpuni sabirač.
3.6. Potpuni sabirač (Full Adder)
Kada se sabiraju dva binarna broja, na svakoj bit poziciji sabiraju se u stvari tri
binarne cifre. Dvije su cifre sa pozicija koje se sabiraju, a treća je prijenosna cifra
poslije sabiranja bitova iz predhodne pozicije (nižih bitova). Za realizaciju potpunog
sabirača potrebna su dva polusabirača povezana. Potpuni sabirač može biti prikazan
jednostavnije na slici ispod. Binarno sabiranje obavlja se na sličan način kao decimalno
sabiranje, s tom razlikom što pojedinačne cifre mogu biti samo 0 ili 1. Sabiranje dva
jedno-bitna broja, u opštem slučaju, daje dvo-bitni rezultat. Lahko se može uočiti da je
bit sume AND, a bit prenosa XOR funkcija sabiraka.
Slika 3.5 Tablica istine za potpuni sabirač
Sa slike iznad vidimo da je potpuni sabirač sastavljen od dva polusabirača, radi
jednostavnosti izvedbe, iako postoje sabirači koji su projektovani od osnovnih digitalnih
kola.
3.7. Multiplekser
Mutiplekser ili skraćeno Mux (engl. Multiplexer), logički je sklop koji izvodi
multipleksiranje signala. On odabire jedan ili više analognih ili digitalnih signala na
ulazu i upućuje ga na izlaz. Multiplekser sa 2n ulaza ima n selektivnih ulaza, kojima se
odabire koji će od ulaznih signala biti proslijeđen na izlaz. Proteus VSM sadrži više
izvedbi multipleksera dostupnih za simulaciju. Za ovaj primjer odabran je multiplekser
8/1 (Slika 3.6). Brojka 8 u njegovom imenu označava 8 podatkovnih ulaza, koji su na
komponenti označeni sa X0-X7. Ovaj multiplekser ima 3 selektivna ulaza, jer
multiplekser koji ima 8 ulaza, što je jednako 23, prema već navedenoj relaciji mora imati
3 selektivna ulaza, u ovom primjeru označena sa A, B i C. Ova komponenta sadrži i E
ulaz na koji se dovodi Enable bit koji određuje u kojem će trenutku multiplekser biti
aktivan, kružić na komponenti označava da je ovaj multiplekser aktivan kada je Enable
bit jednak 0. Na ulaz E je funkcijskim generatorom doveden digitalni signal koji je
cijelo vrijeme jednak 0 kako bi multiplekser bio aktivan. Na desnoj strani ove
komponente prikazana su dva izlaza. Slovom označen je izlazni signal, a sa označen
je njegov komplementirani ekvivalent . Na podatkovne ulaze multipleksera postavljeni
su funkcijski generatori digitalnih signala.
15
Slika 3.6 Multiplekser simuliran u Proteus VSM-u
Na grafu (Slika 3.7) su vidljivi ulazni signali čije su frekvencije jednake broju 2
potencirane brojem uz slovo X u njihovom imenu. Dakle, frekvencija prvog ulaznog
signala na komponenti, gledavši od gore prema dole, biti će 20, odnosno 1 Hz, dok će
frekvencija onog zadnjeg iznositi 27, odnosno 128 Hz. Signali na grafu označeni sa A, B
i C predstavljaju selektivne ulazne signale A, B i C.
Slika 3.7 Prikaz izlaznih signala i selektivnih ulaznih signala multipleksera 8/1
Sva tri signala zajedno čine binarne kombinacije kojima se određuje koji će se signal
ulazni proslijediti na izlaz. Njihove kombinacije mijenjaju se od 000 do 111, što znači
da se u dekadskom ekvivalentu mijenjaju od 0 do 7, pa se skladno tome na izlaz
prosljeđuju ulazni signali od X1 do X7. Promatra li se na grafu izlazni signal Y, u
odnosu na promjenu stanja selektivnih ulaza A, B i C, vidi se da se frekvencija izlaznog
signala Y mijenja sa promjenama selektivnih signala, te se upravo po toj frekvenciji
može lahko zaključiti koji je ulazni signal u određenom trenutku proslijeđen na izlaz
[4]. Multiplekseri se danas izrađuju kao integrisana kola. Postoji veći broj varijanti
izvođenja multipleksera. Multiplekseri se mogu koristiti za implementaciju logičkih
16
funkcija. Na primjer, multiplekser tipa 4-u-1 se može koristiti za generisanje bilo koje
moguće funkcije od tri promjenljive.
3.8. Demultiplekser
Demultiplekser ili Demux (engl. Demultiplexer) logički je sklop koji ima
obrnutu funkciju u odnosu na multiplekser. On ima jedan podatkovni ulaz, a u odnosu
na n selektivnih ulaza ima 2n izlaza. Trenutno stanje njegovih selektivnih ulaza
označava na koji će izlaz u tom trenutku biti proslijeđen ulazni signal. Proteus VSM
sadrži više izvedbi demultipleksera, a radi sličnosti sa primjerom multipleksera odabran
je demultiplekser 1/8 (Slika 3.8).
Slika 3.8 Demultiplekser simuliran u Proteus VSM-u
Njegov ulaz na komponenti je označen samo slovom X, selektivni ulazi označeni su sa
A, B i C i u ovom slučaju nalaze se sa desne strane komponente. Izlazi su označeni
oznakama X0-X7. Signal koji određuje je li demultiplekser aktivan ili neaktivan, Enable,
označen je na komponenti sa INH. Kao i prikazani multiplekser, ovaj demultiplekser
ima aktivno stanje kada je na Enable signal jednak 0, pa je na ovaj ulaz funkcijskim
generatorom i doveden signal koji cijelo vrijeme ima vrijednost 0. Na ulaz X doveden
je, pomoću funkcijskog generatora, digitalni signal proizvoljne frekvencije 16 Hz (Slika
3.9). Selektivni signali također su proizvoljne frekvencije 4 Hz, a njihova međusobna
kombinacija u nekom trenutku određuje na koji će od izlaza biti proslijeđen ulazni
selektivni signal u tom nekom trenutku. Kombinacije se mijenjaju od 000 do 111, što u
dekadskom brojevnom sistemu označava promjenu od 0 do 7. Skladno tome, mijenja i
se izlaz na koji je proslijeđen ulazni selektivni signal od X0-X7. Dakle u početnom
trenutku na grafu (Slika 3.9), kada je stanje selektivnih ulaza 000, ulazni signal
proslijeđen je na izlaz X0, dok zadnja kombinacija 111 označava da se selektivni ulaz
prosljeđuje na izlaz X7. Iz grafa je vidljivo da se svakom slijedećom promjenom
kombinacije selektivnih ulaza, ulazni signal pomiče na slijedeći po redu izlaz. U
trenucima kada na određeni izlaz nije doveden ulazni selektivni signal, njegova
vrijednost je plutajuća (engl. Floating), što je na grafu označeno sivom crtom [5].
17
Slika 3.9 Prikaz izlaznih signala i selektivnih ulaznih signala demultipleksera 1/8
3.9. Dekoder
Postupak prevođenja binarno kodovane informacije u neki pogodniji oblik za
opštu upotrebu, naziva se dekodovanje, a logička mjera koja ima takvu funkciju je
dekoder. Dekoder je sklop koji ima onoliko ulaza koliko bitova ima kod za čije je
dekodiranje predviđen. Dekoder ima onoliko izlaza koliko se znakova može predočiti
dotičnim kodom, tj. onoliko izlaza koliko se različitih znakova želi dekodirati. Za svaku
kombinaciju bitova na ulazu dekoder daje signal samo na jednom, određenom izlazu
koji pripada tom znaku. Ako kod demultiplekserskog kola adresni ulazi a0, a1,..,
ak1 promjene mjesta sa ulaznim signalom x, dobit će se jedno veoma korisno kolo koje
se naziva dekoder. Ulaz x ima sada ulogu upravljačkog ulaza i naziva se Enable. Kako
se u jednom trenutku može koristiti signal samo sa jednog od 4 izlaza, to se takva mreža
često označava 1/4 i naziva se dekoder „ 1 od 4“. Ulazi dekodera označeni su sa Q0,Q1,
a izlazi su funkcije Di sa indeksom i = 0-3. Prema tome, ova mreža treba da realizuje 4
funkcije. Ako su ulazni podaci dati u prirodnom binarnom kodu, logičke funkcije mreže
mogu da se prestave funkcionalnom tabelom [7].
Slika 3.10 Dekoder 2 u 4
Kao i multiplekseri, tako su i dekoderi/demultiplekseri dostupni na tržištu kao
integrisana kola srednjeg stepena integracije. Poznatije konfiguracije su dekoderi tipa 2-
18
u-4, 3-u-8 i 4-u-16. Dekoder bilo kog obima može se realizovati povezivanjem nekoliko
manjih dekodera [16].
3.10. Sekvencijalne mreže
Sekvencijalna logička kola se mogu podijeliti na sinhrona i asinhrona. Kod
sinhronih kola interna stanja se mijenjaju u diskretnim vremenskim trenucima pod
kontrolom impulsa za sinhronizaciju koga nazivamo takt (isprekidane linije na
prethodnoj slici - općeg sekvencionalnog sklopa). Talasni oblik taktnog impulsa je
obično pravougaoni. "ON" vrijeme se definiše kao period dok je signal u stanju 1, a
"OFF" vrijeme kao period dok je signal u stanju 0. Prelazi stanja kod sinhronih
sekvencijalnih kola se obično javljaju u trenutku kada postoje prelazi taktnih impulsa
bilo sa 0 na 1 ili sa 1 na 0. Prelaz sa 0 na 1 se naziva pozitivna ivica ili usponska ivica,
dok prelaz sa 1 na 0 odgovara negativnoj ili opadajućoj ivici taktnog signala. Između
sukcesivnih taktnih impulsa ne dolazi do promjene informacije koja se čuva u memoriji.
Sinhrona sekvencijalna kola su također poznata i kao taktovana sekvencijalna kola.
3.11. Bistabili
Bistabil, eng. flip-flop, je sekvencijalni sklop digitalne elektronike koji može
zapamtiti podatak veličine jednog bita. Elektronički gledano radi se o bistabilnom
multivibratoru, tj. o sklopu koji ima dva stabilna stanja (kojima pridajemo značenje
logičke 0 i 1). Bistabili u osnovnoj izvedbi, zvanoj SR bistabil, imaju dva ulaza i dva
izlaza, postoje i složenije izvedbe koje imaju i do pet ulaza (poput MS bistabila, engl.
master-slave flip-flop). Neki od tih ulaza mogu reagovati na logičko stanje na njima,
dok neki reaguju na promjenu stanja. Ulazni impulsi koji se dovode bistabilu se znaju
nazivati i okidni impulsi. Ulazi se označavaju zavisno o vrsti bistabila, dok se izlazi
označavaju s Q i logički komplement izlaza . Promjena iz jednog stabilnog stanja u
drugo naziva se okidanje bistabila. Bistabile možemo podijeliti u dvije osnovne skupine
i to na asinhrone i sinhrone bistabile. Asinhroni bistabili imaju osobinu da reaguju na
promjenu impulsa čim se pojavi na ulazu u sklop, što daje pogrešan rezultat kada se
ulazni impulsi ne dovode istovremeno na ulaz. Sinhroni bistabil je verzija asinhronog
koji ima dodatni ulaz (CLK, eng. clock) na koji se dovode sinhronizacijski impulsi
konstantne frekvencije tako da bistabil mijenja stanje na promjenu okidnog impulsa.
Bistabil su 1919. godine napravili William Eccles i F. W. Jordan i bio je izveden iz
dvije elektronske cijevi koje su nakon izuma tranzistora 1947. godine zamijenjene istim.
Bistabili se mogu dalje podijeliti na tipove koji se primjenjuju i u asinhronim i u
sinhronim sistemima. Od tih tipova najčešći su SR („Set-Reset“) bistabil, D („Data“)
bistabil, T („Toogle“) bistabil i JK bistabil. Svaki od njih može se izvesti sa većinom
ostalih bistabila i dodavanjem logičkih kola. Ponašanje određenog tipa bistabila opisano
je karakterističnom jednadžbom koja se sastoji od „slijedećeg“ stanja izlaza Qn+1(stanje
nakon slijedeće promjene Clock signala) i sadašnjeg stanja Qn [6].
3.12. SR bistabil
SR bistabil ima dva ulaza, S i R po kojima je i dobio ime. Ulaz S naziva se Set
(engl. Set, postaviti) ulaz, dok se ulaz R naziva Reset (engl. reset, poništiti).
Uobičajeno, u modu za čuvanje stanja, S i R imaju stanje logičke 0, a izlazi Q i
komplementirano ostaju nepromijenjeni. U slučaju da S ima stanje logičko stanje 1 dok
R ima stanje 0, izlaz Q bit će prisiljen imat logičko stanje 1. To stanje ostat će
nepromijenjeno čak i ako se ulaz S vrati na stanje logičke 0. Slično tome, ukoliko R
19
ulaz ima stanje 1, dok ulaz S ima stanje 0, izlaz Q biti će prisiljen biti u stanju 0 i ostat
će u tom stanju i ako se R vrati na stanje 0. U trenutku kada S i R imaju stanje 1 dolazi
do zabranjenog stanja i u tom trenutku ne može se predvidjeti stanje Q izlaza. Ovaj
bistabil može biti izveden od jednog para ukršteno povezanih NI ili NILI logičkih kola
[6]. Najčešći način zapisivanja rada bistabila je korištenjem tablice stanja :
Slika 3.11 Tablica stanja SR bistabila
SR bistabil može se opisati jednadžbom stanja (3.1), gdje Qn predstavlja sadašnje stanje
bistabila. Qn+1 postaje Qn nakon slijedećeg brida Clock signala. Uvođenjem dodatne
jednadžbe SR = 0 uklanja se mogućnost pojave zabranjenog stanja.
Qn+1 = S + Qn (3.1)
SR bistabil, prikazan i simuliran u Proteus VSM-u (Slika 3.12), izveden je od četiri
primjerka NI logičkih kola. Na njegov S i R ulaz dovedeni su signali proizvoljne
frekvencije. Signal EN isto je proizvoljne frekvencije i ukoliko je njegovo stanje 1 ovaj
bistabil je u aktivnom području, on sinhronizira rad ovog sklopa.
Slika 3.12 SR bistabil simuliran u Proteus VSM-u
Dvije idealne digitalne sklopke SW1 i SW2 stavljene su da bi se moglo postaviti stanje
Q i početnom trenutku simulacije. Početna stanja postignuta su tako da je na kontrolni
20
signal sklopke doveden koji ju čini propusnom samo u početnom trenutku, te se samo
tad propusti signal početnog stanja koji u slučaju Q iznosi 0, dok je kod on jednak 1
[7]. S, R, EN, Q i signali ovog bistabila prikazani su na grafu (Slika 3.13). Vidljivo je
početno stanje izlaza Q koje iznosi 0. Signali S i R mijenjaju se tokom cijele simulacije,
no njihovo stanje bitno je samo ukoliko je EN signal (Clock signal) jednak 1 jer je samo
tada bistabil u aktivnom području rada.
Slika 3.13 Graf SR bistabila
U trenutku kada je EN signal jednak 1, signal S ima vrijednost 1, a signal R ima
vrijednost 0. Iz tog razloga stanje izlaznog signala Q mijenja se iz stanja 0 u stanje 1.
Slijedeći put kada je EN signal jednak 1, signal S se mijenja iz stanja 1 u stanje 0, dok je
stanje R ulaza ostalo nepromijenjeno i tada se vidi da je izlazni signal Q ostao
nepromijenjen. R signal, kod slijedećeg stanja 1 EN signala, ima vrijednost 1, a signal S
ima stanje 0 pa je ulazni signal prisiljen imati vrijednost 0, što se iz grafa i vidi.
3.13. D bistabil
D bistabil je modifikacija SR bistabila koja se dobije tako da se ulazna varijabla
spoji direktno na ulaz S, dok se na ulaz R dovede invertirani ulaz. D flip-flop
jednostavno samo upisuje (odnosno daje na izlazu) podatak koji mu je dan na ulazu, pa
ga zbog toga možemo promatrati kao elementarnu česticu za memoriranje jednog bita,
ili kao element za kašnjenje ukoliko uključimo i CLK ulaz. Upravo zbog ovih svojstava
(eng. data, podatak i eng. delay, kašnjenje) flip-flop je i dobio ime D flip-flop [6]. Ovaj
bistabil jednostavno na izlazu daje podatak koji mu je dan na ulazu, što opisuje njegova
karakteristična jednadžba :
Qn+1 = D (3.2)
Proteus VSM nudi nam gotove komponente D bistabila, ali pri ovoj simulaciji D
bistabila korištena je modificirana verzija SR bistabila (Slika 3.14), kako bi se prikazala
cjelokupna izvedba ovog bistabila. S ulaz sada je nazvan D ulaz i na njega se dovodi
signal proizvoljno određenog uzorka. EN ulazni signal vrši istu funkciju kao i kod SR
bistabila, sinhronizira rad ovog sklopa, što znači da će ovaj D bistabil biti aktivan samo
kada je signal EN u stanju logičke 1 i jedino tada stanje izlaznog signala Q biti će
jednako stanju ulaznog signala D. Idealne sklopke SW1 i SW2 i u ovom primjeru
postavljaju početno stanje izlaz Q i njegovog komplementiranog izlaza .
21
Slika 3.14 D bistabil simuliran u Proteus VSM-u
Na grafu (Slika 3.15) su prikazani ulazni signal D, ulazni signal EN i izlaz Q, te njegova
komplementirana komponenta . Signali D, EN i Q imaju početno stanje 0. U vremenu
dok je EN signal jednak 1, D bistabil je u aktivnom stanju, pa će tako u svim
vremenskim intervalima kada je EN u logičkom stanju 1 izlaz Q pratiti vrijednost ulaza
D. Pri završetku svakog od tih intervala izlaz Q zadržati će trenutnu vrijednost sve do
slijedećeg intervala i promjene vrijednosti podatkovnog ulaza D [7].
Slika 3.15 Graf D bistabila
3.14. JK bistabil
JK bistabil razlikuje se od SR bistabila samo po činjenici da u njegovom slučaju
nema zabranjenih stanja. Kada su J i K logički istog stanja na izlazu Q daju stanja koja
ovise o prethodnim stanjima bistabila, kompletno ponašanje ove vrste bistabila opisuje
njegova karakteristična jednačina. Kod JK bistabila uveden je i Clock signal koji služi
za sinhronizaciju. Naziv ove vrste bistabila nema nikakve veze sa njegovim načinom
rada. Ime su dobili po inicijalima svog autora Jacka Kilbyja [6].
22
Qn+1 = J + Qn (3.3)
Pri simulaciji JK bistabila u Proteus VSM-u korištena je prikazana šema (Slika 3.16).
Kombinacija komponente D bistabila i osnovnih logičkih vrata izvedena je da stvori već
spomenutu karakterističnu jednačinu JK bistabila.
Slika 3.16 JK bistabil simuliran u Proteus VSM-u
Na J i K ulaze dovedeni su signali različite proizvoljne frekvencije, a signal EN je
doveden na Clock ulaz kako bi određivao aktivno područje, odnosno sinhronizirao rad
D bistabila unutar sklopa, a time i cijelog sklopa. Signal EN također je proizvoljne
frekvencije [7].
Slika 3.17 Tablica stanja i graf JK bistabila
Na grafu (Slika 3.17) vidi se karakteristično ponašanje signala ovog bistabila. Svi ulazi i
Q izlaz imaju početno logičko stanje 0. Stanje izlaza mijenja se pri uzlaznoj promjeni
signala EN, što u ovom slučaju određuje komponenta D bistabila koja je izvedena da
reagira na uzlazni brid Clock signala. Kada Clock signal EN promjeni stanje u logički
jedan, dakle, pri prvom uzlaznom bridu tog signala, signal Q ostaje nepromijenjen jer je
u tom vremenu signal K jednak 1,a signal J jednak 0 pa je izlaz Q prisiljen imat
23
vrijednost 0. Pri slijedećem uzlaznom bridu Clock signala, izlazni signal Q promijenit
će vrijednost jer su u tom trenutku ulazi J i K oba jednaki logičkom stanju 1. Pri trećem
uzlaznom bridu stanje izlaza Q se opet mijenja jer su u tom trenutku ulazi J i K opet oba
u logičkom stanju 1.
3.15. T bistabil
T bistabil je modificirana verzija JK bistabila. Ulaz T spojen je na K ulaz JK
bistabila koji je preko NE logičkih vrata spojen na ulaz J. Isto kao i svi ostali bistabili
do sad i T bistabil ima Clock ulaz za sinhronizaciju njegovog rada. Njegov rad opisan je
njegovom karakterističnom jednadžbom. Ukoliko je na ulaz T dovedena logička 1,
dobiva se sklop koji mijenja logičko stanje na brid EN (Clock) signala čime se na izlazu
Q dobiva signal dvostruko manje frekvencije. T bistabil dobio je ime upravo po
svojstvu promjene stanja (engl. Toogle, prebacivati).
Qn+1 = T + Qn (3.4)
Slika 3.18 T bistabil simuliran u Proteus VSM-u
Šema T bistabila, korištena u simulaciji (Slika 3.18), sastavljena je od komponente D
bistabila i osnovnog logičkog kola. Ove komponente zajedno stvaraju karakterističnu
jednačinu T bistabila. Na ulaz T doveden je signal koji je tijekom cijelog vremena u
stanju logičke 1, na Clock ulaz D bistabila doveden je signal EN [6].
Slika 3.19 Tablica stanja T bistabila
Izlazni signal iz T bistabila ima dva puta manju frekvenciju od takta pa iz tih razloga
glavna primjena T bistabila je u djeliteljima frekvencije. U nekim primjenama potrebno
je zabraniti okidanje T bistabila.
24
Slika 3.20 Tablica stanja i graf T bistabila
3.16. Brojači
Brojači su sekvencijski sklopovi koji se koriste u digitalnoj elektronici. Njihova
uloga je pohranjivanje broja promjena koje su se dogodile unutar nekog događaja ili
procesa, često u vezi sa Clock signalom. U praksi su brojači podijeljeni na one koji
povećavaju neku vrijednost i one koji neku vrijednost smanjuju. Oni mogu biti izvedeni
prilično jednostavno koristeći bistabile. Broj bistabila unutar brojača označava njegov
maksimalni brojni ciklus. Dakle, brojilo koje se sastoji od n bistabila imati će
maksimalni brojni ciklus od broja 0 do broja 2n -1. Brojni ciklus brojila može se
ograničiti po potrebi dodavanjem dodatnih logičkih kola kako bi se preko njih vratili
željeni izlazni signali bistabila na Reset ulaze bistabila i time ih poništili, nakon čega bi
cijeli ciklus brojanja započeo ispočetka. Po načinu spajanja Clock signala na ulaze
bistabila razlikuju se sinhroni bistabili koji međusobno imaju zajednički Clock signal i
oni asinhroni koji maju međusobno različite Clock signale [7].
3.17. Asinhroni brojač
Asinhroni brojači mogu biti izvedeni od različitog broja bistabila, na koje su
dovedeni međusobno različiti Clock signali. Njihov maksimalni brojni ciklus ovisi,
kako je već rečeno, o broju bistabila unutar njih, a taj ciklus se ograničava dovođenjem
određene kombinacije izlaznih signala na Reset ulaze preko logičkih kola kako bi se
poništilo stanje bistabila, čime bi brojanje krenulo ispočetka. Asinhrono brojilo
simulirano u Proteus VSM-u (Slika 3.21) izvedeno je pomoću četiri JK bistabila, koji su
pokrenuti dovođenjem logičke 0 u početnom trenutku simulacije pomoću idealne
digitalne sklopke SW1. Signali Q0, Q1, Q2 i Q3 predstavljaju izlazne signale svakog od
bistabila. Zajedno, njihove kombinacije predstavljaju binarni zapis brojnog stanja
bistabila. Signal Q0 predstavlja bit najmanje težine i njegova frekvencija je najveća. Da
bi brojanje bilo jedinično po dekadskom brojnom sistemu svaki slijedeći izlazni signal,
počevši od Q0, mora imati dvostruko manju frekvenciju. Kako bi JK bistabili
funkcionisali kao dijelila frekvencije na njihove J i K ulaze dovedena je logička 1
tijekom cijele simulacije, što znači da će oni na izlazu davati izlazni signal dvostruko
manje frekvencije u odnosu na Clock signal doveden na njihov ulaz. Spajanjem izlaznog
signala Q0, bistabila JK0, na Clock signal bistabila JK1 dobiven je izlazni signal Q1 koji
je dvostruko manje frekvencije u odnosu na Q0. Daljnjim spajanjem Q1 na Clock ulaz
JK2 i Q2 na Clock ulaz JK3 frekvencija je svaki puta dvostruko smanjivana sve do
signala Q3 koji predstavlja bit najveće težine, što znači da mora imati najmanju
frekvenciju. U teoriji, brojač sastavljen od četiri bistabila može brojati od 0 do 15. U
ovom slučaju to nije tako. Ciklus brojanja ovog bistabila ograničen je naknadno
dodanim NI logičkim vratima na čije su ulaze spojeni izlazi Q1 i Q3. Oba ova ulaza biti
će u stanju logičke 1 u trenutku kada je stanje brojila 1010 u binarnom zapisu (dekadska
25
vrijednost 10). To znači da će u tom trenutku na izlazu NI vrata biti logička 0, što će
poništiti bistabile jer njihovi Reset ulazi reagiraju na logičku 0. Ciklus brojanja ovog
asinhronog brojača tako je ograničen na brojanje od 0 do 9 [7].
Slika 3.21 Asinhroni brojač 0-9
Na grafu (Slika 3.22) je vidljiva promjena izlaznih signala Q1, Q2, Q3 i Q4 i ulaznog
Clock signala za bistabil JK0, odnosno osnovnog Clock signala ovog sklopa.
Kombinacija signala Q3, Q2, Q1 i Q0 prilikom jedne periode osnovnog Clock signala
predstavlja 4-bitni zapis u binarnom brojnom sistemu, gdje je Q1 bit najveće težine, a Q4
bit najmanje težine. Kombinacija signala u početnom trenutku glasi 0000, što u
dekadskom brojnom sistemu predstavlja broj 0.
Slika 3.22 Graf asinhronog brojača 0-9
Prilikom slijedeće periode osnovnog Clock signala kombinacija glasi 0001, što
predstavlja broj 1 u dekadskom brojnom sistemu. Prilikom svake slijedeće periode
osnovnog Clock signala, gledajući u dekadskom brojnom sistemu, izlazno stanje
bistabila će se jedinično povećavati sve do broja 9. Približno u istom trenutku kada se
stanje brojila promijeni u broj 10, odnosno 1010, zapisano u binarnom brojnom sistemu,
brojilo se poništi zbog signala Q3 i Q1 čija stanja logičke 1 preko NI kola ponište stanja
bistabila. Nakon poništavanja bistabila stanje brojila, odnosno kombinacija izlaznih
signala Q1, Q2, Q3 i Q4 biti će opet 0000 i tako će cijeli ciklus brojanja krenuti ispočetka
[2].
26
3.18. Sinhroni brojač
Sinhrona brojila, kao i ona asinhrona, mogu biti izvedena od različitog broja
bistabila, ali je na Clock ulaze svih bistabila unutar brojila doveden zajednički Clock
signal. Zajednički Clock signal znači i sinhroniziran rad, pa ih stoga i nazivamo
sinhrona brojila. Njihov maksimalni brojni ciklus ograničen je sa brojem bistabila
unutar brojila. Projektovanje sinhronih brojila ograničenog brojnog ciklusa prilično je
zahtjevnije nego projektovanje asinhronih brojila i zahtijeva detaljnije projektovanje
cjelokupnog sekvencijskog sklopa za određeni brojni ciklus. Projektovanje svakog
sekvencijskog sklopa za brojanje nekog brojnog ciklusa započinje crtanjem tablice
stanja tog sklopa. Brojilo u ovom primjeru ima ciklus brojanja od 0 do 9, a na (Slika
3.23), predstavljena je tablica stanja. U prvoj koloni ispisane su izlazne dekadske
vrijednosti sinhronog brojila, a u zadnji red ove kolone stavljen je broj 0 koji označava
da će brojilo nakon broja 9 promijeniti stanje u 0 i time ponovo započeti ciklus brojanja.
Kolone Q3, Q2, Q1, i Q0 predstavljaju izlazne signale svakog od bistabila čija
kombinacija predstavlja binarni zapis dekadske vrijednosti u prvoj koloni. Ostale kolone
predstavljaju J i K ulaze svih bistabila, gdje su J0 i K0 ulazi bistabila JK0, J1 i K1 ulazi
bistabila JK1 itd. U ove kolone upisuju se logičke vrijednosti koje je potrebno dovesti
na bistabile kako bi se kombinacije izlaznih stanja brojila mijenjala u skladu sa
kolonoma Q3, Q2, Q1, i Q0.
Slika 3.23 Stanja sinhronog brojača
U početnom trenutku kombinacija izlaznih signala je 0000, a pri slijedećoj periodi
Clock signala ona se mora promijeniti u 0001. Stanja signala Q3, Q2 i Q1 moraju ostati
u stanju 0, što znači da na ulazne signale J1-J3 i K1-K3 moraju biti dovedene logičke 0,
pa se u prve redove tih kolona upisuju 0. Logičko stanje signala Q0 mijenja se iz 0 u 1,
što znači da na ulaze J0 i K0 mora biti dovedena logička 1 pa se broj 1 upisuje u prvi
red tih kolona. Ovaj postupak se ponavlja za svaku slijedeću promjenu sve do one
zadnje. Na temelju vrijednosti unutar kolona J0-J3 i K0-K3 sa slike (Slika 3.23)
popunjavaju se Karnaughove tablice (Slika 3.24) svake kolone zasebno kako bi se
izvela minimizirana funkcija ulaza koji je predstavljen tom kolonom. Kolone J0 i K0
imaju u svakom trenutku vrijednost 1 i time su maksimalno minimizirane pa za njih nije
potrebno crtati Karnaughovu tablicu. Iz kolona ostalih ulaza vidljivo je da ulazi J1 i K1,
J2 i K2 te J3 i K3 imaju iste vrijednosti u svakom redu pa za te parove vrijede iste
Karnaughove tablice.
27
Slika 3.24 Karnaughove tablice signala: a) J1 i K1 b) J2 i K2 c) J3 i K3
Za simulaciju u Proteus VSM-u korišten je sklop sastavljen od kombinacije četiri JK
bistabila i više osnovnih logičkih kola koja su potrebna za dovođenje određenih,
projektovanjem dobivenih kombinacija izlaza Q, na određene J i K ulaze bistabila (Slika
3.25). Kućišta koja predstavljaju JK bistabile u ovom sklopu (JK0-JK3) nisu standardne
komponente iz biblioteke Proteus VSM-a, već su to kućišta unutar kojih se nalaze
podsistemi (Slika 3.25) izrađeni od osnovnih logičkih kola i D bistabila.
Slika 3.25 Sinhroni brojač 0-9
Na grafu ovog sinhronog brojača (Slika 3.26) prikazani su njegovi izlazni signali Q3,
Q2, Q1 i Q0. Kako je već poznato, njihova kombinacija čini brojno stanje ovog brojila,
gdje je signal Q3 bit najveće težine, a signal Q0 bit najmanje težine.
Slika 3.26 Graf sinhronog brojača 0-9
Ako se binarna kombinacija ovih signala očitava prilikom svake njene promjene i zatim
se ista pretvara u dekadski brojni sistem, primjećuje se da se prilikom jedne promjene
28
kombinacije izlaznih signala stanje brojila dekadski jedinično poveća. Slijedeća
kombinacija izlaznih signala brojila, nakon kombinacije 1001 (dekadski 9), je
kombinacija 0000. To znači da brojni ciklus tada kreće ispočetka. Time se može
zaključiti da je ovaj sekvencijski sklop pravilno projektiran kako bi vršio funkciju
sinhronog brojanja od 0 do 9.
3.19. Obitelji IC kola
Integralna kola mogu biti klasifikovana ne samo po svojim funkcijama i stepenu
integracije (minijaturizacije), već i po tehnologiji koja se koristi pri izradi. Najčešće
korištene tehnološke familije su:
TTL Transistor transistor logic
ECL Emitter-coupled logic
MOS Metal-oxid semiconducter
TTL familija je najrasprostranjenija i bazira se na korištenju takozvanih bipolarnih
tranzistora. Bipolarnost označava karakteristiku da struja može teći u oba pravca kroz
poluprovodnički spoj. Propagaciono kašnjenje je važna karakteristika svakog IC kola i
označava vrijeme koje protekne od trenutka pojave ulaza do stabilizacije izlaza iz kola.
TTL se karakteriše propagacionim kašnjenjem reda 10 ns.
ECL familija koristi drugačiji tip tranzistora ( opet bipolarnih ) kod kojih se postiže
značajno manje propagaciono kašnjenje reda 1-2 ns. Kao posljedica toga ECL familija
je značajno brža od TTL-a.
MOS je potpuno različita od TTL i ECL jer koristi unipolarne tranzistore. Glavna
prednost je što omogućava veliku gustinu pakovanja. Pored toga MOS tehnologija je
jednostavnija za fabrikaciju, a time i jeftinija. Osim toga potrošnja MOS kola je
značajno manja u poređenju sa TTL I ECL tehnologijama. Ova familija se dalje dijeli na
podfamilije poznate kao PMOS, NMOS i CMOS.
29
4. RAZVOJ MIKROKONTROLERSKIH APLIKACIJA
4.1. Uvod u mikroC
Najvažniji dio svakog mikrokontrolerskog sistema svakako je mikrokontroler.
Sklopovski gledano, mikrokontroler sastoji se od kućišta koje sadrži izvode za
napajanje mikrokontrolera, izvode za spajanje kvarcnog oscilatora koji određuje
njegovu radnu frekvenciju i određeni broj ulazno/izlaznih izvoda čija količina varira u
odnosu na izvedbu. Unutar kućišta nalaze se razne komponente poput centralne
procesorske jedinice, analogno/digitalnog pretvarača, RAM memorije, unutarnjeg
oscilatora, sklopa za serijsku komunikaciju, sklopa za napajanje itd. Sama funkcija
mikrokontrolera, međutim, nije sklopovski određena, već je mikrokontroler potrebno
programirati kako bi mu se time zadala neka funkcija. Podršku za razvoj u
programskom dijelu pružaju razvojne okoline za razvoj programa mikrokontrolera.
Razvojne se okoline razlikuju s obzirom na vrstu odabranog mikrokontrolera i s
obzirom na vrstu programskog jezika u kojem želimo programirati odabrani
mikrokontroler. Jedna od takvih okolina je mikroC za PIC mikrokontrolere. To je C
programski prevoditelj dizajniran za razvijanje aplikacija za PIC mikrokontrolere, te
njihov prijenos na sam mikrokontroler. On ujedno sadrži i program za pronalaženje
greški kako bi se njihov broj sveo na minimum. Upravo u mikroC-u biti će izrađeni
primjeri u daljnjem tekstu, koji su korišteni pri simulaciji razvojnog sistema za PIC
mikrokontroler [8].
Osnovne karakteristike programa mikroC su sljedeće:
Pisanje C koda korištenjem kvalitetnog editora, što se ogleda automatskom
kontrolom i upozorenjima vezanim za sintaksu koda, korištenih parametara,
kao i automatskoj korekciji pojedinih grešaka
Preglednost strukture programa (koda), promjenljivih i funkcija omogućava
Code explorer
Jasan asemblerski kod i standardna kompatibilnost generisanih HEX
datoteka toka programa preko debagera (debugger)
Programer ima na raspolaganju veliki broj integrisanih biblioteka i rutina,
koje značajno ubrzavaju pisanje programa
Detaljan izvještaj i grafičko predstavljanje RAM i ROM mape, statistike
koda i slično.
Bitno je napomenuti kako mikroC odstupa od ANSI standarda u nekoliko segmenata.
Neka odstupanja načinjena su u cilju da se olakša programiranje, dok su druge rezultat
hardverskih ograničenja PIC mikrokontrolera. Pomenućemo neke specifičnosti:
Rekurzivne funkcije (function recursion) su podržane sa izvjesnim
ograničenjima, koja su posljedica nešto složenijeg pristupa magacinu (stack)
i ograničenja vezana za memoriju
Pokazivači (pointers) promjenljivih i pokazivači konstanti nisu
kompatibilni, tj. nije moguća međusobna dodjela ili upoređivanje
30
mikroC tretira označavanje const kao “true constans” (kod C++), što
omogućava korištenje const objekta na mjestima gde ANSIC očekuje
constant izraz .Ukoliko se teži ka prenosivosti programa, treba koristiti
tradicionalno pretprocesorsko definisanje konstanti
mikroC dozvoljava C++ stil jednolinijskih komentara, koristeći dvije kose
crte (//). Komentar može da počne bilo gdje i traje do sljedeće nove linije
programskog koda
Brojne standardne C biblioteke (ctype, math, stdlib, string )
implementirane su u mikroC, uz individualna odstupanja.
4.2. Mikrokontroler PIC16F887
Kako bi se u potpunosti razumjeli primjeri u mikroC-u koji slijede potrebno je
napomenuti i opisati osnovne karakteristike mikrokontrolera korištenog u tim
primjerima. Radi se o PIC mikrokontroleru, serije PIC16, potpunog naziva PIC16F887.
Ovaj mikrokontroler sadrži 40 izvoda (Slika 4.1) koji se mogu podijeliti u nekoliko
osnovnih skupina. Prva skupina su tzv. osnovni izvodi u koje spadaju izvodi preko kojih
se napaja mikrokontroler, izvod za uzemljenje, te MCLR izvod koji se koristi za
poništavanje svih funkcija koje trenutno izvodi mikrokontroler.
.
Slika 4.1 Dijagram izvoda PIC16F887 mikrokontrolera [8]
Kao drugu skupinu može se navesti skupina dodatnih izvoda u koju spadaju izvodi za
spajanje vanjskog oscilatora, ukoliko korisnik ima potrebu raditi na frekvenciji koju ne
podržava oscilator unutar samog mikrokontrolera. Ostale skupine čine ulazno/izlazni
izvodi podijeljeni u pet skupina RA, RB, RC, RD i RE. Njihova ulazno/izlazna funkcija
određuje se pomoću TRIS registara svake skupine. TRIS registar svake skupine izvoda
ima broj bitova jednak broju ulazno/izlaznih izvoda njemu odgovarajuće skupine. U
slučaju PIC16F887 mikrokontrolera, postavljanjem npr. određenog TRISB bita u stanje
1, dodijelit će njemu odgovarajućem izvodu skupine RB ulogu ulaznog izvoda, dok će
postavljanje određenog TRISB izvoda u stanje 0 dodijeliti njemu odgovarajućem izvodu
skupine RB ulogu izlaznog izvoda. Stanje TRIS registara za izvode koji će se koristi u
određenom projektu prilikom programiranja u mikroC-u potrebno je odrediti na početku
svakog projekta [8]. PIC16F887 je mikrokontroler široke namijene, kojeg karakteriše
niska cijena, velike mogućnosti i lahka nabavka. Predstavlja idealan izbor za : kontrolu
31
različitih procesa u industriji, upravljanjem mašinama i uređajima, mjerenje različitih
veličina i dr. Ovaj mikrokontroler predstavlja integraciju mikroprocesora, memorije i
periferija pa zato ne zahtjeva složeni eksterni hardver da bi se realizovao
mikroračunarski sistem. Izrađen je u CMOS tehnologiji sa ugrađenom FLASH i
EEPROM memorijom za memorisanje programa i podataka. PIC16F887 ima RISC
arhitekturu, koju karakteriše manji skup instrukcija koje se brzo izvršavaju [9].Osnovne
karakteristike mikrokontrolera :
RISC arhitektura
Potrebno je poznavati 35 instrukcija
Radna frekvencija 0- 20 MHz
Hardverski magacin sa osam nivoa
Tri načina adresiranja (direktno, indirektno, relativno)
Programska flash memorija kapaciteta 8K x 14-bitnih riječi
RAM memorija za podatke kapaciteta 368 bajta
EEPROM memorija kapaciteta 256 bajta
U/I portovi : A, B, C, D, E
Tri tajmera : TMR0,TMR1,TMR2
10-bitni 8-kanalni analogno-digitalni (A/D) konvertor
Serijska komunikacija : MSSP, USART
Paralelna komunikacija : PSP
Sleep mode - režim rada sa malim utroškom energije
Watchdog tajmer sa sopstvenim integrisanim RC oscilatorom
zbor tipa oscilatora
Radni napon od 2V do 5.5V
Mala potrošnja energije:
0.6 mA pri naponu od 3V i radnoj frekvenciji od 4MHz, 20µA pri naponu od 3V i
radnom taktu od 32KHz, 1µA u standby režimu rada [9]. Većina današnjih
mikrokontrolera je bazirano na Harvard arhitekturi, koja jasno definiše četiri osnovne
komponente potrebne za ugrađen sistem. To uključuje CPU jezgro, memoriju za
program (ROM, EPROM ili FLASH memoriju), memoriju za podatke (RAM), jedan ili
više tajmera (podesive i watchdog tajmere), kao i I/O linije za komunikaciju sa
eksternim periferijama i dopunskim resursima a sve to treba da bude smješteno u jedno
integrisano kolo. Mikrokontroler se u osnovi razlikuje od opštenamijenskog
mikroprocesorskog čipa po tome što ga je izuzetno lahko pretovoriti u radni kompjuter,
sa minimumom eksternih čipova za podršku. Ideja je da se mikrokontroler isprogramira,
postavi u uređaj za kontrolu, poveže na napajanje i stavi u funkciju.
4.3. Arhitektura PIC16F887 mikrokontrolera
Kao što je istaknuto, mikrokontroler PIC16F877A posjeduje tipičnu RISC
arhitekturu, koja je prikazana na slici 4.2. Arhitektura posjeduje odvojene magistrale za
podatke i programski kod. Obim podataka je 8-bitni, dok je programski kod 14-bitni.
Moguće je protočno izvršenje (eng. pipelining). Sve instrukcije su istog obima (osim
instrukcija grananja) i izvšavaju se za četiri taktna intervala. Dakle, ukoliko se koristi
oscilator od 20 MHz, ciklus instrukcije traje 200 ns.
32
Slika 4.2 Arhitektura PIC16F887 mikrokontrolera [8]
4.4. Oscilator
Kod mikrokontrolera PIC16F887 postoje četiri konfiguracije oscilatora :
-RC Resistor/Capacitor
-XT Crystal / Resonator
-LP Low Power Crystal
-HS High Speed Crystal / Resonator.
Najjednostavnija varijanta je RC oscilator, a to je ilustrovano na slici 4.3. Ovakav
pristup ispravan je u aplikacijama u kojima se ne zahtijeva precizna procjena
vremenskih intervala. Ovdje ćemo naglasiti kako je moguće koristiti i interni RC
oscilator, koji je integrisan u mikrokontroleru [12].
Slika 4.3 Povezivanje eksternog RC oscilatora [8]
Frekvencija oscilovanja zavisi ne samo od vrijednosti R1 i C1, već i od napona
napajanja kao i radne temperature. Vrijednost otpornika R1 treba da bude u opsegu od 3
KΩ do 100K KΩ. Izvan ovog opsega rad oscilatora nije stabilan i osjetljiv je na
33
spoljašne uticaje. Kondenzator C1 se može čak i izostaviti. Međutim, zbog stabilnosti
preporučuje se vrijednost oko 20pF. Na pinu OSC2/CLKOUT generiše se taktni impuls
čija je perioda četiri puta veća od periode rada oscilatora. Kod vremenski kritičnih
aplikacija treba ugrađivati kvarcni oscilator ili keramički rezonator. Vrijednosti
kondenzatora C1 i C2 (slika 4.4), treba da budu identične [12].
Slika 4.4 Odabir kondenzatora na osnovu frekvencije kvarcnog kristala [8]
U tabeli na slici dat je izbor vrijednosti kondenzatora za različite vrijednosti frekvencije
kristalnog kvarca i predložen izbor vrijednosti kondenzatora pri različitim vrijednostima
frekvencije rezonatora. Na kraju ćemo istaći kako mikrokontroler PIC16F887 može da
radi i na frekvenciji 32 kHz, kada ima izuzetno malu potrošnju.
4.5. Reset stanje
Uloga Reseta je da sve registre mikrokontrolera dovede u početno stanje. Ako se
mikrokontroler “blokira” , ili smo ga tek uključili, neophodno je da se resetuje. Kako bi
se spriječilo slučajno dovodenje logičke ’0’ na MCLR, potrebno je da se ovaj pin preko
otpornika (npr. vrednosti 10KΩ) poveže na pin napajanja Vdd. Postoji nekoliko tipova
reseta kod mikrokontrolera PIC16F887 a to su:
Power-on reset (POR)
MCLR Reset pri normalnom režimu radu
MCLR Reset prilikom SLEEP režima rada
WDT Reset pri normalnom radu
WDT Wake-up (“budenje” iz SLEEP režima rada)
Brown-out Reset (BOR).
Power-on reset (POR) impuls se generiše u samom kolu kada se detektuje porast
napona napajanja (oko 1.2-1.7 V). Da bi se POR iskoristio, dovoljno je da MCLR pin
priključimo na Vdd direktno ili preko otpornika. Ukoliko je porast napona napajanja
spor, neophodno je na MCLR postaviti spoljno kolo za reset. Interno POR kolo neće
generisati reset signal kad napon napajanja padne ispod minimuma. Za situacije kada je
moguća pojava BROWN-OUT-a (privremeni pad napona ispod minimalne vrijednosti),
neophodno je da se priključi spoljašnje Brown-out reset kolo. Power-up Timer (PWRT)
generiše impuls fiksne širine (nominalno 72 ms) od pojave impulsa POR-a. Za to
vrijeme će mikrokontroler biti u reset stanju. Za ovaj vremenski period obezbjeđuje se
34
da napon napajanja dostigne nominalnu vrijednost. Tajmeru PWRT dozvoljava se rad
setovanjem PWRTE bita koji pripada konfiguracionoj riječi u fazi programiranja čipa.
PWRT se taktuje internim RC oscilatorom. Oscilator Start-up Timer (OST) obezbjeđuje
kašnjenje od 1024 taktnih intervala nakon isteka kvazistabilne periode PWRT-a. Ovo
obezbjeđuje da kristalni oscilator ili rezonator startuju stabilnom frekvencijom. OST se
aktivira samo kod XT, LP i HS režima rada i to pri : POR i “buđenju” iz SLEEP režima
rada. Mikrokontroler PIC16F887 ima implementiran dvobitni statusni registar nazvan
PCON (Power Control Register). Prvi bit nazvan POR setuje se kada se aktivira Power-
on-Reset, a resetuje se kada se aktivira neki drugi reset. Drugi bit (BOR) kada je
setovan ukazuje da je aktivno Brown-out stanje (nedozvoljena naponska stanja u
napajanju mikrokontrolera), zbog kojeg takođe može da se aktivira reset [12].
4.6. Watchdog tajmer
Watchdog timer (WDT) se taktuje nezavisanim RC oscilatorom koji radi čak i
kad je zaustavljen rad glavnog oscilatora, u sleep režimu rada. Prekoračenje intervala
brojanja WDT-a, prilikom normalnog rada, izaziva reset mikrokontrolera. Ako je
mikrokontroler bio u sleep režimu rada, prekoračenje tajmera će probuditi
mikrokontroler i program će nastaviti sa normalnim radom. Isključivanje WDT-a se vrši
resetovanjem WDTE bita u konfiguracionoj riječi. Nominalno vrijeme WDT-a je 18 ms
bez upotrebe preskalera. Ovo vrijeme može da varira od kola do kola, zbog temperature
i slično. Ukoliko je potrebno duže vrijeme može se WDT-u pridružiti preskaler sa
faktorom dijeljenja do 1:128, tako da se vrijeme može produžiti do 2.3s. Instrukcije
CLRWDT i SLEEP resetuju WDT [12].
4.7. Prekidi (Interrupt)
Mikrokontroler PIC16F887 podržava tehniku rada sa prekidima (eng. interrupts)
i može da opsluži ukupno 14 izvora prekida, što internih, što eksternih. Napomenut
ćemo kako svaki prekid ne posjeduje sopstveni vektor-broj. Onog trenutka kada se
prihvati zahtijev za prekid, slijedi izvršenje prekidnog programa počev od adrese
0x0004. Tada se programskim putem testira stanje markera, koji se postavljaju kada se
aktivira odgovarajuci prekid (interrupt flags polling). Kada se ustanovi koji je od
uređaja zahtijevao prekid, prelazi se na izvršenje odgovarajuće rutine za obradu tog
prekida. Povratna adresa prekinutog programana čuva se automatski u hardverskom
magacinu. Povratak iz prekidnog programa se vrši instrukcijom RETFIE. Upravljački
registar INTCON se koristi za maskiranje prekida. Značenje pojedinih markera ćemo
sada navesti:
T0IF (INTCON:2) setuje (postavlja) se na prekoračenje TMR0
INTF (INTCON:1) setuje se u slučaju da nastupi spoljni prekid na pinu
RBO/INT
RBIF (INTCON:0) setuje se kada se dogodi promjena stanja na nekom od
pinova RB4-RB7
PSPIF (PIR1:7) PSP marker bit koji se koristi u operaciji čitanja i upisa na
PORTD, kada je on konfigurisan kao PSP
ADIF (PIR1:6) marker koji se koristi za vrijeme analogno-digitalne konverzije
RCIF (PIR1:5) marker koji označava da je prijemni bafer koji koristi USART
blok, pun
35
TXIF (PIR1:4) marker koji pokazuje da je bafer za slanje podataka koji koristi
USART prazan
SSPIF (PIR1:3) marker koji se koristi za rad sinhronog serijskog porta
CCP1IF (PIR1:2) marker koji koristi CCP1 blok
TMR2IF (PIR1:1) marker koji setuje TMR2 kada dođe do prekoračenja
TMR1IF (PIR1:0) marker koji setuje TMR2 kada dođe do prekoračenja
EEIF (PIR2:4) marker koji se setuje kada se završi upis u interni EEPROM
BCLIF (PIR2:3) marker koji koristi SSP blok kada je konfigurisan da radi u I2C
master režimu
CCP2IF (PIR2:0) marker koji koristi CCP2 blok.
Pored bita za dozvolu rada svih prekida General Interrupt Enable (GIE) i bita za
dozvolu rada prekida generisanih od strane periferija (PEIE), ovom registru pripadaju i
markeri prekida (eng. interrupt flags) i bitovi koji dozvoljavaju prekid koji izaziva
Tajmer0 (TMR0), spoljašnji prekid na pinu RB0/INT i prekida porta B na promjenu
stanja. Osim ova tri osnovna prekida, postoji još 11 periferijskih prekida. Bitovi za
njihovu dozvolu nalaze se u registrima PIE1 i PIE2, a odgovarajući flegovi u registrima
PIR1 i PIR2 [12].
4.8. Tajmeri
U arhitekturi mikrokontrolera PIC16F887 su ugrađena tri tajmera (TMR0,
TMR1 i TMR2) i njihov zadatak je da mjere vrijeme i broje eksterne događaje. Svaki od
pomenutih tajmera posjeduje određene specifičnosti. TMR0 (Tajmer0) posjeduje čitava
familija PIC mikrokontrolera. To je, zapravo, običan 8-bitni brojač koji generiše prekid
pri prelasku sa stanja 0xFF na stanje 0x00 (overflow). Izvor takta za TMR0 može da
bude bilo interni sistemski sat (frekvencije Fosc/4) ili bilo kakav spoljni generator takta
spojen na pin RA4/T0CKI. Naravno, može da se podesi da se TMR0 inkrementira na
rastuću ili opadajuću ivicu spoljašnjeg signala.
Slika 4.5 Prikaz dijagrama TMR0/WDT preskalera [8]
U kombinaciji sa modulom Tajmera0 može da se koristi za programabilni preskaler
(djelilac frekvencije) sa odnosima dijeljenja od 1:2 do 1:256. Ako dijeljenje nije
36
potrebno, preskaler se dodijeljuje watchdog tajmeru. Kada je preskaler u upotrebi,
maksimalna frekvencija eksternog izvora iznosi 50MHz. Na slici 4.5 prikazan je
blokdijagram TMR0/WDT preskalera. TMR1 je 16-bitni tajmer i može da radi kao
brojač ili može da se koristi za mjerenje vremena. TMR1 može da ima tri izvora takta :
sistemski sat (Fosc/4), spoljašnji takt ili spoljašnji kristal. Brojač eksternih događaja
može se sinhronizovati sa internim oscilatorom, a postoji i asinhroni način rada koji
omogućava da se brojač inkrementira i u SLEEP režimu rada. Preskaliranje je moguće
sa vrijednostima dijeljenja 1:1, 1:2, 1:4 i 1:8. TMR2 je 8-bitni tajmer sa programabilnim
preskalerom i postskalerom. Može da bude tajmer ili brojač opšte namijene. Međutim,
potreban je CCP modulu prilikom generisanja PWM signala i modulu za sinhronu
serijsku komunikaciju (SSP) kao Baud Rate generator. Zajedno sa TMR2 koristi se
registar PR2 (Period Register). Kada se vrijednost brojača izjednači sa vrijednošću
upisanom u registar PR2, generiše se odgovarajuci prekid [12].
4.9. Portovi
Ovaj mikrokontroler posjeduje pet portova (PORT A, PORT B, PORT C, PORT
D i PORT E) i oni predstavljaju vezu njegove interne strukture sa spoljašnjim svijetom.
Svaki od njih može da se konfiguriše kao ulazni ili kao izlazni. Pomenuti portovi su
različitog obima :
8-pinski (PORT B, PORT C, PORT D
6-pinski (PORT A)
3-pinski (PORT E).
PORT A - ima mogućnost analogne-digitalne konverzije i prvenstveno se koristi u te
svrhe. A/D konvertor, koji je integrisan u mikrokontroleru je 10-bitni sa 8 ulaznih
kanala jer se u ove svrhe koriste i svi pinovi PORT-a E (i pinovi PORT-a A izuzev
RA4). Pin RA4 je sa otvorenim drejnom i može da se koristi za ulazni takt za tajmer
TMR0.
PORT B - četiri pina na PORT-u B (RB7 - RB4) imaju mogućnost generisanja prekida.
Samo pinovi koji su definisani kao ulazni mogu da prouzrokuju prekid. Kombinacija
prekida na promjenu stanja PORT-a B i pull-up otpornik mogu se iskoristiti kao
jednostavan interfejs za tastaturu.
PORT C - posjeduje ugrađen USART modul, koji služi za serijsku komunikaciju.
Modulu se pristupa preko pinova RC7 i RC6. Pinove treba softverski konfigurisati da
budu u funkciji USART modula.
PORT E - ima mogućnost A/D konverzije. Ulazni bafer je tipa Schmitt Trigger. Pinovi
mogu da se konfigurišu kao digitalni ili analogni kao i u slučaju PORT-a A [9].
4.10. Organizacija memorije
Memorije mikrokontrolera čine tri odvojene cijeline :
Programska memorija
Memorija podataka
EEPROM memorija podataka.
37
Inače, u mikrokontroleru postoji i stack (magacin), koji radi na principu cikličnog
bafera, što znači da se u njega mogu staviti osam različitih adresa, dok se sa upisom
devete adrese briše prva i tako redom. Programski se ne može utvrditi da li je došlo do
prepunjenja stack-a. Programska memorije PIC16F887 posjeduje 13-bitni programski
brojač (PC) koji je u mogućnosti da adresira memorijski prostor od 8K programskih
riječi od 14 bita. Reset vektor je 0x0000 i od njega počinje izvršavanje programa.
Prekidni (eng. interrupt) vektor je 0x0004. Memorija za podatke je podijeljena u više
banki (banks), a sastoji se od registara opšte namijene (General Purpose Registers) i
registara specijalne funkcije (Special Function Registers).
Slika 4.6 Mapa registara mikrokontrolera PIC16F887 [8]
U jednom od specijalnih registara, tzv. STATUS registru postoje dva bita RP1 i RP0
koji služe za izbor željene banke podataka po određenom principu. Svaka banka može
da sadrži do 128 registara (0x7F). Niže lokacije u banci zauzimaju specijalni registri, a
ostatak prostora popunjavaju registri opšte namijene implementirani kao statički RAM.
Neki specijalni registri koji se često koriste mapirani su u sve banke da bi se omogućio
brži pristup i redukcija koda. Mapa registara mikrokontrolera PIC16F887 prikazana je
38
na slici 4.6. Nekoliko specijalnih registara su registri jezgra, usko povezani sa
funkcionisanjem mikroprocesora kontrolera. Ostali registri su vezani za periferne
module i služe za njihovo upravljanje i kontrolu statusa. Programski brojač (PC)
određuje adresu naredne instrukcije u programskom flash-u. U pitanju je 13-bitni
registar. Simboličko ime nižeg bajta je PCL. To je registar u koji se može i upisivati i
iščitavati. Viših pet bita programskog brojača smješteni su u izolovani registar PCH
kojem se pristupa samo preko latch-a PCLATH, mapiranom u internom RAM-u na
adresi 0x0A. Ukoliko je potrebno sačuvati neke podatke i nakon ukidanja napajanja
mikrokontrolera, treba ih prethodno zapisati u interni EEPROM. Ova memorija je
obima 256 bajtova [12].
4.11. A/D konvertor
Svi signali u prirodi su kontinualni, a veoma teško je upravljati nekim procesom
bez digitalizacije analognih veličina. Kao što je napomenuto, PORTA i PORTE imaju
mogućnost A/D konverzije što podrazumijeva da se mogu konfigurisati kao analogni ili
digitalni. Da bi se iskoristio 10-bitni A/D konvertor integrisan u mikrokontroleru,
neophodno je podesiti registre ADCON0 i ADCON1. Inače, registar ADCON0 služi za
podešavanje A/D konverzije (frekvencije odabiranja konvertora, kanal koji se koristi za
konverziju, početak konverzije i uključivanje modula za konverziju). Registrom
ADCON1 određuje se uloga pojedinih pinova (analogni ili digitalni). Modul za A/D
konverziju se bazira na sa sukcesivnoj aproksimaciji.
Slika 4.7 Analogno-digitalna konverzija [8]
Algoritam A/D konverzije
1. Konfiguracija A/D konvertora (preko ADCON0 i ADCON1)
2. Konfigurisanje A/D prekida ukoliko se zahtjevaju (ADIF, ADIE, PEIE, GIE)
3. Čekanje da prođe zahtjevano akviziciono vrijeme
39
4. Početak procesa A/D konverzije
5. Završetak procesa A/D konverzije
6. Čitanje rezultata A/D konverzije iz registra ADRES
7. Za sljedeću konverziju, skočiti na korak 1 ili korak 2.
Rezultat dobiven nakon pretvaranja analognog u digitalni signal je 10-bitni broj koji će
biti pohranjen u ADRESH i ADRESL registrima. Postoje dva načina rukovanja s njim :
lijeva i desna opravdanost koji pojednostavljuje njegovo korištenje u velikoj mjeri.
Format pretvaranja rezultata ovisi o ADFM bitu u ADCON1 registru. U slučaju da A/D
pretvarač se ne koristi, ovi registri mogu se koristiti kao registri opće namjene [12].
4.12. Periferne jedinice
Mikrokontroler PIC16F887 posjeduje nekoliko korisnih periferijskih modula. S
obzirom da mikrokontroler treba da razmijenjuje podatke sa ostalim komoponentama
(registrima, memorijama, drugim mikrokontrolerima itd.) u tu svrhu je opremljen sa tri
hardverska komunikaciona modula. Prvi od njih je SSP modul (Synchronous Serial
Port), koji služi za komunikaciju sa serijskim EEPROM-ima, pomjeračkim registrima,
displej-drajverima itd. Ovaj modul može da radi u jednom od dva režima :
Serial Peripheral Interface (SPI)
Inter-Integrated Circuit (I2C).
Drugi serijski komunikacioni modul je USART (Universal Synchronous Asynchronous
Receiver Transmiter). On uglavnom služi za povezivanje sa personalnim računarom,
mada to nije jedina njegova mogućnost primjene. USART može da se konfiguriše u
neki od sljedećih režima rada :
Asinhroni rad (full duplex)
Sinhroni master rad (half duplex)
Sinhroni slave rad (half duplex).
Osim serijskih, postoji i jedan paralelni komunikacioni modul. U pitanju je modul PSP
(Parallel Slave Port). Njegov zadatak je da PIC16F887 direktno poveže na 8-bitnu
magistralu podataka drugog mikroprocesora. Eksterni mikroprocesor tada, preko linija
Read (RD) i Write (WR) može da čita i upisuje u registar PortD kao u svaki drugi 8-
bitni latch [12].
4.13. Napajanje mikrokontrolera
Kako bi se omogućilo da mikrokontroler radi ispravno potrebno je postaviti
sljedeće :
Napajanje
Reset signal
Clock signal
Kao što se vidi sa šeme (Slika 4.3), krug za napajanje mikrokontrolera PIC16F887
izgleda poprilično jednostavno. Potrebno je mrežni napon transformisati sa 220V na 6-
12V, a zatim izvršiti ispravljanje izmjenične struje u istosmjernu pomoću grecovog
40
spoja. Nakon toga potrebno je dodati filter za „peglanje“ napona. Napajanje
mikrokontrolera se može naknadno zakomplicirati ali ovo riješenje je za sada dovoljno.
Slika 4.3 Šema napajanje mikrokontrolera PIC16F887 [8]
Napajanje od +5V DC je najprikladnije napajanje sa najmanje gubitaka. Kolo prikazano
na prethodnoj šemi, koristi jeftini integrirani tronožni pozitivan regulator LM7805 i
osigurava visok kvalitet stabilnog napona, i sasvim dovoljno (dovoljno znači do 1A)
struje kako bi se omogućilo mikrokontroleru i popratnoj elektronici da rade normalno.
Da bi mikrokontroler mogao da radi ne smetano potrebno je napon od +5V dovesti na
reset (MCLR) ulaz. Međutim potrebno je preko tastera reset ulaz spojiti sa masom. U
slučaju na nešto krene po zlu preko tastera reset ulaz se dovodi na 0V , što omogućava
mikrokontroleru da se resetuje i vrati na normalno stanje.
4.14. Upotreba ulazno/izlaznih portova, funkcija kašnjenja
Jedina svrha ovog programa je da se upravlja sa nekoliko LED dioda na portu B.
U svakom slučaju, ovaj primjer se koristi za upravljanje pinovima mikrokontrolera.
Slika ispod prikazuje šemu spajanja dioda na mikrokontroler [10]. Kada je simulacija
pokrenuta, svaka druga LED dioda na portu B emitira svjetlost, koja ukazuje na to da je
mikrokontroler pravilno spojen i da normalno radi. Da bi ovaj primjer bio još
zanimljiviji, omogućit ćemo LED diodama na portu B da mogu treptati. Postoji
nekoliko načina kako to učiniti:
Kada je mikrokontroler uključen, sve LED će emitirati svjetlo jednu sekundu. Funkcija
kašnjenja je zadužen za to u programu. Samo je potrebno postaviti funkciju kašnjenja
izraženu u milisekundama. Nakon jedne sekunde, port B se resetuje i program ulazi u
petlju i ostaje tamo dok varijabla k je manja od 20. Varijabla poraste za 1 nakon svake
iteracije. Unutar for petlje, switch operator prati stanje porta B. Ako je port B
41
postavljen na vrijednost PORTB = 0xff, njegovo stanje je 0x00 i obrnuto. Svaka
promjena tih logičkih stanja uzrokuje da će sve LED diode trepnuti.
Slika 4.5 Šema spajanja LED dioda na pinove mikrokontrolera [10]
Dužnost ciklusa je 5:1 (500mS: 100ms). Kada program izlazi iz for petlje, port B se
promjeni u vrijednost (0b 01010101) i programa ulazi u beskrajnu while petlju i ostaje
tamo dok 1=1. Logika porta B je da se svakih 200 ms invertuje izlaz, pa tamo gdje je
bila logička 0, prelazi u logičku 1. Pomoću operatora za invertovanje (~), stanje porta B
se mijenja. U narednom dijelu biće prikazan kȏd sa komentarima.
Slika 4.6 Programski kod u mikroC-u za primjer 1
42
4.15. Brojači TMR0, TMR1 i TMR2, upotreba prekida
Brojač TMR0 ima širok spektar primjene u praksi. Vrlo malo programa ne
koristite ga na neki način. To je vrlo jednostavna komponenta za korištenje za pisanje
programa ili potprograma za generisanje impulsa proizvoljnog trajanja. Timer TMR1
ima potpuno odvojeni djelitelj koji omogućuje 1, 2, 4 ili 8 podjelu frekvencije sata
unosa. Djelitelj nije izravan za čitanje ili pisanje. Ovaj primjer čini vezu između brojača
i prekida na praktičan način. Za ovaj primjer koristimo prethodnu šemu (Slika 4.5).
Potrebno je osigurati dovoljno dugo kašnjenje bez promjene na portu B. Brojač TMR0
sa dodijeljenim djelilom se koristi za ovu svrhu. Prekid je generisan na svakom
prelijevanju registra brojač i kod svakog prekida varijabla cnt se povečava za jedan.
Kada vrijednost varijable cnt dosegne 400, port B se poveča za jedan. Cijeli postupak
se obavlja "u pozadini", koja omogućuje mikrokontroleru da izvrši neku drugu radnju.
Ovaj primjer pokazuje jedan od najčešćih primjena mikrokontrolera u industriji, kada se
nešto izvodi onoliko puta koliko je potrebno, a zatim neki drugi uređaj treba biti
uključen ili isključen. U narednom dijelu biće prikazan kȏd sa komentarima [10].
Slika 4.7 Programski kod u mikroC-u za primjer 2
43
4.16. Modul CCP1 kao PWM generator signala
Ovaj primjer pokazuje korištenje CCP1 modula u PWM modu. Da bi stvari bile
još zanimljivije, trajanje P1A izlaznog impulsa (PORTC, 2) može se mijenjati pomoću
tipkala koja smo simbolično označili kao 'DARK' i 'BRIGHT', dok je trajanje
postavljeno kao binarna kombinaciji na portu B. Rad ovog modula je pod kontrolom
funkcija koje pripadaju specijaliziranim PWM bibliotekam. Tri od njih se koristi u
ovom primjeru :
PWM1_init je prototip funkcije : void Pwm1_Init (frekvencija), parametar
frekvencija postavlja frekvenciju PWM signala izraženu u Hz. U ovom primjeru
ona iznosi 5 kHz.
PWM1_Start je prototip funkcije : void Pwm1_Start (void).
PWM1_Change_Duty je prototip funkcije: void Pwm1_Change_Duty (unsigned
short duty_ratio), parametar duty_ratio postavlja trajanje impulsa u slijedu
impulsa
CCP modul (Capture/Compare/ PWM) je periferni modul koji omogućuje korisniku da
vrijeme i kontrola događaja u mikrokontroleru budu različiti. Upotreba PWM signala u
krugu služi za generisanje signala slučajnih talasnih dužina [10].
Slika 4.8 Upotreba CCP modula kao PWM generatora signala [10]
PWM biblioteka također sadrži PWM_Stop funkciju koja može onemogućiti ovaj način.
Njegov prototip je: void Pwm1_Stop (void). U ovom primjeru upravljanje diodam
vršimo preko tri gumba, a to su: gumb za osvjetljenost, gumb za zatamnjenost i gumb za
reset mikrokontrolera. Stiskom na gumb za osvjetljenost povećava se vrijednost impulsa
koje stvara pwm generator signala, dok prilikom stiska gumba za zatamnjenost obavlja
se obrnuta funkcija. Na sljedećoj slici biće prikazan programski kod sa komentarima za
primjer PWM generatora signala. U programskom kodu koristimo dvije varijable za
vrijednost osvjetljenosti, kako se ne bih izgubilo prethodno stanje vrijednosti signala za
osvjetljenost.
44
Slika 4.9 Programski kod u mikroC-u za primjer 3
4.17. Upotreba A/D konvertora
Iako upotreba A/D konvertora izgleda vrlo komplicirana, to je u osnovi vrlo
jednostavno, jednostavnije nego korištenje tajmera. PIC16F887 A/D konvertor se koristi
u ovom primjeru. Varijabla analognog signala se primjenjuje na AN2 pinu, dok je 10-
bitni rezultat konverzije prikazan je na portovima B i D (8 LSBs na portu D i 2 MSBs
na portu B). GND se koristi kao negativna naponska referenca Vref-, dok se pozitivni
referentni napon primjenjuje na AN3 pinu. To omogućuje mjerenje napona. Šema je
prikazana na sljedećoj slici [10]. Sa šeme se vidi da su u upotrebi dva potenciometra
analognih veličina čije vrijednosti je potrebno pretvoriti u digitalne. Vrlo jednostavnim
naredbama u programskom kodu vrši se konverzija iz analognog signala u digitalni
signal. Zapravo preko naredbe ADC_Read(broj porta) vršimo čitanje i konverziju
signala u digitalni. Dobijeni rezultat je potrebno pridružiti varijabli.
45
Slika 4.10 Upotreba A/D konverzije sa mikrokontrolerom [10]
Drugim riječima, A/D pretvarač uvijek generiše 10-bitni binarni rezultat, što znači da se
otkrije ukupno 1024 naponske razine (210
= 1024). Razlika između dvije naponske
razine nije uvijek isti. Manja je razlika između Vref + i Vref-, također manja razlika je
između dvije od 1024 razine.
Slika 4.11 Programski kod u mikroC-u za primjer 4
Kao što se vidi, A/D pretvarač je u mogućnosti otkriti male promjene u naponu. Na slici
iznad prikazan je programski kod za dati primjer konverzije.
46
4.18. Upotreba EEPROM memorije
PIC16F887 mikrokontroler ima 256 lokacija podataka EEPROM-a kontrolom
bitova sljedećih registara:
EECON1 (upravljački registar)
EECON2 (upravljački registar)
EEDAT (spremanje podatke za pisanje i čitanje)
EEADR (spremanje adresa EEPROM-a ).
Slika 4.12 Memorisanje podataka u EEPROM memoriju [10]
Osim toga, EECON2 nije stvarni registar, fizički ne postoji. EEDATH i EEADRH
registri se koriste prilikom EEPROM pisanja i čitanja. Oba registra se također koriste za
programsku (FLASH) memoriju, za pisanje i čitanje. Na sljedećem primjeru je
pokazano pisanje i čitanje iz EEPROM memorije. Program radi na sljedeći način :
Glavna petlja stalno čita EEPROM memorijsku lokaciju na adresi 5 (decimalno).
Program zatim ulazi u beskonačnu petlju u kojoj port B se svaki cikuls uvećava za
jedan, a stanje ulaza PORTA.F2 se provjerava. U trenutku pritiskom na gumb pod
nazivom MEMO, broj pohranjen u portu B će biti pohranjen u EEPROM memoriju i
47
izravno se čita i prikazuje na portu D u binarnom obliku [10]. Kako bi provjerili da li se
podaci spremaju u memoriju, dovoljno je pritisnuti tipku MEMO i isključiti uređaj.
Nakon ponovnog pokretanja uređaja, program će prikazati spremljenu vrijednost na
portu D. Da bi ovaj primjer radio ispravno, potrebno je uključiti EEPROM biblioteku.
Programski kod je prikazan na sljedećoj slici.
Slika 4.13 Programski kod u mikroC-u za primjer 5
4.19. Upotreba LCD zaslona
Ova komponenta posebno je proizvedena da se koristi sa mikrokontrolerom, što
znači da se ne može aktivirati u standardnim IC kolima. Koristi se za prikazivanje
različitih poruka na minijaturnom zaslonu od tekućeg kristala. On se temelji na
HD44780 mikrokontroleru (Hitachi), a može prikazati poruke u dva reda sa 16 znakova.
Može prikazati sva slova abecede, grčka slova, interpunkcijske znakove, matematičke
simbole itd. Također moguće je prikazivati simbole sastavljene od strane korisnika.
Ovisno o tome koliko linija se koristi za povezivanje LCD-a i mikrokontrolera, postoje
8-bitni i 4-bitni LCD način povezivanja. 8-bitni LCD način koristi izlaze D0-D7 za
prijenos podataka, što znači da su svi izvodi upotrebljeni. Da bi se uštedilo na izvodima
mikrokontrolera koji su neophodni za druge svrhe, također postoje i 4-bitna konekcija
LCD-a i mikrokontrolera. Primjer 8-bitnog povezivnja prikazan je na sljedećoj slici
[10]. Sljedeći primjer pokazuje primjenu A/D konverzije za mjerenje napona koji se
očitava na LCD zaslonu. Ovaj primjer pokazuje kako se bilo koja izmjerena analogna
veličina može prikazati na zaslonu uz pomoć mikrokontrolera. Šema spajanja je
prikazana na sljedećoj slici. Kontrast zaslona ovisi o naponu na priključku VEE. Iz tog
razloga, promjena napona 0-VDD reguliše osvjetljenost LCD zaslona. Potenciometar se
obično koristi za tu svrhu. Neki od LCD zaslona imaju ugrađeno pozadinskim
osvjetljenje (plave ili zelene LED diode).
48
Slika 4.14 Primjer povezivanja LCD-a i mikrokontrolera [10]
DDRAM je memorija koja se koristi za spremanje znakova koji će biti prikazani na
zaslonu. Veličina ove memorije je sposobna da pohrani 80 znakova. Neke memorijske
lokacije su izravno povezan sa karakterima na zaslonu. Sve radi vrlo jednostavno:
dovoljno je podesiti zaslon na prirast vrijednosti adrese tj. da se automatski pomakne za
jednu memorijsku lokaciju. Potrebno je također postaviti početnu adresu da bi poruke
bile prikazane (na primjer 00 hex).
Slika 4.15 Mjerenje i očitavanje analognih veličina [10]
Od svog osnivanja pa do danas, računari mogu prepoznati samo brojeve, ali ne i slova.
To znači da su svi podaci u računaru u binarnom formatu, iako iste čovjek ne koristi kao
slova (tipkovnica je odličan primjer). Drugim riječima, svaki karakter odgovara
49
jedinstvenoj kombinaciji nula i jedinica. ASCII je kodiranje znakova na temelju
engleske abecede. ASCII kod specificira određuje pridruživanje između standardnih
znakova i njihovih numeričkih ekvivalenata. Programski kod sa komentarima prikazan
je na slici ispod.
Slika 4.16 Programski kod u mikroC-u za primjer 6
Neophodno je bilo 10 bitni rezultat konverzije podijeliti na 1024 dijela, a zatim od
dobivenog broja izuzeti hiljaditi, stoti, deseti i jedinični dio. Uz pomoć ASCII formata
brojevi su prikazani na LCD zaslonu.
50
4.20. RS232 serijska komunikacija
USART je jedan od najstarijih serijskih komunikacijskih sistema. Moderne
verzije ovog sistema su unaprijeđene i nazvane nešto drugačije - EUSART. RS-232 je
standard koji definira digitalnu, serijsku komunikaciju između DTE (Data Terminal
Equipment) i DCE (Data Communication Equipment) uređaja. Izvorno je zamišljen za
povezivanje računala i terminala (DTE) s modemima (DCE) za potrebe udaljenog rada
na (tada skupim i rijektim) središnjim računalima. RS-232 propisuje konektor,
električne karakteristike, signale i signalizaciju. Standard ne propisuje način prijenosa
podataka iako se najčešće koriste asinhroni i sinhroni prijenos. Sam DB-25 konektor je
opisan ISO standardom. Danas se, doduše, sve češće koristi svega 9 signala, dok je
komunikacija moguća i sa svega tri signala. To neminovno vodi ka tome da se u praksi
nastoje koristiti i drugačiji, manji i jeftiniji konektori [11].
Slika 4.17 DB9 muški konektor [11]
Podaci se mogu prenositi na dva načina: asinhrono i sinhrono. Daleko najrašireniji (po
broju primjena) je asinhroni način, koji prenosi znak po znak. Sinhroni način prenosi
blok znakova odjednom i bio je u širokoj upotrebi na velikim računarima 60-tih godina.
Podaci se prenose u ASCII kodu. U oba slučaja se podaci prenose brzinama od 50, 110,
150, 300, 600, 1200, 2400, 4800, 9600 ili 19200 bita u sekundi. Danas se u praksi
koriste i nestandardne brzine od 14400, 28800 te 33600 bita u sekundi, posebno za
modemske komunikacije. Asinhronim načinom prijenosa prenosi se svaki znak zasebno.
Znak može imati 5 do 8 bitova i utvrđuje se za svaku komunikaciju (razgovor)
unaprijed, dogovorom sugovornika (ne može se utvrditi automatski). Na početku
svakog znaka nalazi se bit koji označava početak znaka: start bit (binarna 0). Na sličan
način znak završava stop bitom (binarna 1). Iz povijesnih razloga (stari
elektromehanički uređaji) predviđena je mogućnost da stop bit ima trajanje u dužini 1,
51
1.5 ili 2 bita [11]. Sljedeći primjer pokazuje korištenje EUSART modula
mikrokontrolera. Priključak na računar, omogućen je putem RS232 standarda.
Slika 4.18 Povezivanje pomoću RS232 serijske komunikacije [10]
Program radi na sljedeći način. Svaki bajt primljen preko serijske komunikacije se
prikazuje pomoću LED dioda priključenih na portu B i automatski se vraća na odašiljač
nakon toga. Ako dođe do greške na primanju podatka, to će biti signalizirano na LED
diodi koja je označena za grešku.
Slika 4.19 Programski kod u mikroC-u za primjer 7
Najlakši način za testiranje uređaja praktično je pomoću standardnih Windows program
koji se zove Hyper Terminal. MAX 232 pločica služi za potrebe prilagođenja napona u
52
serijskoj komunikaciji. Ona s jedne strane prima 12 voltne signale sa DB9 serijskog
kabla i spušta ih na razinu od maksimalno 5V potrebnu za slanje prema
mikrokontroleru. U suprotnom smjeru podiže naposku razinu. Pinove za napajanje
(VCC), uzemljenje (GND), primanje (RX) i slanje podataka (TX) spajamo na
odgovarajuće pinove na mikrokontroleru [10]. U mikroC-u se nalazi posebna biblioteka
za RS232 komunikaciju. U njoj se nalaze sve funkcije koje su potrebne za komunikaciju
preko RS232 porta. Na sljedećoj slici prikazan je programski kod za uspostavljanje
komunikacije preko RS232 porta.
4.21. Mjerenje temperature pomoću DS1820 senzora
Mjerenje temperature je jedan od najčešćih zadataka koje obavlja
mikrokontroler. DS1820 senzor se koristi za mjerenje temperature u ovom primjeru. On
je sposoban za mjerenje temperature u rasponu od -55 ° C do 125 ° C s 0,5 ° C tačnosti.
Slika 4.20 Mjerenje temperature pomoću senzora DS1820 [10]
Termperaturni senzor DS1820 je povezan sa mikrokontrolerom dvožično pri čemu je
jedna žica povezana na masu. Mikrokontroler sa ovim senzorom komunicira preko 1-
Wire protokola. Ulaz DQ na senzoru preko tzv. „pull-up“ otpornika, koji služi za
održavanje logičkih nivoa, povezan je na napon VCC [9]. Da bi omogućili 1-Wire
protokol potrebno je uključiti biblioteku podataka koja podržava ovaj protokol i u kojoj
se nalaze funkcije potrebno za rad u ovom primjeru. To su tri funkcije, funkcija za
resetovanje ovog protokola, funkcija za čitanje vrijednosti sa senzora i Treća funkcija se
koristi za slanje komandi na senzor.Izmjerena vrijednost na senzoru se automatski
pretvara u digitalnu veličinu, pa iz tog razloga nije potrebno koristiti analogno-digitalni
pretvarač. LCD zaslon koristimo za prikaz podataka koje smo dobili sa senzora, koje je
naravno potrebno osvježavati svake pola sekunde. Konkretno, ne morate učiti
dokumentaciju dobivenu od strane proizvođača kako bi koristili ovaj senzor. Dovoljno
je kopirati neke od tih funkcija u program. Ako želite znati kako bilo koja od njih je
deklarisana, potrebno je odabrati opciju za pomoć i pronaći biblioteku u kojem se nalaze
funkcije.
53
Slika 4.21 Programski kod u mikroC-u za primjer 8
54
4.22. Generisanje zvuka
Audio signali često se koriste kada je potrebno skrenuti pažnju korisnika, da su
neke od tipki pritisnute ili upozoravaju korisnika da su minimalne ili maksimalne
vrijednosti postignute i sl. To može biti samo 'beep' signal, kao i duže ili kraće melodije.
Ovaj primjer pokazuje generisanje zvuka koristeći funkcije koje pripadaju Sound
biblioteci. Na sljedećoj šemi prikazano je povezivanje zvučnika sa tipkalima koja daju
različite melodije zvuka.
Slika 4.22 Generisanje zvuka pomoću Sound biblioteke [10]
Pomoću funkcije Sound_Play(frekvencija,trajanje), omogućavamo generisanje zvuka
određene frekvencije. Također možemo da spajamo više uzastopnih generisanih
zvukova kako bi stvorili određenu melodiju. Da bi ostvarili reprodukciju zvuka
neophodno je da inicijaliziramo na kojem portu se nalazi zvučnik. Ovo realizujemo
pomoću funkcije Sound_Init (port,pin), gdje je potrebno samo definisati port i pin na
kojem je spojen zvučnik. Moguće je implementirati različite vrste zvuka sa različitim
frekvencijama. Naravno audio uređaj koji postavimo na šemu, a izabran je iz protesu
biblioteke komponenti mora biti aktivni uređaj, tj. mora koristiti u virtualnoj simulaciji
zvučnu karticu od računara na kojem se testira ista simulacija. Sve što je potrebno je uz
zvučnik povezati jedan mali kondenzator koji neće dozvoliti bilo kakve vanjske
smetnje. Kontrola izvođenja različitih tonova omogućena je preko tastera ili gumbova,
preko kojih je i definisano koja melodija će biti reproducirana na zvučniku. Na
sljedećoj slici prikazan je programski kod za prethodnu šemu.
55
Slika 4.23 Programski kod u mikroC-u za primjer 9
56
5. RAZVOJ MODELIRANOG SISTEMA
5.1. Definisanje problema
Elektronska brava sa PIC mikrokontrolerom realizuje sistem dozvole ili zabrane
pristupa objektu ili prostoriji. Zahtjeva poznavanje elektronskih komponenti,
poznavanje mikroC-a, pa se u ovom poglavlju implementira prethodno stečeno zanje iz
oblasti mikrokontrolera. Odabrana tema elektronske brave je zanimljiva, i zahtjeva
rješenja koja će moći da ostave prostora za nadogradnju, usavršavanje i zadovoljavanje
specifičnih zahtjeva korisnika.
5.2. Moguća rješenja
Problem kontrole pristupa objektu ili prostorijama zahtjeva rješenje koje može
biti realizovano upotrebom mehanike, ili uređaja baziranog na mikrokontrolerima sa
eventualnom podrškom računara opšte namjene ili PC-ija sa odgovarajućom
aplikacijom. Upotreba mehaničkog sistema ( ključ i brava ) omogućava održavanje
sigurnosti objekta ili prostorije u određenim granicama, koje definiše kvalitet izrade, i
način funkcionisanja iste. Takođe je diskutabilno pitanje slučaja krađe ključeva. Dobra
strana ovakvog sistema jeste što nije podložan kvarovima ukoliko se radi o kvalitetnoj
izradi. Rješenje upotrebom sistema baziranog na mikrokontrolerima pruža mnogo više
prostora za razvoj i usavršavanje, kao i veću kontrolu korisnika. Posebna pogodnost je
što se u slučaju krađe ne mora mijenjati cijela ''brava'' , već samo ''ključ'' . Upisom
programa u mikrokontroler se u potpunosti određuje rad, a da pri tome ne postoji
opasnost od pada sistema ili prestanka rada uređaja. Pogodnost je što ovaj sistem može
da se nadogradi u bilo kom trenutku i da se uvede monitoring preko računara, kao
dodatni dio sistema. Dodatni dio sistema upotrebom odgovarajuće aplikacije na PC-iju ,
pruža niz pogodnosti, pa je stoga zastupljena primjena ovakvih sistema u industrijskim
postrojenjima, u ozbiljnijim firmama, institucijama i svim drugim objektima koji svoju
zaštitu shvataju ozbiljno. Nedostatak je u tome što je moguć pad sistema, što bi bilo
pogubno, za npr. proizvodnju, ukoliko ne postoji back-up sistem, ili ako nije omogućen
rad mikrokontrolera i u slučaju gubitka veze sa PC-ijem.
5.3. Odabrano rješenje
Za modeliranje sistema odabrano je rješenje koje je bazirano na
mikrokontroleru. Kako tema ne zahtjeva monitoring i automatsku kontrolu rada brave
zbog preopširnosti problema, odlučeno je da se modelira osnovni sistem za kontrolu
pristupa i da se koristi mikrokontroler koji je u prethodnim poglavljima bio detaljno
opisan, a to je mikrokontroler PIC16F887 koji predstavlja glavni dio sistema. Ovo
rješenje pruža mogućnost hardverske i softverske izmijene, tj. nadogradnju. U
odabranom rješenju umjesto elektromagnetne brave koristi se jednostavni DC motor sa
malim brojem obrtaja u minuti, a razlog za njegovu upotrebu je nepostojanje
elektronskog elementa elektromagnetne brave u razvojnom okruženju Proteusa, pa će
ova zamjena biti najbolje adekvatno rješenje. Iako motor može da se koristi za kontrolu
pristupa objektima tipa garaže i pokretnih ograda. Uvijek postoji mogućnost
nadogradnje ovog sistema zbog zahtjeva korisnika koji žele povećati svoju sigurnost.
Odabrano rješenje predstavlja osnovni vid zaštite objekta, a svako unapređenje moguće
je daljim usavršavanjem na samom projektu.
57
5.4. Šema modeliranog sistema
Elektronska brava omogućuje aktiviranje električnog uređaja samo ako je
unešena lozinka ispravna. Osim mikrokontrolera koji ima glavnu ulogu u ovom sistemu
potrebno je uključiti tastaturu 3x4 i LCD 16x2 zaslon. Da bi kontrola pristupa bila
atraktivna potrebno je ubaciti jedan zvučnik i dvije LED diode. Diode će poslužiti za
signalizaciju kada sistem dozvoli uključivanje i isključivanje motora. Način pokretanja
malog DC motora je omogućen preko tranzistora snage koji su spregnuti u Darlingtov
spoj. Izostavljeno je uključivanje DC motora preko releja jer se radi o malim snagama
uređaja.
Slika 5.1 Blok šema elektronske brave
Da bi ove elemente povezali potreban je redoslijed spanja, pa tako krećemo prvo od
LCD zaslona bez kojeg cijeli sistem je nezamisliv. Spajanje pinova LCD zaslona sa
pinovima mikrokontrolera obavlja se po unaprijed definisanom redoslijedu koji korisnik
postavlja. Također za sami pristup i unos lozinke neophodno je povezati tastaturu sa
mikrokontrolerom. Redoslijed spajanja tastature je određen u biblioteci Keypad u
mikroC-u. Također na isti način je definisano i spajanje zvučnika sa mikrokontrolerom.
Odabir pinova za spajanje LED dioda i DC motora je proizvoljan. Svi ostali elementi
kao što su otpornici, kondenzator i tranzistori su definisani od strane korisnika po
unaprijed izvršenom proračunu. Blok šema predstavlja put kojim treba realizovati
unaprijed definisano rješenje. Vidimo da su svi elementi povezani na mikrokontroler
koji čini mozak sistema, i upravlja svim perifernim komponentama, zato je potrebno
najveću pažnju pokloniti njemu i bazirati se na pravilno spajanje i programsko
definisanje njegovih izlaza tj. portova.
58
6. REALIZACIJA SISTEMA U OKRUŽENJU PROTEUS
6.1. Mikrokontroler
Mikrokontroler je glavni dio sistema. On upravlja bravom, provjerava lozinku i
služi kao interfejs korisniku. Kako je bitno da sistem bude što univerzalniji, to je
neophodno da ostvari komunikaciju sa različitim uređajima, tj. da ima mogućnosti za
proširenje i nadogradnju. Najbolje je uzeti mikrokontroler PIC16F887. Ovaj
mikrokontroler raspolaže sa dovoljno I/O pinova, jednim USART-om, može da radi ako
je potrebno na frekvenciji do 20 MHz, tako da predstavlja pravo rješenje za glavni,
upravljački dio sistema. Za potrebe konkretnog sistema potrebno je da mikrokontroler
ima:
3 pina za signalizaciju (zvučna i svjetlosna).
Dva pina za kontrolu motora.
7 pinova za očitavanje tastature.
6 pinova za prikaz na displeju.
Znači da bi mikrokontroler trebao da posjeduje dovoljno pinova za potrebe sistema, i da
se ostavi dovoljno slobodnih pinova za eventualna proširenja. U razmatranja za
upotrebu su ušli tipovi 16F628, 16F648 i 16F887. Oba moguća rješenja na bazi serije
16F6xx bi u startu ograničile mogućnosti sistema veličinom memorije za upis firmware-
a, onemogućila bi se eventualna nadogradnja i proširenja sistema zbog malog broja
pinova ( tipova 16F628 i 16F648 raspolažu sa po 18 pinova) i na kraju bi produžile
period razvoja jer nemaju hardverska rješenja za komunikaciju tj. USART. Stoga je
odlučeno da se za sistema u radu koristi PIC16F887, koji raspolaže sa dovoljnim brojem
pinova ( 16F887 raspolaže sa 40 pinova, od kojih je 35 slobodno za upotrebu ),
posjeduje dovoljno upisive memorije za firmware (8 kB), i raspolaže sa hardverskim
rješenjem za serijsku komunikaciju, što je od ključne važnosti za nadogradnju sistema.
Raspored pinova je napravljen na sljedeći način: Pinovi od RD0 do RD7 se koriste za
očitavanje tastature u matričnom raporedu 3x4. Kako PIC raspolaže sa 40 pinova, to
nije bilo prijeko potrebno da se tastatura očitava u ovakvom rasporedu, koji se koristi da
bi se očitala tastatura sa manje pinova nego što ima tastera, ali je ipak iskorištena ova
metoda da bi se steklo iskustvo. Pinovi od RC0 do RD2 se koriste za kontrolu zaslona.
Pinovi RC4, RC5, RC6 i RC7 se koriste za postavljanje podataka o karakteru koji treba
da se prikaže. Pin RE0 se koristi za zvučni efekat prilikom unošenja lozinke. Pinovi od
RB0 do RB3 se koriste za upravljanje motora tj. Pin RB0 se koristi za otvaranje, dok
pin RB1 se koristi za zatvaranje sistema. Pin RB2 se koristi kao svjetlosna signalizacija
prilikom otvaranja sistema, dok pin RB3 se koristi kao svjetlosna signalizacija sistema
prilikom zatvaranja.
6.2. Displej
Da bi se obezbjedila komforna upotreba sistema, bilo je potrebno da se korisniku
omogući uvid u opcije kojima sistem trenutno raspolaže. Odlučeno je da upotreba
adekvatnog LCD displeja takav zahtjev ispunjava, te je iskorišten LCD displej sa 4x16
karaktera. Odgovarajući displej pruža nekoliko mogućnosti za prikaz karaktera i
kontrolu istog, te su te mogućnosti predstavljene. Pristup i kontrola LCD displeja može
da se izvrši preko 6 ili 10 pinova. Razlika se ogleda u procesu upisa karaktera. Prvi
način upisa karaktera koristi 4 pina za upis karaktera (D7 … D4), dok drugi način upisa
koristi 8 pinova (D7 ... D0). Kod procedure upisa karaktera sa 4 pina, mikrokontroler
59
prvo pošalje donji nibl na ulaz displeja, a zatim gornji nibl, kompletirajući tako podatak
o željenom karakteru. U intervalu između dva nibla koriste se i pinovi RS i E. Kod
procedure upisa karaktera sa 8 pinova, PIC jednostavno samo proslijedi cijeli bajt ka
displeju i podaci o karakteru su dostavljeni. Za kotrolu prikaza karaktera na oba načina
koriste se i gore pomenuti pinovi RS i E. Pin RS služi za selektovanje memorije displeja
da bi se postavio novi karakter. Pin E (Enable) služi kao znak da je jedna od
kombinacija na pinovima D7 … D0 postavljena i da može da se prikaže karakter. Pin
R/W (Read/Wright) je se koristi u slučaju specijalne upotrebe displeja. Naime, pin R/W
služi da bi se pristupilo memoriji displeja radi čitanja upisanih podataka. Međutim, ovu
mogućnost rad nije zahtjevao, te ova mogućnost nije ni testirana. Displej pruža, niz
pogodnosti za upotrebu i kontrolu prikaza.
6.3. Tastatura
Tastatura je kao i displej, neizbježni dio sistema, te je i ovaj rad podrazumijeva
upotrebu iste. Da bi se obezbjedila komforna upotreba sistema, odlučeno je da se
iskoristi tastatura sa dvanaest tastera : numerički dio od 0 do 9, taster “*” i taster “#”.
Numerički dio tastature raspolaže sa deset cifara, od 0 do 9, i koristi se za unos PIN
koda, kada se takav zahtjev pojavi na displeju.
Slika 6.1 Električna šema tastature [13]
Taster “*” se koristi za brisanje unešenog PIN koda, ukoliko korisnik zaključi u toku
unosa istog da je došlo do greške. Pritiskom na taster “*” korisnik se vraća samo jedan
korak unazad. Taster “#” ima funkciju da potvrdi unešeni pin ili lozinku tj. da nebi
prilikom unosa lozinke automatski se izvršila provjera iste kada korisnik unese zadnji
karakter lozinke. Električna šema tastature je predstavljena na slici 6.1. Može se
primjetiti da je tastatura sastavljena u matričnom rasporedu 3x4. Ovakvo rješenje je
logično, jer iako postoji dovoljno pinova na mikrokontroleru, uvijek se postavlja i
pitanje brzine očitavanja tastature. Ovakav pristup rješavanju problema skeniranja
tastature je profesionalniji i znatno interesantniji. Pinovi D4, D5, D6 i D7 služe za
postavljanje logičke jedinice na svoje linije, dok pinovi D0, D1 i D2 služe za skeniranje
i pretragu tastature za pritisnutim tasterom.
60
6.4. Napajanje
Napajanje terminala je veoma važan segment rada, od čijeg kvaliteta zavisi
funkcionisanje ostatka sistema. Sistem je odgovoran za bezbjednost objekta ili
prostorije, tako da se ne smije dozvoliti propust poput neadekvatno izprojektovanog
napajanja. Napon potreban za rad svih komponenti terminala je 5V. Kako sistem
elektronske brave nije predviđen za Sleep režim, to je potrebno obezbjediti mu
konstantan izvor napajanja. Iskorištena je mreža 220V, dok je kao konvertor napona
iskorišten odgovarajući transforamtor sa 220V na 12v, 100mA. Kao stabilizator napona
od 5V je iskorišteno kolo 78L05.
Slika 6.2 Električna šema napajanja [13]
Na slici 6.2 predstavljeno je napajanje Vcc, kao napon od stabilisanih 5V. Sa druge
strane se nalazi izvor napajanja od 12V koji predstavlja adapter priključen na mrežu
220V. Za slučaj pada napona primarne mreže ili čak potpunog nestanka električne
energije, sekundarni izvor napajanja je baterija-akumulator koja se preko diode
priključuje na ovu mrežu. Ova baterija se puni svo vrijeme kada je napon 220V
prisutan, tako da je uvijek puna i spremna za upotrebu.
6.5. Modelirani sistem u Proteus VSM-u
Nije samo dovoljno projektovati i modelirati neki sistem, nego je i neophodno
njegovo testiranje, tako u ovom slučaju cijeli sistem predstavili smo u Proteusu, gdje je
isti bio i testiran tj. izvršena je uspješna simulacija. Rad, brzina obrade podataka i način
komunikacije sa periferijama mikrokontrolera su određeni softverom koji mu je upisan,
a zove se firmver. Firmver, koji zahtjeva projekat je zahtjevao puno vremena za
osmišljavanje, testiranje i doradu.
61
Slika 6.3 Modelirani sistem u Proteus VSM-u
U toku izrade sistema je uočeno nekoliko propusta, u prvobitno definisanim rješenjima.
Ti propusti su rješavani u toku izrade firmvera. Prvi korak u planiranju je bio da se
odrede osnovni zahtjevi koje rad mikrokontrolera treba da ispuni. U osnovne zahtjeve je
spadalo nekoliko tačaka, od kojih su skeniranje tastature i prikaz na displeju
najpotrebnije. Kako je odlučeno da se za izradu projekta koristi samo jedan PIC16F887,
znači nije bilo podijele radnih zadataka na više kontrolnih jedinica, nema potrebe za
komunikaciju te prirode, već je potrebno sve organizovati na nivou jedne kontrolne
jedinice. Prioritet je, kao što je već rečeno, bilo obezbjediti funkcionisanje tastature i
displeja. Tastaturu je potrebno skenirati, a kako je hardverski rješena u formi matrice
3x4, proces skeniranja je dosta pojednostavljen, i ostavlja dosta vremena za druge
obrade. U procesu skeniranja je potrebno inicijalizovati jedan pin od D4, D5, D6 ili D7,
na logičku jedinicu, dok su pinovi D0, D1 i D2 određeni za skeniranje. Sve linije od D0
do D3 su preko otpornika vezane na masu. Kada se na nekoj liniji za skeniranje pojavi
logička jedinica, tada je lahko utvrditi koji je taster pritisnut. Cijelokupan proces je
relativno jednostavan i kratak, i u isto vreme je iskorišten cijeli port D. Kontrola
displeja je, međutim, zahtjevala više rada i testiranja. Provjera validnosti podataka, koje
je unio korisnik je veoma važan segment rada. Da bi se obezbjedila potpuna zaštita
podataka, u trenutku unosa PIN koda korisnika, na displeju se prikazuju zvijezdice
umjesto cifara, tako da broj nije čitljiv ni u jednom trenutku. Provjera se vrši na taj
način, da se stvarna lozinka koja je definisana programom ('11111') učita iz eeproma u
niz, te se poredi sa nizom u koji je spremljena unesena lozinka od strane korisnika. U
slučaju da korisnik ne unese adekvatan PIN kod, sistem odbacuje sve podatke primljene
od ovog korisnika, i traži da se PIN kod unese ponovo. Listig programskog koda
mikrokontrolera (Firmver) se nalazi u prilogu ovog rada.
62
7. ZAKLJUČAK
Ovim je završnim radom detaljno opisan način rada programskog paketa
Proteus. Taj je opis započeo simuliranjem osnovnih sklopova digitalne logike, čija je
simulacija poslužila kao uvod u složenije sisteme digitalne elektronike, odnosno
mikrokontrolere. Za prikaz rada složenijeg mikrokontrolerskog sistema, u Proteusu je
simuliran određen broj primjera s ciljem što boljeg upoznavanja Proteusa i mikroC-a. U
posljednjem poglavlju ovoga rada detaljno je opisan projekat elektronske brave za
zašitu objekata. Prethodna poglavlja su poslužila kao dobar uvod u projektni zadatak
sistema elektronske brave baziranog na PIC16F887 mikrokontroleru. Bitna
karakteristika elektronske brave je visoka bezbjednost objekta ili prostorije, koju
obezbjeđuje, a simuliranje je izvršeno u programskom okruženju Proteus. Proteus je
poslužio kao dobar alat za modeliranja i simluaciju raznih sistema baziranih na
mikrokontrolerima, čime je olakšan posao mnogima koji se žele baviti ovom naukom.
Prednost upotrebe Proteusa kao simulacijskog alata je velika, kao prvo moguće je
testirati u realnom okruženju sistem koji smo modelirali, zatim velika baza elektronskih
komponenti i raznovrsni izbor proizvođača, kako od onih osnovnih tako do
komplikovanih mikroprocesorskih elemenata. Nedostaci se prvenstveno ogledaju u
tome što programski paket proteus nije besplatan, ali postoji i studentska verzija sa
dosta smanjenom bazom elemenata i drugih mogućnosti. Također jedan od nedostataka
Proteusa je što zahtjeva dobru konfiguraciju računara na kojem se instalira.
Simulacijska okolina Proteus programskog paketa za razvoj mikrokontrolerskih sistema
pronalazi veoma značajnu ulogu u edukacijskom procesu, te je stoga svakako vrijedan
daljeg istraživačkog rada.
63
8. LITERATURA
[1] http://www.labcentar.com/products/vsm_overview.cfm , (10.09.2012).
[2] Lamza S.: Modeliranje mikroprocesorskih sustava i programske veze sa
sustavom udaljenog labaratorija u razvojnom okruženju Proteus, Tehnički
fakultet rijeka (Diplomski rad), 2010.
[3] http://dl.fit.ba//nastava/ars/meni.htm, (04.11.2012).
[4] http://en.wikipedia/wiki/Multiplexer, (04.11.2012).
[5] http://en.wikipedia/wiki/Demultiplexer, (04.11.2012).
[6] http://bs.wikipedia/wiki/Flip-flop, (04.11.2012).
[7] Tešić S.: Digitalna elektronika, Univerzitet u Beogradu (Naučna knjiga), 1976.
[8] http://www.mikroe.com/products/view/book-pic-microconttrolers-programming-
in-c, (06.11.2012).
[9] Zlatković N., Karalić M., Zobenica P.: Merenje temperature pomoću senzora
DS18B20, Univerzitet u Novom Sadu – FTN-EET (Ispitni rad), 2010.
[10] http://www.mikroe.com/chapters/view/17/chapet-4-examples/#c4v3,
(12.11.2012).
[11] Šimundić J.: RS-232 komunikacija, Sveučilište u zagrebu, Fakultet
elektrotehnike i računarstva (Seminarski rad), 2009.
[12] Nedeljković M.: Generator Pseudo-slučajne binarne sekvence (PRNG),
Elektronski fakultet u Nišu (Diplomski rad), 2008.
[13] Jakoljević N.: Elektronska brava sa visokim nivoem zaštite, Elektrotehnički
fakultet beograd (Diplomski rad), 2007.
[14] http://www.microchip.com/, (27.11.2012).
[15] Prvulović D., Trucić I.: Programiranje i iščitavanje sadržaja serijskog
EEPROM-a pomoću mikrokontrolera PIC16F877, Elektronski fakultet u Nišu
(Seminarski rad), 2006.
[16] Petrović P.: Impulsna i digitalna elektronika, Tehnički fakultet u Čačku
(Skripta), 2005.
PRILOZI
Dodatak A : Listing koda za sistem elektronske brave
//incijalizacija promjenjivih
unsigned short kp,i,pozicija,lozinka[5],prob_loz[5], stanje,meni,red,kolona;
unsigned char key_pressed,*text;
// definisanje porta D za keypad
char keypadPort at PORTD;
// incijalizacija LED displeja
sbit LCD_RS at RC0_bit;
sbit LCD_EN at RC2_bit;
sbit LCD_D4 at RC4_bit;
sbit LCD_D5 at RC5_bit;
sbit LCD_D6 at RC6_bit;
sbit LCD_D7 at RC7_bit;
sbit LCD_RS_Direction at TRISC0_bit;
sbit LCD_EN_Direction at TRISC2_bit;
sbit LCD_D4_Direction at TRISC4_bit;
sbit LCD_D5_Direction at TRISC5_bit;
sbit LCD_D6_Direction at TRISC6_bit;
sbit LCD_D7_Direction at TRISC7_bit;
//početne vrijedonsti promjenljivih
void initMain ( )
ANSEL = 0x00;
ANSELH = 0x00;
INTCON = 0x00;
ADRESH = 0x00;
ADRESL = 0x00;
ADCON1 = 0x0f;
ADCON0 = 0x00;
TRISD = 0xff;
TRISC = 0x00;
TRISB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTB = 0x00;
C1ON_bit = 0;
C2ON_bit = 0;
stanje = 0x00;
pozicija = 0x00;
meni = 0x00;
kp = 0x00;
//funkcija za definisanje pritisnutog tastera na tastaturi
char getKey_Pressed ( )
kp = 0;
while (!kp)
kp = Keypad_Key_Press();
Delay_ms(10);
meni=kp;
switch (kp)
case 1: kp = '1'; break;
case 2: kp = '2'; break;
case 3: kp = '3'; break;
case 5: kp = '4'; break;
case 6: kp = '5'; break;
case 7: kp = '6'; break;
case 9: kp = '7'; break;
case 10: kp = '8'; break;
case 11: kp = '9'; break;
case 13: kp = '*'; break;
case 14: kp = '0'; break;
case 15: kp = '#'; break;
default: kp = 0;
return kp;
// funkcija za prikaz menija na displeju
void prikaziMeni (unsigned short m)
if(m == 0)
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,6,"MENI");
Lcd_Out(2,1,"1 OTVORI");
Lcd_Out(3,-3,"2 ZATVORI");
Lcd_Out(4,-3,"3 NOVA LOZINKA");
Delay_ms(500);
// funkcija za unos lozinke
void unesiLozinku (unsigned short p,char *text,unsigned red,unsigned kolona)
Lcd_Out(red, kolona,text);
Delay_ms(500);
for(i=0;i<6;i++)
key_pressed = getKey_Pressed();
Sound_Play(880,50);
if(i==5)
if(key_pressed == '#')
break;
else
i--;
else if( i>0 && key_pressed == '*' && i<5)
i--;
Lcd_Chr(red,i+p,' ');
i--;
else if(key_pressed != '*' && i<5)
prob_loz[i]=key_pressed - 48;
Lcd_Chr(red,i+p,'*');
if(i==4)
Delay_ms(500);
Lcd_Out(red+1,kolona,"POTVRDITE SA #");
Delay_ms(500);
// funkcija za promjenu lozinke
void novaLozinka ( )
for(i=0;i<5;i++)
EEprom_write(i,(prob_loz[i]));
Delay_ms(50);
// validacija lozinke
unsigned short provjeriLozinku ( )
for(i=0;i<5;i++)
if(lozinka[i] != prob_loz[i])
return 0;
return 1;
// spremanje početne lozinke u eeprom
void spremiUeeprom ( )
for(i=0;i<5;i++)
EEprom_write(i,1);
Delay_ms(50);
// učitavanje lozinke iz eeproma
void ucitajLozinku ( )
spremiUeeprom();
for(i=0;i<5;i++)
lozinka[i]=EEprom_read(i);
Delay_ms(50);
// učitavanje nove lozinke iz eeproma
//prilikom promjene stare lozinke
void ucitajNovuLozinku ( )
for(i=0;i<5;i++)
lozinka[i] = EEprom_read(i);
Delay_ms(50);
// zvuk otvaranja
void melodijaOtvaranja ( )
Sound_Play(500, 200);
Delay_ms(100);
Sound_Play(500, 200);
Delay_ms(100);
Sound_Play(500, 200);
Delay_ms(100);
//zvuk zatvarnja
void melodijaZatvaranja ( )
Sound_Play(500, 500);
Delay_ms(100);
// funkcija za otvaranje
void otvoreno ( )
PORTB = 0x05;
Delay_ms(3000);
PORTB = 0x00;
//funkcija za zatvaranje
void zatvoreno ( )
PORTB = 0x0A;
Delay_ms(3000);
PORTB = 0x00;
// glavna nit ili main funkcija
void main ( )
//poziv funkcija da se incijalizuju
initMain();
Keypad_Init();
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Cmd(_LCD_RETURN_HOME);
Sound_Init(&PORTE,0);
Delay_ms(500);
ucitajLozinku();
Delay_ms(500);
// beskonačna do-while petlja
do
prikaziMeni(meni);
key_pressed = getKey_Pressed(); //odabir opcija sa menija
switch(meni)
case 1: // opcija za otaranje
if(stanje == 0)
pozicija = 11;
text = "LOZINKA :";
Lcd_Cmd(_LCD_CLEAR);
unesiLozinku(pozicija,text,1,1);
Delay_ms(1000);
if(provjeriLozinku())
stanje = 1;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(2, 5,"OTVORENO");
melodijaOtvaranja();
otvoreno();
Delay_ms(1000);
else
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(2, 5,"NETACNA");
Lcd_Out(3, 1,"LOZINKA");
Delay_ms(1000);
break;
case 2: //opcija za zatvaranje
if(stanje == 1)
stanje=0;
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(2, 5,"ZATVORENO");
melodijaZatvaranja();
zatvoreno();
Delay_ms(1000);
break;
case 3: //promjena lozinke
pozicija = 11;
Lcd_Cmd(_LCD_CLEAR);
text = "LOZINKA :";
unesiLozinku(pozicija,text,1,1);
if(provjeriLozinku())
text = "NOVA L :";
pozicija = 7;
unesiLozinku(pozicija,text,3,-3);
novaLozinka();
Delay_ms(500);
ucitajNovuLozinku();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(2,4,"SPREMLJENO");
Delay_ms(500);
break;
default: // u slučaju da nije odabrana nijedna opcija
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(2,5,"POGRESAN");
Lcd_Out(3,2,"ODABIR");
Delay_ms(1000);
Delay_ms(500);
meni = 0x00;
while(1);
Dodatak B : data sheets