83
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.

Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

Embed Size (px)

DESCRIPTION

diplomski rad

Citation preview

Page 1: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 2: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 3: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 4: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 5: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 6: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 7: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 8: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 9: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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].

Page 10: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 11: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 12: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 13: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 14: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 15: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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].

Page 16: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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].

Page 17: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 18: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 19: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 20: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 21: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 22: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 23: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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].

Page 24: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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-

Page 25: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 26: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 27: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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 .

Page 28: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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].

Page 29: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 30: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 31: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 32: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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].

Page 33: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 34: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 35: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 36: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 37: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 38: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 39: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 40: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 41: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 42: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 43: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 44: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 45: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 46: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 47: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 48: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 49: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 50: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 51: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 52: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 53: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 54: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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).

Page 55: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 56: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 57: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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,

Page 58: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 59: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 60: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

53

Slika 4.21 Programski kod u mikroC-u za primjer 8

Page 61: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 62: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

55

Slika 4.23 Programski kod u mikroC-u za primjer 9

Page 63: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 64: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 65: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 66: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 67: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 68: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 69: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 70: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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.

Page 71: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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;

Page 72: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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;

Page 73: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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");

Page 74: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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--;

Page 75: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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++)

Page 76: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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);

Page 77: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

// 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);

Page 78: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

// 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();

Page 79: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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

Page 80: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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);

Page 81: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

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);

Page 82: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a

Dodatak B : data sheets

Page 83: Modeliranje mikroprocesorskih sistema u razvojnom okruzenju proteus-a