Potrebna pomoc oko pisanja koda za led displej bez dekodera

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

Moderators: pedja089, stojke369, [eDo], trax

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

Potrebna pomoc oko pisanja koda za led displej bez dekodera

Post by MIKI73 »

Do sada sam uvek pisao kod sa dekoderom gde je u upotrebi sdmosegmentni displej jer se koristi manji broj pinova ali sada sam probao bez dekodera i nikako da mi proradi.Gledao sam ovde na forumu ali sve sto sam pronasao bilo je sa dekoderom pa bih zamolio ako neko ima da postavi bilo kakav kod (dovoljno i sa tri cifre) gde je u upotrebi sedmosegmenti displej,nesto kao brojac ili merac frekvencije gde je u upotrebi samo pic.Dovoljan mi je samo jedan primer i snacicu se.Skinuo sam sa interneta u pdf-u 'BASIC for PIC microcontrollers" gde ima nekoliko primera ali nije htelo ni sa njima da proradi.Ako neko ima nesto u vezi toga zamolio bih za pomoc.Svejedno za koji je pic pisano.
Dzenny_assembly
Napredujem
Napredujem
Posts: 118
Joined: 11-09-2014, 04:03

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by Dzenny_assembly »

Ja sam se s tim prije igrao pisao programe za ispis na sedmosegmentnim displayima ali u assembleru. Nije ti neki problem to napisati nego sta treba da ispisuje, sta da mijeri, to vec zahtijeva vise vremena...
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by MIKI73 »

Meni treba kao frekvencmetar do nekoliko KHz,moze i sa naredbom COUNT ili sa upotrbom TMR0,svejedno mi je ali nikako mi neide da te brojeve posaljem na led displej dok sa lcd displejem mi ne pretstavlja nikakav problem da to napisem pa mi je zato potreban samo neki primer na tom fazonu gde se nesto broji (pritisak tastera ili neki drugi spoljni inpuls) i broj se salje na led displej.Dovoljan je i primer sa dve cifre a ostalo cu lako da dodam.Na pr ovako ali bez dekodera.

TRISB=0
TRISA=255
BROJ VAR WORD
BROJ1 VAR BYTE
BROJ2 VAR BYTE
BROJ3 VAR BYTE
BROJ4 VAR BYTE
I VAR BYTE

POCETAK:
COUNT PORTA.0,1000,BROJ
REZULTAT = BROJ * 60
BROJ1 = BROJ DIG 3 'izdvajamo hiljde
BROJ2 = BROJ DIG 2' izdvajamo stotine
BROJ3 = BROJ DIG 1'desetice
BROJ4 = BROJ DIG 0'jedinice
FOR I = 1 TO 100
PORTB=BROJ1
HIGH PORTB.7
PAUSE 5
LOW PORTB.7

PORTB=BROJ2
HIGH PORTB.6
PAUSE 5
LOW PORTB.6

PORTB=BROJ3
HIGH PORTB.5
PAUSE 5
LOW PORTB.5

PORTB=BROJ4
HIGH PORTB.4
PAUSE 5
LOW PORTB.4
NEXT I
GOTO POCETAK
Dzenny_assembly
Napredujem
Napredujem
Posts: 118
Joined: 11-09-2014, 04:03

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by Dzenny_assembly »

Jesi li ti taj sklop spojio na matadoru i povezao sedmosegmentne brojace sa kontrolerom?
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by MIKI73 »

Nisam jos nista pravio.Kako da kazem,znam da neznam to da napisem i za sad sam probao iz proteusa pa ako proradi onda bih napravio.Ne sumnjam da me zeza proteus jer mi slicne stvari rade sa lcd displejem a inace imam sklopljenu plocicu sa cetvorocifrenim led displejem,cetiri tranzistora pnp za displej i 16f628A i ostalo vezano za pic a porta mi je slobodan.To sam pravio za probu bilo cega vezanog za pic sa 18 pinova,tj to mi je kao probna plocica
Dzenny_assembly
Napredujem
Napredujem
Posts: 118
Joined: 11-09-2014, 04:03

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by Dzenny_assembly »

Ti pnp tranzistori koje spominjes su za pojedino ukljucivanje cifri, tj. ispis je multipleksirajuci. Ja stvarno nemam toliko vremena za pisanje koda. Ako ti se neko javi da ti uradi moras mu predloziti sve podatke i semu tog sklopa. Bilo ko da bi pisao softver mora znati kako su pojedini pinovi kontrolera spojeni sa pojedinim segmentima.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by MIKI73 »

