You are on page 1of 5

UNIVERZITET U BIHAĆU

TEHNIČKI FAKULTET BIHAĆ PREDMET: AKADEMSKA GODINA:


ELEKTROTEHNIKA / Digitalni sistemi 2020./2021.
RAČUNARSTVO I INFORMATIKA

ZADAĆA BROJ 3

PREDMETNI PROFESOR: IME I PREZIME STUDENTA:


PREGLEDANO:
Van.prof.dr. EDIN MUJČIĆ, dipl. ing. el. HAFURIĆ HUSNIJA

PREDMETNI ASISTENT: BROJ INDEKSA:


______________________
UNA DRAKULIĆ, ma. el. 984
ZADATAK

Koristeći MPLAB X i kompajler XC8 napisati program koji će okretati servo motor te paliti
naizmjenicno diode sve dok se sklopka ne odspoji .Za programiranje koristiti mikrokontroler
PIC16F877A, a za simulaciju rada koristiti programski paket Proteus.

RJEŠENJE:

Zadatak se sastoji iz dva dijela: modela mikrokontrolera rađenog u programu Proteus te samog koda koji
je rađen u softverskom paketu MPLAB X.Prvi dio koda se radi u C programskom jeziku,te je kod
prikazan ispod.Na početku je potrebno postaviti konfiguracijske bite koji su postavljeni prije samog
kodiranja.Prije samog kodiranja potrebno je proglasiti pinove izlaznim.U ovom slučaju smo koristili
pinove vrste B.Nakon potrebnih postavljanja se unutar main funkcije programira glavni kod programa.Za
izvrsavanje programa potrebne su dodatne funkcije koje su navedene iznad main funkcije.

#include <xc.h>
#define _XTAL_FREQ 8000000
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = ON // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = ON // Low-Voltage (Single-Supply) In-Circuit Serial
Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming
enabled)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data
EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write
protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code
protection off)

void servoRotate0(){
unsigned int i;
for(int i=0;i<50;i++){
RB0=1;
__delay_us(800);
RB0=0;
__delay_us(19200);
}
}
void servoRotate180(){
unsigned int i;
for(int i=0;i<50;i++){
RB0=1;
__delay_us(2200);
RB0=0;
__delay_us(17800);
}
}
void main(void) {
TRISB=0x00;
while(1){
if(RB3==1){
RB1=0;RB2=1;
servoRotate0();
1
__delay_ms(500);
RB1=1;RB2=0;
servoRotate180();
__delay_ms(500);
}
else
{RB0=0;RB1=0;RB2=0;}
}
return;
}

Drugi dio zadatka se odnosi na kreiranje šeme povezivanja unutar programa Proteus. Sama šema se
sastoji od mikrokontrolera na koji se povezuju potrebne komponente. U ovom slucaju koristeni su servo
motor, dvije diode, dva otpora te push button.Nakon kreiranja šeme njen konačni izgled je prikazan ispod.

Slika 3.Skica šeme rađene u Proteus-u

2
Nakon kreiranja šeme potrebno je prethodno urađen kod „ubaciti“ u mikrokontroler.To se radi tako što
duplim klikom na pločicu mikrokontrolera otvore se postavke mikrokontrolera. Nakon toga se može
pokrenuti simulacija rada te provjera tačnosti koda i šeme.

Slika 4. Prikaz simulacije rada programa

3
ZAKLJUČAK

U ovom zadatku je bilo potrebno prikazati osnovno znanje rada sa mikrokontrolerom. Nakon postavke
zadatka te osmišljavanja sklopa u Proteusu bilo je potrebno isprogramirati kod koji će prikazati
funkcionalnosti sistema. Pokretanjem programa izvrsava se program te se diode naizmjenicno pale i
gase.Podizanjem switcha program se zaustavlja.Nakon kodiranja kod je sačuvan. Nakon toga je podešen
da radi u kreiranoj šemi. Nakon toga je kod unešen u sistem te je izvršena simulacija rada sistema unutar
programa Proteus, te je rezultat prikazan kroz snimke ekrana u pojedinim trenucima simulacije sistema.

You might also like