Mikrokontroler PIC16F84 izveden u standardnom DIP pakovanju ima raspored pinova pikazan na donjoj slici.
Mikrokontroler PIC16F84 izveden u standardnom DIP pakovanju ima raspored pinova pikazan na donjoj slici.
Značenje pojedinačnih pinova je dano u sljedećoj tablici:
Pin | Oznaka | Značenje |
1 | RA2 | Drugi pin PORTA A i nema drugih značenja |
2 | RA3 | Trećin pin PORTA A i nema drugih značenja |
3 | RA4 | Četvrti pin PORTA A sa dodatkom tajmerske funkcije |
4 | MCLR | Reset ulaz i sa naponom Vpp omogućuje programiranje mikrokontrolera |
5 | Vss | Pin prema masi |
6 | RB0 | Nulti pin PORTA B sa mogućnošću interapt ulaza |
7 | RB1 | Prvi pin PORTA B i nema drugih značenja |
8 | RB2 | Drugi pin PORTA B i nema drugih značenja |
9 | RB3 | Treći pin PORTA B i nema drugih značenja |
10 | RB4 | Četvrti pin PORTA B i nema drugih značenja |
11 | RB5 | Peti pin PORTA B i nema drugih značenja |
12 | RB6 | Šesti pin PORTA B sa mogućnošću "Clock" linije u programu |
13 | RB7 | Sedmi pin PORTA B sa mogućnošu "Data" linje u programu |
14 | Vdd | Napon napajanja mikrokontrolera |
15 | OSC2 | Pin za priključak kristala oscilatora ili rezonatora |
16 | OSC1 | Pin za priključak kristala oscilatora ili rezonatora |
17 | RA0 | Nulti pin PORTA A i nema drugih značenja |
18 | RA1 | Prvi pin PORTA A i nema drugih značenja |
Njegove su glavne osobine:
1. To je 8-bitni mikrokontroler sa 14-bitnim instrucijskim skupom
2. Maksimalna dozvoljena struja pina je 20 mA
3. Sadrži 1024x14 bita programske FLASH memorije
4. Sadrži 68x8 radne RAM memorije
5. Sadrži 64x8 EEPROM memorije
6. Ima ugrađen 8-bitni tajmer/brojač sa 8-bitnim preskalerom
7. Troši manje od 2 mA na 5V i 4Mhz
8. Može da radi na maksimalno 10 Mhz
Programska ili FLASH memorija koristi se za upis napisanog programa u mikrokontroler, dok se RAM memorije se koristi u programima za privremeno smeštanje rezultata ili podataka. Jači mikrokontroleri poseduju i EEPROM memoriju u koju se upisuju podaci prilikom njegovog programiranja što znači da će biti trajno zapamćeni kao i program. Najčešće su to neke konstante koje koristi program. Portovi mikrokontrolera PORT A i PORT B su njegova veza sa vanjskim svetom, a iz prikazanog rasporeda pinova vidi se da PORT A ima 5 a PORT B osam pinova. Tajmer je 8-bitni i radi nezavisno od programa. On na svaki četvrti takt oscilatora uvećava svoju vrednost za 1 sve do 255 kada ponovo počinje o nule. Na ovaj način kada je u programima potrebna vremenska kontrola njegova primena je značajna. Kao oscilator najčešće koristi kvarc od 4 Mhz ili keramički rezonator iste frekvencije. Resetovanje mikrokontrolera vrši se kratkim dovođenje logičke nule na MCLR pin. Zavisno od primene pinova porta oni mogu biti određeni ili kao ulazni ili izlazni. To se vrši upotrebom TRIS registra. TRISA registra registar odnosi se na PORT A a TRIS B registar na PORT B. Ako je u datim registrima odgovarajući bit postavljen na 1 onda je taj pin ulazni a ako je postavljena 0 onda je on izlazni. Na ovo treba obratiti posebnu pažnju što je često uzrok da naš program ne radi ispravno. Četiri pina PORTA B, RB7ČRB$ mogu izazvati programski prekid(interapt) ako se na njima promeni stanje sa logičke jedinice na logičku nulu i obrnuto. Pri tome ovi pinovi moraju biti definisani kao ulazni. Peti pin PORTA A ima dvostruku funkciju. Na njemu se nalazi i vanjski ulaz za brojač TMR0 što se određuje postavljanjem bita T0CS. Na ovaj način tajmer može da uvećava svoje stanje ili preko internog oscilatora ili preko impulsa dovedenih na pin RA4/T0CLK.
Na donjoj slici data je šema sa PIC16F84P mikrokontrolerom koji na izlaznim portovima ima priključeno 8 led dioda.
Na izlaze PORTA B preko otpornika od 220W spojene su led diode. U ovom primjeru upotrebljen je kvrac od 4 Mhz kada se koriste kondezatori od 15pF, a može se koristiti i keramički rezonator. Neophodne komponente za njegovu izradu su sledeće:
Rb. | Komponenta | Količina |
1. | U1 - PIC16F84/04-P | 1 kom |
2. | U2 - 7805 | 1 kom |
3. | DIL-18 podnožje (profesional) | 1 kom |
4. | Led D1-D8 fi 5mm crvene | 8 kom |
5. | C1, C2 - 15pF (keramički kondenzator) | 2 kom |
6. | C3 - 100nF (keramički kondenzator) | 1 kom |
7. | C4, C5 - 1mF (elektrolitski konenzator 25 V) | 2 kom |
8. | R1 - 100W(1/4 W) | 1 kom |
9. | R2 - 4k7(1/4 W) | 1 kom |
10. | R4 - R11 - 220W(1/4 W) | 8 kom |
11. | Q1 - kristal 4 Mhz | 1 kom |
12. | Konektor za povezivanje 9V baterija | 1 kom |
13. | Vitroplast jednostrani(100 x 160 mm) | 1 kom |
14. | Dvopolna redna stezaljka za štampu(plava) | 1 kom |
15. | S1 - mikro taster za PCB montažu | 1 kom |
Izgled PCB pločice dat je na donjoj slici:
Način montaže elemenata dan je na donjoj slici:
Primer programa napisan u PICBasicu za njegovu kontrolu je sledeći(Diode):
'**************************************************************** '* Naziv : DIODE.BAS * '* Autor : Milanovic V. * '* Napomena : Prost primer programa * '* Datum : 21.04.2004 * '* Verzija : 1.0 * '* Napomena : Program generise razlicite sekvence na LED * '* : diodama * '**************************************************************** i var byte j var word k var byte TRISA = $FF ' Svi pinovi porta A su ulazni TRISB = $00 ' Svi pinovi porta B su izlazni PORTB = $00 ' Ugasi sve LED diode na pocetku programa pause 1500 Pocetak: For i = 1 to 4 '-----------Pali jednu po jednu diodu i gasi od pocetka--------- if i = 1 Then j = 1000 ' Pauza 1 sekund if i = 2 Then j = 500 ' Pauza 0.5 sekunda if i = 3 Then j = 250 ' Pauza 0.25 sekunda if i = 4 Then j = 100 ' Pauza 0.25 sekunda High PortB.0 ' Upali Led 0 pause j High PortB.1 ' Upali Led 1 pause j High PortB.2 ' Upali Led 2 pause j High PortB.3 ' Upali Led 3 pause j High PortB.4 ' Upali Led 4 pause j High PortB.5 ' Upali Led 5 pause j High PortB.6 ' Upali Led 6 pause j High PortB.7 ' Upali Led 7 pause j Low PortB.0 ' Ugasi Led 0 pause j Low PortB.1 ' Ugasi Led 1 pause j Low PortB.2 ' Ugasi Led 2 pause j Low PortB.3 ' Ugasi Led 3 pause j Low PortB.4 ' Ugasi Led 4 pause j Low PortB.5 ' Ugasi Led 5 pause j Low PortB.6 ' Ugasi Led 6 pause j Low PortB.7 ' Ugasi Led 7 Pause 1000 ' Pauza 1 sekunda '-----------Pali jednu po jednu diodu i gasi od kraja--------- High PortB.0 ' Upali Led 0 pause j High PortB.1 ' Upali Led 1 pause j High PortB.2 ' Upali Led 2 pause j High PortB.3 ' Upali Led 3 pause j High PortB.4 ' Upali Led 4 pause j High PortB.5 ' Upali Led 5 pause j High PortB.6 ' Upali Led 6 pause j High PortB.7 ' Upali Led 7 pause j Low PortB.7 ' Ugasi Led 7 pause j Low PortB.6 ' Ugasi Led 6 pause j Low PortB.5 ' Ugasi Led 5 pause j Low PortB.4 ' Ugasi Led 4 pause j Low PortB.3 ' Ugasi Led 3 pause j Low PortB.2 ' Ugasi Led 2 pause j Low PortB.1 ' Ugasi Led 1 pause j Low PortB.0 ' Ugasi Led 0 Pause 1000 ' Pauza 1 sekunda '-----------Prolazi upaljenja LED dioda sa desna u levo-------- High PortB.0 ' Upali Led 0 pause j High PortB.1 ' Upali Led 1 Low PortB.0 ' Ugasi Led 0 pause j High PortB.2 ' Upali Led 2 Low PortB.1 ' Ugasi Led 1 pause j High PortB.3 ' Upali Led 3 Low PortB.2 ' Ugasi Led 2 pause j High PortB.4 ' Upali Led 4 Low PortB.3 ' Ugasi Led 3 pause j High PortB.5 ' Upali Led 5 Low PortB.4 ' Ugasi Led 4 pause j High PortB.6 ' Upali Led 6 Low PortB.5 ' Ugasi Led 5 pause j High PortB.7 ' Upali Led 7 Low PortB.6 ' Ugasi Led 0 pause j Low PortB.7 ' Ugasi Led 7 pause j Pause 1000 ' Pauza 1 sekunda '-----------Prolazi upaljenja LED dioda sa leva u desno-------- High PortB.7 ' Upali Led 7 pause j High PortB.6 ' Upali Led 6 Low PortB.7 ' Ugasi Led 7 pause j High PortB.5 ' Upali Led 5 Low PortB.6 ' Ugasi Led 6 pause j High PortB.4 ' Upali Led 4 Low PortB.5 ' Ugasi Led 5 pause j High PortB.3 ' Upali Led 3 Low PortB.4 ' Ugasi Led 4 pause j High PortB.2 ' Upali Led 2 Low PortB.3 ' Ugasi Led 3 pause j High PortB.1 ' Upali Led 1 Low PortB.2 ' Ugasi Led 2 pause j High PortB.0 ' Upali Led 0 Low PortB.1 ' Ugasi Led 1 pause j Low PortB.0 ' Ugasi Led 0 pause j Pause 1000 ' Pauza 1 sekunda '-----Prolazi neupaljena LED dioda sa desna u levo------------- PORTB = $FF ' Upali sve LED diode pause j Low PortB.0 ' Ugasi Led 0 pause j High PortB.0 ' Upali Led 1 Low PortB.1 ' Ugasi Led 0 pause j High PortB.1 ' Upali Led 2 Low PortB.2 ' Ugasi Led 1 pause j High PortB.2 ' Upali Led 3 Low PortB.3 ' Ugasi Led 2 pause j High PortB.3 ' Upali Led 4 Low PortB.4 ' Ugasi Led 3 pause j High PortB.4 ' Upali Led 5 Low PortB.5 ' Ugasi Led 4 pause j High PortB.5 ' Upali Led 6 Low PortB.6 ' Ugasi Led 5 pause j High PortB.6 ' Upali Led 7 Low PortB.7 ' Ugasi Led 6 pause j High PortB.7 ' Upali Led 7 Pause 1000 ' Pauza 1 sekunda '-----Prolazi neupaljena LED dioda sa leva u desno------------- PORTB = $FF ' Upali sve LED diode pause j Low PortB.7 ' Ugasi Led 0 pause j low PortB.6 ' Ugasi Led 6 High PortB.7 ' Upali Led 7 pause j Low PortB.5 ' Ugasi Led 5 High PortB.6 ' Upali Led 6 pause j Low PortB.4 ' Ugasi Led 4 High PortB.5 ' Ugasi Led 5 pause j Low PortB.3 ' Ugasi Led 3 High PortB.4 ' Upali Led 4 pause j High PortB.3 ' Upali Led 3 Low PortB.2 ' Ugasi Led 2 pause j High PortB.2 ' Upali Led 2 Low PortB.1 ' Ugasi Led 1 pause j High PortB.1 ' Upali Led 1 Low PortB.0 ' Ugasi Led 0 pause j High PortB.0 ' Ugasi Led 0 Pause 1000 ' Pauza 1 sekunda PORTB = $00 ' Ugasi sve LED diode pause 300 '-----Pali sa krajeva LED pa ih gasi------------------ High PortB.0 ' Upali Led 0 High PortB.7 ' Upali Led 7 pause j High PortB.1 ' Upali Led 1 High PortB.6 ' Upali Led 6 pause j High PortB.2 ' Upali Led 2 High PortB.5 ' Upali Led 5 pause j High PortB.3 ' Upali Led 3 High PortB.4 ' Upali Led 4 pause j Low PortB.3 ' Ugasi Led 3 Low PortB.4 ' Ugasi Led 4 pause j Low PortB.5 ' Ugasi Led 5 Low PortB.2 ' Ugasi Led 2 pause j Low PortB.6 ' Ugasi Led 6 Low PortB.1 ' Ugasi Led 1 pause j Low PortB.7 ' Ugasi Led 7 Low PortB.0 ' Ugasi Led 0 pause j pause 1000 ' Dva puta blinka na kraju ciklusa for k = 1 to 2 PORTB = $FF ' Upali sve LED diode pause 300 PORTB = $00 ' Ugasi sve LED diode pause 300 next k pause 1000 Next i pause 1000 '-----------Tri puta blinkanje dioda-------------------- for i = 1 to 3 PORTB = $FF ' Upali sve LED diode pause 200 PORTB = $00 ' Ugasi sve LED diode pause 200 next i pause 1000 ' Pauza 1 sekunda Goto Pocetak ' Vraca se na pocetak programa End ' Kraj program |
Napisan je program koji generira različite sekvence na led diodama a to su:
· Pali jednu po jednu led diodu od početka i gasi od početka
· Pali jednu po jednu led diodu od početka i gasi od kraja
· Prolazi upaljena led dioda sa desna u levo
· Prolazi upaljena led dioda sa leva u desno
· Prolazi neupaljena led dioda sa desna u levo
· Prolazi neupaljena led dioda sa leva u desno
· Pali led diode sa krajeva pa ih gasi
Navedene skekvence se u programu smenjuju u 4 ciklusa. Za svaki ciklus definisano je vreme zadrške između sekvenci i ono je:
· U prvom ciklusu 1000 ms (1. sekunda)
· U drugom ciklusu 500 ms (0.5 sekundi)
· U trećem ciklusu 250 ms (0.25 sekundi)
· U četvrtom ciklusu 150 ms
Na završetku svakog ciklusa izvede se dvostruko blinkanje led dioda. Nako završetka sva četiri cilkusa izvede se trostruko blinkanje led dioda i program počinje od početka.
U slučaju ako koristite razvojni sistem Mikroelektronike nije vam neophodan pločica jer stanja dioda možete pratiti na samom sistemu.
Nema komentara:
Objavi komentar