Nemora niko da se muci sa pisanjem koda,meni je dovoljan samo bilo kakav primer nekog brojaca gde se na displeju ispisuju brojevi,na pr pocinje nesto da broji pa ispise br 1 pa 2 i td. Samo me interesuje kako se pisu komande da se ukljicuju cifre-multiplex jedna za drugom i iz naredbe "Lookup" da se izvuce i pojavi broj na displeju,takodje svejedno da li je kod za pnp ili npn tranzistore.Meni traba samo neki primer ako neko vec nesto ima pa da se ne muci sa pisanjem jer nenalazim nista konkretno na internetu a ostalo cu sam da prilagodim.Hardver mi je najmanji problem,radim elektroniku preko dvadeset godina i sa tim cu lako ali sam sa pisanjem programa bas na staklenim nogama.Znaci bilo sta slicno ako neko ima a da se niko ne maltretira da zbog mene pise ceo kod
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by MIKI73 »

Evo jednog koda koji sam sada nabrzinu prekucao i koji neradi.On je za interni brojac ali mislim da mogu da ga prepravim za externi ra4 tocki pin.Samo neznam sta da izmenim da uopste proradi.Nezamerite ako ima neka greska u kucanju jer sam to sada kucao nabrzinu,inace ako ovo proradi bilo bi mi i vise nego dovoljno.

Digit var byte
Mask var byte
W var byte
I var byte
Led1 var porta.1
Led2 var porta.2
Trisa=%00000000
Trisb=%00000000
Led1=0
Led2=0
Intcon=%00100000
Option_reg=%10000000

On interrupt goto ISR:
Intcon=%10100000
W=0

Main
For I = 1 to 99
w=w+1
gosub prepare
pause 500
next i
goto main

prepare
digit=w dig 1
gosub bin2seg
mask=digit

digit = w dig 0
gosub bin2seg
mask=digit
return
bin2seg
lookup digit,[$3f,$06,$5b,$4f,$66,$6d,$7d,$07,$7f,$6f],mask
return

disable

isr:
portb=mask
Led2=1
Pause 1
Led2=0

Portb=mask
Led1=1
Pause 1
Led1=0

Intcon.2=0
Resume
Enable
end
Dzenny_assembly
Napredujem
Napredujem
Posts: 118
Joined: 11-09-2014, 04:03

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by Dzenny_assembly »

Imam nekih primjera u assembleru sto ti vijerujem me odgovara. Ja nisam ljubitelj Basic-a a jos manje C-a tako da ti mogu dati samo ideju na koji nacin da napises te algoritme. Ukoliko ti Basic u kojem pises nije toliko stran i znas osnovnu sintaksu mogu ti pomoci...
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by MIKI73 »

Asembler uopste ne poznajem ali ako mozete u nekoliko recenica da napisete sta i kako pa da probam,nemojte previse da se mucite zbog mene,ukratko pa valjda cu da se snadjem.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by pedja089 »

Vec ima na forumu napisano u pic basicu...
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by MIKI73 »

Trazio sam i nikako da nadjem,napisite mi bar u kojoj je temi pa da nadjem jer mozda malo i od umora pa da sam samo presao preko toga a da nisam ni video
Dzenny_assembly
Napredujem
Napredujem
Posts: 118
Joined: 11-09-2014, 04:03

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by Dzenny_assembly »

Evo ovako da probam... Trebas imati jednu petlju koja ce se osvijezavati svako nekoliko ms. to mozes izvesti sa TMR0 i njegovim interaptom. U toj petlji prvu promijenljivu koja treba da se ispise, nakon BCD konverzije, kopiras na port na kojem su ti povezani sedmosegmentni dekoderi. Ponovnim ulaskom u tu petlju trebas imati i jednu promijenljivu koja odredzuje koji segment je trenutno aktivan za ispis. Ona govori koja decimalna tezina, hiljade, stotine, desetine ili jedinice je aktivna. Tu promijenljivu uvecavas za 1 svakim ulaskom u petlju sve dok neispises zadnju cifru tj. jedinice nakon kojeg je resetujes. Naravno trebas imati i podprogram u kojem ces vrsiti BCD konverziju sto dodatno komplikuje program. Ovo je samo u kratkim crtama ispisano i tesko je razumljivo. Ako ipak ne uspijes najbolje bi bilo kako kaze pedja da pogledas temu o PicBasic-u gdje je vec pisano o tome, i gdje su postavljani konkretni primjeri Basic koda koje bi vijerovatno trebao malo modifikovati za svoj sklop. Pozz
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by pedja089 »

