PRIMER KONTROLE 8 LED DIODA
Mikrokontroler PIC16F84
izveden u standardnom DIP pakovanju ima raspored pinova pikazan na donjoj
slici.
Značenje
pojedinačnih pinova je dato u sledećoj tabeli:
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 primeru 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 dat 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 generiše 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.
http://vojo.milanovic.org
© Copyright, 2004 Milanović Vojo
All right reserved