Ronovar,
Nisam se nešto udubljivao u ovu temu i samo ću iskopirati i zalepiti neki primer koji sam nekada upotrebio.
Nekad, baš odavno, sam pisao u Pic Basic i staviću neki primer konverzije vrednosti u BCD za 7 segment.
Trebalo mi je tada ispisivanje tri cifre na neki displej koji je imao I2C interfejs (neko SAA IC ili tako nešto, već sam zaboravio).
No, konverzija u BCD je konverzija, bez obzira koji drive za 7 segment bio korišćen, direktno sa MCU ili nekim eksternim IC pa ti, osim ovog za I2C slanje, sve ostalo važi uz izmenu po pitanju broja cifara.
Možda ti bude korisno nešto odatle, uz sve ostale dobre savete koje si dobio od ostalih kolega. To je jedan od mnogo mogućih načina koji se svode na isto na kraju.
U toj verziji Basic je postojao makro > dig < za izdvajanje pojedinačnih cifara iz višecifarskog broja. Moguće je da radi i u tvojoj verziji Basic.
Ovo je neki radni primer iz neke moje mašine koja i dan danas radi. Ako ti posluži - dobro je, ako ne - onda neće mnogo ni smetati ovde...
Pozz
Nisam se nešto udubljivao u ovu temu i samo ću iskopirati i zalepiti neki primer koji sam nekada upotrebio.
Nekad, baš odavno, sam pisao u Pic Basic i staviću neki primer konverzije vrednosti u BCD za 7 segment.
Trebalo mi je tada ispisivanje tri cifre na neki displej koji je imao I2C interfejs (neko SAA IC ili tako nešto, već sam zaboravio).
No, konverzija u BCD je konverzija, bez obzira koji drive za 7 segment bio korišćen, direktno sa MCU ili nekim eksternim IC pa ti, osim ovog za I2C slanje, sve ostalo važi uz izmenu po pitanju broja cifara.
Možda ti bude korisno nešto odatle, uz sve ostale dobre savete koje si dobio od ostalih kolega. To je jedan od mnogo mogućih načina koji se svode na isto na kraju.
U toj verziji Basic je postojao makro > dig < za izdvajanje pojedinačnih cifara iz višecifarskog broja. Moguće je da radi i u tvojoj verziji Basic.
Ovo je neki radni primer iz neke moje mašine koja i dan danas radi. Ako ti posluži - dobro je, ako ne - onda neće mnogo ni smetati ovde...
Code:
prikazibroj:;----------ispisivanje varijable 'vred_disp' na i2c displej(traje oko 1mS), tri cifre-------
cifra = 0
for cifra = 0 to 2 ; bcd konverzija
broj[cifra] = vred_disp dig cifra
lookup broj[cifra],[$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$67,$38],temp
broj[cifra] = temp
next cifra
if broj[2] = $3F then ;brisanje suvisnih nula
broj[2] = 0
if broj[1] = $3F then
broj[1] = 0
endif
endif
i2cwrite sda,scl,disp_adr,1,[0,broj[2],broj[1],broj[0]] ;samo slanje traje oko 850uS!
temp = 0
return ;---------------------------------------------------------------------------------
Pozz