http://www.elektronika.ba/forum/viewtop ... 9&start=33
Samo spoji umesto na dekoder direktno pinove displeja na pic. I iskoristi primer za jedan displej, i ovo za multipleks. Ovo je objasnjeno na najjednostavniji moguci nacin, bez tajmera, interapta itd...
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by MIKI73 »

Ok.Probacu veceras kad dodjem sposla,trebalo bi da se snadjem.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by MIKI73 »

Probao sam ovih nekoliko dana sve sto sam znao ali ne ide nikako ni na plocici ni u proteusu pa sad sta je tu je,bice ponovo sa lcd displejem.U svakom slucaju hvala vam svima na savetima i na pomoc.Nedavno sam kupio knjigu od Voje Milanovica i za nepoverovati da o led displeju skoro da nema nista osim nekog primera sa kolom SAA1064.Hvala vam jos jednom.
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by Maki »

Evo točno ono što ti treba :wink:
Link: http://melabs.com/samples/PBP-mixed/7segment.htm
Shema za taj primjer izvedena na PIC16F84
Image
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by MIKI73 »

Hvala Maki,taj kod radi i broji do 9999 a u proteusu nece tako da za sada koristim samo probnu plocicu na kojoj radi bez greske.Pokusavam sada da to preradim da bude na pritisak tastera,savki pritisak tastera da uveca za 1 pa sam koristio isti primer kao iz prethodne teme koju sam postavio u vezi upisa u eeprom jer tu je lepo odradjeno da se nepojavljuje lazno brojenje zbog otskakanja tastera.Evo u prilogu "proba" kako sam to probao i na displeju su samo osmice pa ako moze neko bar ukratko da mi kaze gde gresim a u drugom prilogu je kod sa lcd koji radi i gde bih umesto lcd stavio led displej.Iskren da budem nebih davio ali mnogo puta sam stavljao pic u programator pa na plocicu i otanjio sam mu pinove tako da ce uskoro neki da se otkine.Ustvari probao sam da iz koda koji mi je dao Maki prebacim komande za led displej u ovom drugom kodu.
MIKI73
Napredujem
Napredujem
Posts: 107
Joined: 01-11-2014, 16:57

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by MIKI73 »

Nije mi se pojavio prilog u text document pa da postavljam ovako ovo sto sam probao da napisem.

Code: Select all

cmcon=7
brojac     var byte                    
petlja     var byte                    
taster_uk  var bit
TRISA = %11110000
TRISB = $80
brojac=0

Segments Var  PORTB
Digits   Var  PORTA
i        Var  Byte
n        Var  Byte
Value    Var  Word

cekaj_log0:
    
    
    gosub proveri_ulaz                 
    if taster_uk=0 then cekaj_log0     
    
cekaj_log1:
    
    gosub proveri_ulaz                
    if taster_uk=1 then cekaj_log1     
    brojac = brojac + 1                  
    goto cekaj_log0
    Value=brojac 
   For i = 0 To 3      
     n = Value Dig i   
     GoSub display1    
     Pause 1           
   Next i              
   Return     
   display1:
   Digits = $ff
   Lookup n, [$40, $79, $24, $30, $19, $12, $02, $78, $00, $18], Segments 
   Digits = ~Dcd i
     
                        
    
proveri_ulaz:
    taster_uk=0                        
    for petlja=0 to 100                
      if PORTA.4=1 then return         
      pauseus 100                      
    next petlja                        
    taster_uk=1                        
    return                             
    end
Maki
Odlično uznapredovao
Odlično uznapredovao
Posts: 766
Joined: 02-07-2012, 12:54

Re: Potrebna pomoc oko pisanja koda za led displej bez dekod

Post by Maki »

Probaj ovako:

Code: Select all

cmcon=7
brojac     var byte                    
petlja     var byte                    
TRISA = %11110000
TRISB = $80
brojac=0

Segments Var  PORTB
Digits   Var  PORTA
i        Var  Byte
n        Var  Byte
Value    Var  Word

Pocetak:

  IF porta.4 =1 then
         brojac = brojac +1
          pause 100
   end if

  Value=brojac 
   For i = 0 To 3      
     n = Value Dig i   
     GoSub display1    
     Pause 1           
   Next i              
   Return     
   display1:
   Digits = $ff
   Lookup n, [$40, $79, $24, $30, $19, $12, $02, $78, $00, $18], Segments 
   Digits = ~Dcd i
     return   
Post Reply