Pomoc oko led displeja

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: stojke369, pedja089, [eDo], trax

Post Reply
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Pomoc oko led displeja

Post by MIKI73 »

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
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Pomoc oko led displeja

Post by pedja089 »

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.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Pomoc oko led displeja

Post by pedja089 »

I za pocetak spoj samo 1 displej na ic bez multipleksa.
Onda prikazi cifru.
Ako imas dovoljno pinova mozes i bez tog dekodera
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko led displeja

Post by MIKI73 »

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.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Pomoc oko led displeja

Post by pedja089 »

Pa naravno da ne treba.
Ti saljes broj u binarnom obliku, samo IC treba da dekodira to u odgovarajuce signale.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko led displeja

Post by MIKI73 »

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.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Pomoc oko led displeja

Post by pedja089 »

$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.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko led displeja

Post by MIKI73 »

Hvala puno. Sutra cu to da uradim cim dodajem sposla.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko led displeja

Post by MIKI73 »

Sve sad radi kao sat. Kapiram u potpunosti pa mi je sad svejedno koji displej i tranzistor imam. Kvala jos jednom Pedja.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Pomoc oko led displeja

Post by pedja089 »

MIKI73 wrote:... Kapiram u potpunosti pa mi je sad svejedno...
E to volim da cujem :)
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko led displeja

Post by MIKI73 »

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
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko led displeja

Post by MIKI73 »

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
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Pomoc oko led displeja

Post by pedja089 »

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.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko led displeja

Post by MIKI73 »

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
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Pomoc oko led displeja

Post by pedja089 »

U programu nemas return. Velika greska....
Dodas jos jednu petlju oko for i... i sa tom petljom odredjujes koliko traje.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko led displeja

Post by MIKI73 »

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.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Pomoc oko led displeja

Post by pedja089 »

Bas to treba. Iznad for i...
Al u tom slucaju moras resiti return.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Pomoc oko led displeja

Post by MIKI73 »

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
Post Reply