MikroC potreban kod
Moderators: pedja089, stojke369, [eDo], trax
MikroC potreban kod
Pozdrav raja !
Eh ovako, znaci poceo sam pomalo raditi sa ovim 7-segmentnim displejima, zanimljivo mi to nekako a i moze se napraviti dosta korisnih stvari.Eh sad, zadao sam "sebi" zadatak da multipleksiram 3 7-seg. disp i da mi ispisuju 0-999.Ali i ne ide bas.
Inace radim u MikroC-u i Proteusu.
Koristim PIC16F887.
Ovako sam to zamislio u Proteusu http://upload.slike.com/slike/UK9YO.jpg
Ako ima neko iskusniji u MikroC-u da malo objasni ili da preporuci neku literaturu.
Hvala unaprijed !
Eh ovako, znaci poceo sam pomalo raditi sa ovim 7-segmentnim displejima, zanimljivo mi to nekako a i moze se napraviti dosta korisnih stvari.Eh sad, zadao sam "sebi" zadatak da multipleksiram 3 7-seg. disp i da mi ispisuju 0-999.Ali i ne ide bas.
Inace radim u MikroC-u i Proteusu.
Koristim PIC16F887.
Ovako sam to zamislio u Proteusu http://upload.slike.com/slike/UK9YO.jpg
Ako ima neko iskusniji u MikroC-u da malo objasni ili da preporuci neku literaturu.
Hvala unaprijed !
Re: MikroC potreban kod
mislim da u samom (mikroC)u folderu examples imas tih primera,pogledaj sajt mikroelektronike ima i tamo.
Re: MikroC potreban kod
Sema je OK,daj kod,ili objasni sta te muci...
Re: MikroC potreban kod
Ma muci me to sto ne znam, kako bih kod poceo.Nesto sam razmisljao da bih trebao staviti tri petlje da su zavisne jedna od druge, znaci kad se prva izvrsi da se druga uveca za jedan pa tako i treca.Hocu reci kad zavrsi od 0-9, da se onda na mjestu desetica pojavi jedan, pa kad opet 0-9 zavrsi da se na mjestu desetica pojavi 2 itd. Znaci treba mi od 1 do 999.
Al sad ne znam kako bih te petlje povezao da su zavisne jedna od druge.Naravno ovako sam ja mislio da bi moglo funkcionisati, al nisam siguran da li je to izvedivo.
Tu mi treba pomoc.
Al sad ne znam kako bih te petlje povezao da su zavisne jedna od druge.Naravno ovako sam ja mislio da bi moglo funkcionisati, al nisam siguran da li je to izvedivo.
Tu mi treba pomoc.
Re: MikroC potreban kod
To sto si ti zamislio nece moci tako.
Multipleks znaci da brzo palis i gasis sva tri displeja,tako da oku deluje da su svi stalno upaljeni.
To se radi na sledeci nacin:
Prvo na port D stavis vrednost koja odgovara prvoj cifri (recimo 0b0011000).
Onda na RA0 postavis log1,odnosno ukljucis tranzistor Q3 koji odgovara prvoj cifri.
Taj tranzistor radi neko vreme koje mora da bude dovoljno malo (recimo 10ms).
Onda ugasis taj tranzistor(dovedes log0 na RA0)
Zatim postavljas vrednost druge cifre na port D.
Onda palis Q2 (dovodis log1 na RA1),i njega pustis da radi 10ms,pa ga ugasis.
Postavis vrednost trece cifre na portD,palis Q1,radi 10ms,pa ga gasis.
Zatim sve ovo ponavljas,t.j. vracas se na korak 1
Jedna jako bitna stvar,multipleks se po pravilu radi sa tajmerom,NIKAKO se delay_ms! Namestis tajmer da broji 10ms,podesis da ti tajmer izazove interapt,u interaptu ugasis prethodni tranzistor,postavis vrednost na port D,i upalis sledeci tranzistor.
Kada izadjes iz interapta racunas koja je sledeca cifra koja treba da se prikaze ili radis bilo sta drugo...
Multipleks znaci da brzo palis i gasis sva tri displeja,tako da oku deluje da su svi stalno upaljeni.
To se radi na sledeci nacin:
Prvo na port D stavis vrednost koja odgovara prvoj cifri (recimo 0b0011000).
Onda na RA0 postavis log1,odnosno ukljucis tranzistor Q3 koji odgovara prvoj cifri.
Taj tranzistor radi neko vreme koje mora da bude dovoljno malo (recimo 10ms).
Onda ugasis taj tranzistor(dovedes log0 na RA0)
Zatim postavljas vrednost druge cifre na port D.
Onda palis Q2 (dovodis log1 na RA1),i njega pustis da radi 10ms,pa ga ugasis.
Postavis vrednost trece cifre na portD,palis Q1,radi 10ms,pa ga gasis.
Zatim sve ovo ponavljas,t.j. vracas se na korak 1
Jedna jako bitna stvar,multipleks se po pravilu radi sa tajmerom,NIKAKO se delay_ms! Namestis tajmer da broji 10ms,podesis da ti tajmer izazove interapt,u interaptu ugasis prethodni tranzistor,postavis vrednost na port D,i upalis sledeci tranzistor.
Kada izadjes iz interapta racunas koja je sledeca cifra koja treba da se prikaze ili radis bilo sta drugo...
Re: MikroC potreban kod
Hvala na objasnjenju, znaci ipak ovo sto sam ja zamislio nije izvedivo.Sad mi je malo jasnije.
Kako bi to izgledalo u kodu, da malo pohvatam strukturu tog multipleksiranja?
Kako bi to izgledalo u kodu, da malo pohvatam strukturu tog multipleksiranja?
Re: MikroC potreban kod
Code: Select all
unsigned short y[]={0,0,0};
unsigned short x[]={95,65,47,109,113,124,126,73,127,125};
unsigned short z[]={1,2,4};
unsigned short n=0;
void interrupt(){
if(TMR0IF_bit){
PORTD=x[y[n]];
PORTA=z[n];
n++;
if(n==2) n=0;
TMR0IF_bit=0;
}
}
Ovi brojevi pod x su takvi jer sam ja tako vezivao displeje,to moras da promenis prema tvom nacinu vezivanja.
y[0],y[1] i y[2] su cifre tog tvog broja koje racunas negde u glavnom programu.
Re: MikroC potreban kod
Prije svega hvala na trudu, sto si objasnio neke stvari, to se cijeni.
Ovu strukturu sam nesto i shvatio, al posto sam tek poceo raditi sa ovim, znaci nemam previse iskustva, nekako sam se izgubio u ovim tvojim x,y,z.Ako mozes objasniti, ili jos bolje staviti cijeli program pa da malo analiziram to multipleksiranje.
Vidim da nisam bio ni blizu sa onim svojim nacinom.Znaci nista od petlji.Bas me zanima kako bi to na kraju izgledalo.
Hvala !
Ovu strukturu sam nesto i shvatio, al posto sam tek poceo raditi sa ovim, znaci nemam previse iskustva, nekako sam se izgubio u ovim tvojim x,y,z.Ako mozes objasniti, ili jos bolje staviti cijeli program pa da malo analiziram to multipleksiranje.
Vidim da nisam bio ni blizu sa onim svojim nacinom.Znaci nista od petlji.Bas me zanima kako bi to na kraju izgledalo.
Hvala !
Re: MikroC potreban kod
Code: Select all
unsigned short y[]={0,0,0};
unsigned short x[]={95,65,47,109,113,124,126,73,127,125};
unsigned short z[]={1,2,4};
unsigned short n=0;
unsigned int broj=752;//ovde stavis neki broj koji hoces da ti prikaze
void interrupt(){
if(TMR0IF_bit){
PORTD=x[y[n]];
PORTA=z[n];
n++;
if(n==2) n=0;
TMR0IF_bit=0;
}
}
void main() {
TRISA=0;
TRISD=0;
CMCON=7;
ADCON1=142;
OPTION_REG=4;//ova podesavanja su za 16F877A,za tvoj pogledaj u datasheet
INTCON=0;
while(1){
y[0]=broj/100;
y[1]=(broj-y[0]*100)/10;
y[2]=broj-y[0]*100-y[1]*10;
//ovde radis nesto drugo,npr menjas broj koji prikazujes,uvecavas ga,smanjujes...
}
}
Re: MikroC potreban kod
Znaci ovo je sve sto mi treba da bi to funkcioniralo sto se tice multipleksa?
Uglavnom hvala na pomoci !
Uglavnom hvala na pomoci !