Pomoc oko led displeja
Moderators: pedja089, stojke369, [eDo], trax
Pomoc oko led displeja
Pozdrav.Hteo bih da pitam kako izmeniti program koji je pisan za 7seg displej sa zajednickom anodom da radi na 7seg displeju sa zajednickom katodom.Sema je 16f84A i kolo HCF 4511 RB0 na A , RB1 na B , RB2 na C RB3 na D Imam NPN tranzistore.U proteusu radi sa zajednickom anodom sa IC7447 jer su emitori tranzistora na anodama a kteo bih da napravim sa displejem sa zajednickom katodom gde bi kolektori bili na katodi a emitori na masi medjutim nikako da proradi.Nije mi probrem multipleks tranzistora ali nikako da dobijem cifru na displeju za zajednickom katorom,samo nesto bezveze ispisuje.Evo kako sam nabrzinu sastavio sa zajednickom anodom pa ako moze pomoc oko izmene da radi sa zajednickom katodom.Netreba mi za frekvenciju,to sam stavio samo onako da moze da se vidi da li radi.
TRISB=0
TRISA=255
BROJ VAR WORD
BROJ0 VAR BYTE
BROJ1 VAR BYTE
BROJ2 VAR BYTE
BROJ3 VAR BYTE
I VAR BYTE
POCETAK:
portb=%11110000
COUNT PORTA.0,1000,BROJ ' broji impulse na pinu RA0, u periodu od 1S i rezultat smesta u "BROJ"
BROJ0 = BROJ DIG 3 'izdvajamo hiljde
BROJ1 = BROJ DIG 2' izdvajamo stotine
BROJ2 = BROJ DIG 1'desetice
BROJ3 = BROJ DIG 0'jedinice
FOR I = 1 TO 100 ' u ovom slucaju stavili smo da se ispis na displeju ponovi 100 puta, sto znaci da ce vreme prikazivanja broja na displeju biti oko 2 sekunde
PORTB=BROJ dig 0
HIGH PORTB.7
PAUSE 1
LOW PORTB.7
PORTB=BROJ dig 1
HIGH PORTB.6
PAUSE 1
LOW PORTB.6
PORTB=BROJ dig 2
HIGH PORTB.5
PAUSE 1
LOW PORTB.5
PORTB=BROJ dig 3
HIGH PORTB.4
PAUSE 1
LOW PORTB.4
NEXT I
GOTO POCETAK
TRISB=0
TRISA=255
BROJ VAR WORD
BROJ0 VAR BYTE
BROJ1 VAR BYTE
BROJ2 VAR BYTE
BROJ3 VAR BYTE
I VAR BYTE
POCETAK:
portb=%11110000
COUNT PORTA.0,1000,BROJ ' broji impulse na pinu RA0, u periodu od 1S i rezultat smesta u "BROJ"
BROJ0 = BROJ DIG 3 'izdvajamo hiljde
BROJ1 = BROJ DIG 2' izdvajamo stotine
BROJ2 = BROJ DIG 1'desetice
BROJ3 = BROJ DIG 0'jedinice
FOR I = 1 TO 100 ' u ovom slucaju stavili smo da se ispis na displeju ponovi 100 puta, sto znaci da ce vreme prikazivanja broja na displeju biti oko 2 sekunde
PORTB=BROJ dig 0
HIGH PORTB.7
PAUSE 1
LOW PORTB.7
PORTB=BROJ dig 1
HIGH PORTB.6
PAUSE 1
LOW PORTB.6
PORTB=BROJ dig 2
HIGH PORTB.5
PAUSE 1
LOW PORTB.5
PORTB=BROJ dig 3
HIGH PORTB.4
PAUSE 1
LOW PORTB.4
NEXT I
GOTO POCETAK
Re: Pomoc oko led displeja
Ne moze isti ic za zajednicku katodu i anodu.
Jer da bi dobio segment da sija na jednom treba da bude 0 na drugom 5v na izlazu ic.
Jer da bi dobio segment da sija na jednom treba da bude 0 na drugom 5v na izlazu ic.
Re: Pomoc oko led displeja
I za pocetak spoj samo 1 displej na ic bez multipleksa.
Onda prikazi cifru.
Ako imas dovoljno pinova mozes i bez tog dekodera
Onda prikazi cifru.
Ako imas dovoljno pinova mozes i bez tog dekodera
Re: Pomoc oko led displeja
Uredu je to, mislio sam da stavim drugi ic za zajednicku katodu, tranzistore npn, kolektor na katodu, emitor na masu, sve to uredu, samo me interesuje menja li se tad nesto u programu oko izlaznih pinova koji idu na ABCD, tog IC koji je sa zajednickom katodom? Treba li tu promeniti da li ce biti ulazni ili izlazni.
Re: Pomoc oko led displeja
Pa naravno da ne treba.
Ti saljes broj u binarnom obliku, samo IC treba da dekodira to u odgovarajuce signale.
Ti saljes broj u binarnom obliku, samo IC treba da dekodira to u odgovarajuce signale.
Re: Pomoc oko led displeja
Samo bih jos nesto pitao uvezi displeja bez drajvera,znaci displej direkno na pic.Da li ovde treba,a mislim da treba prepraviti program za displej sa katodom.
TRISA = %11110000
trisb = %00000000
For i = 0 To 3
x=broj Dig i
GoSub displej
Pause 500
Next i
displej:
porta = $ff
Lookup x, [$40, $79, $24, $30, $19, $12, $02, $78, $00, $18], portb
porta = ~Dcd i
Ovo radi sa displej sa zajednickom anodom ali kad se stavi displej sa zajednickom katodom i treba da ispise broj 1 na displeju se pojavi upaljeno slovo E a diode B i C su ugasene,ispisuje broj ugasenim diodama sto je logicno.Tako radi jer kad je sa zajednickom anodom na pinovima PICa se pojavi nizak nivo za one diode koje svetle a visok nivo za one koje nesvetle da se nebi palile,to sam i izmerio.E sad,kako izoktebuti portb da na displeju sa zajednickom katodom daje visok nivo diodama koje svetle a nizak nivo diodama koje nesvetle ? Ako moze pomoc za ovo jer dobio sam neke 7seg displeje sa 8 cifara a svi su sa zajednickom katodom i steta je baciti ih jer svi su iz neke masine fabricki bas lepo uradjeni.Sve sam probao i neuspevam nikako da to resim.
TRISA = %11110000
trisb = %00000000
For i = 0 To 3
x=broj Dig i
GoSub displej
Pause 500
Next i
displej:
porta = $ff
Lookup x, [$40, $79, $24, $30, $19, $12, $02, $78, $00, $18], portb
porta = ~Dcd i
Ovo radi sa displej sa zajednickom anodom ali kad se stavi displej sa zajednickom katodom i treba da ispise broj 1 na displeju se pojavi upaljeno slovo E a diode B i C su ugasene,ispisuje broj ugasenim diodama sto je logicno.Tako radi jer kad je sa zajednickom anodom na pinovima PICa se pojavi nizak nivo za one diode koje svetle a visok nivo za one koje nesvetle da se nebi palile,to sam i izmerio.E sad,kako izoktebuti portb da na displeju sa zajednickom katodom daje visok nivo diodama koje svetle a nizak nivo diodama koje nesvetle ? Ako moze pomoc za ovo jer dobio sam neke 7seg displeje sa 8 cifara a svi su sa zajednickom katodom i steta je baciti ih jer svi su iz neke masine fabricki bas lepo uradjeni.Sve sam probao i neuspevam nikako da to resim.
Re: Pomoc oko led displeja
$40, $79, $24, $30, $19, $12, $02, $78, $00, $18
Izmeni ove brojeve da budu kako treba.
Mozes ih pisati i u binarnom obliku.
NPR
za nulu %01111111, za 1 pises %01100000, itd. Gde je 0 a gde 1 zavisi iskljucivo od toga kako si vezao displej na pic.
Izmeni ove brojeve da budu kako treba.
Mozes ih pisati i u binarnom obliku.
NPR
za nulu %01111111, za 1 pises %01100000, itd. Gde je 0 a gde 1 zavisi iskljucivo od toga kako si vezao displej na pic.
Re: Pomoc oko led displeja
Hvala puno. Sutra cu to da uradim cim dodajem sposla.
Re: Pomoc oko led displeja
Sve sad radi kao sat. Kapiram u potpunosti pa mi je sad svejedno koji displej i tranzistor imam. Kvala jos jednom Pedja.
Re: Pomoc oko led displeja
E to volim da cujemMIKI73 wrote:... Kapiram u potpunosti pa mi je sad svejedno...
Re: Pomoc oko led displeja
Evo sad sam stigao do nesto slobodnog vremena pa bih nesto da napisem oko displeja jer mozda nekom zatreba,ja nisam nesto daleko otisao sa programiranjem pa sam se malo vise mucio sa LED displejem ali ako jos nekom nije jasno nemora se i on muciti kao ja.
Ako imam displej sa zajednickom anodom i pnp trenzistore onda stavljamo komandu ~DCD da bi
pobuda za pnp tr. bila uvek nizak nivo
Ako su sa zajednickom anodom i imamo npn trenzistore onda je komanda samo DCD jer tad uvek imamo
pozitivan napon pobude tj log.1 na bazi tranzistora
Za displej sa zajednickom katodom i pnp tr. je isto ~DCD samo sto je sad njegov emitor na katodi a kolektor na masi a za npn samo DCD i kolektor na katodi emitor na masi
Evo brojeva za displej sa zajednickom katodom,s-dena na levo ako je displej vezan A na RB0 i tako nadalje.
,
[%0111111,%0000110,%1011011,%1001111,%1100110,%1101101,%1111101,%0000111,%1111111,%1101111], portb
Ako imam displej sa zajednickom anodom i pnp trenzistore onda stavljamo komandu ~DCD da bi
pobuda za pnp tr. bila uvek nizak nivo
Ako su sa zajednickom anodom i imamo npn trenzistore onda je komanda samo DCD jer tad uvek imamo
pozitivan napon pobude tj log.1 na bazi tranzistora
Za displej sa zajednickom katodom i pnp tr. je isto ~DCD samo sto je sad njegov emitor na katodi a kolektor na masi a za npn samo DCD i kolektor na katodi emitor na masi
Evo brojeva za displej sa zajednickom katodom,s-dena na levo ako je displej vezan A na RB0 i tako nadalje.
,
[%0111111,%0000110,%1011011,%1001111,%1100110,%1101101,%1111101,%0000111,%1111111,%1101111], portb
Re: Pomoc oko led displeja
Pozdrav svima.
Evo opet ja nikako da se snadjem.Ovo sam napisao samo radi probe ali problem je sa ispisivannjem na displeju.
Kako da sredim da mi rezultat merenja prikaze jednu sekundu tj da rezultat bude na displeju dok se vresi merenje ?
Ovako samo trenutno ispise pa onda nista na displeju i tako u krug.
broj var word
n Var Byte
i var byte
TRISA = %11111111
trisc = 0
trisb = %00000000
broj=0
ANSEL = %00000000
pocetak
COUNT PORTA.0,1000,BROJ
For i = 0 To 7
n=broj Dig i
GoSub display1
Pause 100
Next i
next c
display1:
portc = $ff
Lookup n, [%0111111,%0000110,%1011011,%1001111,%1100110,%1101101,%1111101,%0000111,%1111111,%1101111], portb
portc = ~Dcd i
return
end
Evo opet ja nikako da se snadjem.Ovo sam napisao samo radi probe ali problem je sa ispisivannjem na displeju.
Kako da sredim da mi rezultat merenja prikaze jednu sekundu tj da rezultat bude na displeju dok se vresi merenje ?
Ovako samo trenutno ispise pa onda nista na displeju i tako u krug.
broj var word
n Var Byte
i var byte
TRISA = %11111111
trisc = 0
trisb = %00000000
broj=0
ANSEL = %00000000
pocetak
COUNT PORTA.0,1000,BROJ
For i = 0 To 7
n=broj Dig i
GoSub display1
Pause 100
Next i
next c
display1:
portc = $ff
Lookup n, [%0111111,%0000110,%1011011,%1001111,%1100110,%1101101,%1111101,%0000111,%1111111,%1101111], portb
portc = ~Dcd i
return
end
Re: Pomoc oko led displeja
Dok se izvodi ova komanda
COUNT PORTA.0,1000,BROJ
Ne moze nista da ti bude na displeju.
U tom slucaju moras korititi tajmer za brojanje impulsa, i za generisanje vremena od 1sec.
COUNT PORTA.0,1000,BROJ
Ne moze nista da ti bude na displeju.
U tom slucaju moras korititi tajmer za brojanje impulsa, i za generisanje vremena od 1sec.
Re: Pomoc oko led displeja
Nisam se javljao dok neprobam prvo sam,medjutim neradi kako bi trebalo.Kad se ukljuci preko displeja oko 6 puta protrci nakratko rezultat merenja (povacam pauzu da moze da se vidi) i onda pocnu da blinkaju nule,tako je i u proteusu i uzivo.Razumem da mora ta jedna sekunda da nema nista dok traje komanda COUNT ali kako da uradim da posle bar jednu sekundu mogu da vidim rezultat merenja?
Radim sa 16f883,nebitno ako je ovde nesto drugo pogreseno u brzini
bitan mi je samo rezultat da stoji bar jednu sekundu.
broj var word
n Var Byte
i var byte
TRISA = %11111111
trisc = 0
trisb = %00000000
broj=0
ANSEL = %00000000
pocetak
COUNT PORTA.0,1000,BROJ
For i = 0 To 7
n=broj Dig i
GoSub display1
Pause 2
Next i
display1:
portc = $ff
Lookup n, [%0111111,%0000110,%1011011,%1001111,%1100110,%1101101,%1111101,%0000111,%1111111,%1101111], portb
portc = ~Dcd i
end
Radim sa 16f883,nebitno ako je ovde nesto drugo pogreseno u brzini
bitan mi je samo rezultat da stoji bar jednu sekundu.
broj var word
n Var Byte
i var byte
TRISA = %11111111
trisc = 0
trisb = %00000000
broj=0
ANSEL = %00000000
pocetak
COUNT PORTA.0,1000,BROJ
For i = 0 To 7
n=broj Dig i
GoSub display1
Pause 2
Next i
display1:
portc = $ff
Lookup n, [%0111111,%0000110,%1011011,%1001111,%1100110,%1101101,%1111101,%0000111,%1111111,%1101111], portb
portc = ~Dcd i
end
Re: Pomoc oko led displeja
U programu nemas return. Velika greska....
Dodas jos jednu petlju oko for i... i sa tom petljom odredjujes koliko traje.
Dodas jos jednu petlju oko for i... i sa tom petljom odredjujes koliko traje.
Re: Pomoc oko led displeja
Nemam RETURN, to je ostalo kako sam pokusavam sve i svasta. Gde bi trebalo da ubacim petlju? Pokusavam sa nesto sa FOR x=1 TO 1000 ali nije mi bilo kako treba ili sam to ubacio na pogrešno mesto.
Re: Pomoc oko led displeja
Bas to treba. Iznad for i...
Al u tom slucaju moras resiti return.
Al u tom slucaju moras resiti return.
Re: Pomoc oko led displeja
Pozdrav svima.Da iskoristim staru temu oko led displeja.Sa lcd displejem sve radi ali led mi nikako neuspeva da ubacim.Probao sam sa 16f883
Na tadteru portc.0=0 zadamo vreme u sekundama
Kad pritisnemo tadter portc.1
start dostigne vrednost 3 i dok je 3 odbrojava od 10 do 0 i tu staje
Sve radi kako treba ali nikako da to proradi sa LED displejem pa bih zamolio za pomoc
Evo koda za led displej ali neznam kako da ga postavim u programu,sve zivo probao i nece
Da li moze sa ovim kodom za displej ili treba drugacije?neznam,sve sto mi je palo napamet sam probao
========================
For i = 0 To 3
n=brojac Dig i
GoSub display1
Pause 100
Next i
endif
display1:
Digits = $ff
Lookup n, [$40, $79, $24, $30, $19, $12, $02, $78, $00, $18], portb
Digits = ~Dcd i
resume
========================================================
milan var byte
start var byte
mimi var byte
brojac var byte
milan = 0
brojac = 0
start = 0
mimi = 0
n Var Byte
i var byte
Digits Var PORTA
TRISA = %11110000
trisc = %00000111
portc = %00000000
trisb = %00000000
Pocetak
if portc.0=0 then "zadajemo vrednost
brojac=brojac+10
pause 1000
endif
while portc.0 = 0 'dok je taster pritisnut vrednost se nepovecava
brojac = brojac
wend
if portc.1=0 then 'kad dostigne 3 pocinje da odbrojava
start = start + 1
if start > 3 then start = 3
portc.3 = 1
endif
while start = 3 'broji dok je start 3
brojac = brojac-1
pause 1000
if brojac = 0 then 'kad je brojac 0 sve je na nulu i tu staje dok ponovo nepritisnem portc.0
start = 0
portc.3 = 0
endif
wend
goto pocetak
end
Na tadteru portc.0=0 zadamo vreme u sekundama
Kad pritisnemo tadter portc.1
start dostigne vrednost 3 i dok je 3 odbrojava od 10 do 0 i tu staje
Sve radi kako treba ali nikako da to proradi sa LED displejem pa bih zamolio za pomoc
Evo koda za led displej ali neznam kako da ga postavim u programu,sve zivo probao i nece
Da li moze sa ovim kodom za displej ili treba drugacije?neznam,sve sto mi je palo napamet sam probao
========================
For i = 0 To 3
n=brojac Dig i
GoSub display1
Pause 100
Next i
endif
display1:
Digits = $ff
Lookup n, [$40, $79, $24, $30, $19, $12, $02, $78, $00, $18], portb
Digits = ~Dcd i
resume
========================================================
milan var byte
start var byte
mimi var byte
brojac var byte
milan = 0
brojac = 0
start = 0
mimi = 0
n Var Byte
i var byte
Digits Var PORTA
TRISA = %11110000
trisc = %00000111
portc = %00000000
trisb = %00000000
Pocetak
if portc.0=0 then "zadajemo vrednost
brojac=brojac+10
pause 1000
endif
while portc.0 = 0 'dok je taster pritisnut vrednost se nepovecava
brojac = brojac
wend
if portc.1=0 then 'kad dostigne 3 pocinje da odbrojava
start = start + 1
if start > 3 then start = 3
portc.3 = 1
endif
while start = 3 'broji dok je start 3
brojac = brojac-1
pause 1000
if brojac = 0 then 'kad je brojac 0 sve je na nulu i tu staje dok ponovo nepritisnem portc.0
start = 0
portc.3 = 0
endif
wend
goto pocetak
end