skraceni kurs ucenja picbasica
Moderators: pedja089, stojke369, [eDo], trax
Re: skraceni kurs ucenja picbasica
Veoma cenim radove na forumu,cim budem imao malo vise vremena prikljucujem se vama,sa svojim znanjem PBP-a,naravno uz razmenu iskustava iz ove ali i drugih oblasti elektronike. Pozdrav
Re: skraceni kurs ucenja picbasica
evo primjer gdje se koriste "custom characters" (vlastiti simboli)
to je ujedno i voltmetar:
simbol je baterija a ako nekoga zanima mogu objasniti kako se "crtaju" ti simboli
evo koda
to je ujedno i voltmetar:
simbol je baterija a ako nekoga zanima mogu objasniti kako se "crtaju" ti simboli
evo koda
Code: Select all
define OSC 20
DEFINE ADC_BITS 8 'Number of bits in ADCIN result
DEFINE ADC_CLOCK 3 'ADC clock source (rc = 3)
DEFINE ADC_SAMPLEUS 50 'ADC sampling time in microseconds
DEFINE LCD_DREG PORTB 'LCD data port
DEFINE LCD_DBIT 0 'LCD data starting bit 0 or 4
DEFINE LCD_RSREG PORTB 'LCD register select port
DEFINE LCD_RSBIT 4 'LCD register select bit
DEFINE LCD_EREG PORTB 'LCD enable port
DEFINE LCD_EBIT 5 'LCD enable bit
DEFINE LCD_BITS 4 'LCD bus size 4 or 8
DEFINE LCD_LINES 2 'Number lines on LCD
pause 500
lcdout $fe,1
LCDOUT $FE,$40,14, 31, 17, 17, 17, 17, 17, 31 'baterija prazna
LCDOUT $FE,$48,14, 31, 17, 17, 17, 17, 31, 31
lcdout $fe,$50,14, 31, 17, 17, 17, 31, 31, 31
lcdout $FE,$58,14, 31, 17, 17, 31, 31, 31, 31
lcdout $FE,$60,14, 31, 17, 31, 31, 31, 31, 31
lcdout $FE,$68,14, 31, 31, 31, 31, 31, 31, 31 'baterija puna
ad var word
Dummy var byte
napon var word
start:
adcin 1, ad
Dummy = ad* 5 * 100
Napon = Div32 255
if ad = 0 then lcdout $fe,1,"Bat:",$00
if (ad > 10) and (ad < 50) then lcdout $fe,1,"Bat:",$01
if (ad > 50) and (ad < 100) then lcdout $fe,1,"Bat:",$02
if (ad > 150) and (ad < 2000) then lcdout $fe,1,"Bat:",$03
if (ad > 200) and (ad < 220) then lcdout $fe,1,"Bat:",$04
if (ad > 220) and (ad < 256) then lcdout $fe,1,"Bat:",$05
lcdout $fe,$c0,DEC Napon DIG 2,".", DEC2 Napon, "V"
pause 100
goto start
Re: skraceni kurs ucenja picbasica
Ne bi bilo lose napisati i to, kad vec ima o lcd...
Jos jedan fazon za baterije je da se slozi od 4 kockice uspravno.
Jos jedan fazon za baterije je da se slozi od 4 kockice uspravno.
Re: skraceni kurs ucenja picbasica
dakle ovako:
HD44780 LCD (ili neki ekvivalentan) sadrže memoriju za used - defined characters (vlastite simbole). Ta memorija se nalazi na adresama od $40 pa do $78. pošto imamo 8 redova na jednom "polju" na lcd-u znaći da će nam za jedan simbol trebati 8 ardesa (npr. adrese $40,$41,$42,$43,$44,$45,$46,$47).
E sada je pitanje kako to poslati na LCD a to se radi tako da se napiše LCDOUT zatim prvu adresu npr. $40 te zatim pišemo pixele toje želimo da budu vidljivi a za to koristimo "kalkulator" s ove stranice:
http://www.8051projects.net/lcd-interfa" onclick="window.open(this.href);return false; ... racter.php
Ovako izgleda kod za ispis baterije na LCD-u. Dakle kad smo u RAM upisali svoj simbol sad ga trebmo prikazati a adrese i adrese pozivanja simbola na lcd su ovako "povezane"
$40 -> $00
$48 -> $01
$50 -> $02
$58 -> $03
$60 -> $04
$68 -> $05
$70 -> $06
$78 -> $07
Ove dvije adrese između npr $48 i $50 se ne koriste za vlastite simbole
evo još jedan primjer simbol je smajl ali je sada na drugoj adresi:
to bi bilo koliko od mene ako neko ima nekakvo pitanje neka slobodno pita a i ako sam ja nešta pogrešno napisao neka me se ispravi!
Neka netko pokuša ispisati na LCD-u simbol zvučnika ili nešta drugo i neka javi rezultate
HD44780 LCD (ili neki ekvivalentan) sadrže memoriju za used - defined characters (vlastite simbole). Ta memorija se nalazi na adresama od $40 pa do $78. pošto imamo 8 redova na jednom "polju" na lcd-u znaći da će nam za jedan simbol trebati 8 ardesa (npr. adrese $40,$41,$42,$43,$44,$45,$46,$47).
E sada je pitanje kako to poslati na LCD a to se radi tako da se napiše LCDOUT zatim prvu adresu npr. $40 te zatim pišemo pixele toje želimo da budu vidljivi a za to koristimo "kalkulator" s ove stranice:
http://www.8051projects.net/lcd-interfa" onclick="window.open(this.href);return false; ... racter.php
Code: Select all
LCDOUT$40,14, 31, 17, 17, 17, 17, 17, 31 ' Upisujem svoj simbol u RAM
LCDOUT $fe,1,$00 ' prikazujem svoj simbol na LCD-u
$40 -> $00
$48 -> $01
$50 -> $02
$58 -> $03
$60 -> $04
$68 -> $05
$70 -> $06
$78 -> $07
Ove dvije adrese između npr $48 i $50 se ne koriste za vlastite simbole
evo još jedan primjer simbol je smajl ali je sada na drugoj adresi:
Code: Select all
LCDOUT $48,0, 10, 10, 0, 0, 17, 14, 0
LCDOUT $FE,1,$01
Neka netko pokuša ispisati na LCD-u simbol zvučnika ili nešta drugo i neka javi rezultate
Re: skraceni kurs ucenja picbasica
uhhh sad sam tek vidio da mi link ne valja
evo ga: http://www.8051projects.net/lcd-interfa ... racter.php" onclick="window.open(this.href);return false;
evo ga: http://www.8051projects.net/lcd-interfa ... racter.php" onclick="window.open(this.href);return false;
Re: skraceni kurs ucenja picbasica
Evo jos malo pojasnjenja.
Slika se kreira tako sto je desni piksel najnizi bit.
I sad recimo za zvucnik bi izgledalo otprilike ovako:
00010=2
00110=6
11010=26
11010=26
11010=26
00110=6
00010=2
00000=0
8 red je upitan, i zato ga treba izbegavati. Kontroler ga ima u sebi, ali cesto nije izvucen na ekran.
Mada uvek se moze probati, ali ne preporucujem da ga koristite ukoliko objavljujete samo hex projekta.
Isto je zgodno upisati u ovu mapu znak za stepen, kada se radi termometar ili sl. Jer na razlicitim dispejima, isti znak stoji na razlicitim mestima.
Evo jos jedan link.
http://www.picbasic.co.uk/forum/showthread.php?t=242" onclick="window.open(this.href);return false;
Ima i zgodan kalkulator, koji izmedju ostalog moze i za lcd da se koristi.
Slika se kreira tako sto je desni piksel najnizi bit.
I sad recimo za zvucnik bi izgledalo otprilike ovako:
00010=2
00110=6
11010=26
11010=26
11010=26
00110=6
00010=2
00000=0
Code: Select all
LCDOUT $40,2, 6, 26, 26, 26, 6, 2, 0 ' Upisujem svoj simbol u RAM
LCDOUT $fe,1,$00 ' prikazujem svoj simbol na LCD-u
Mada uvek se moze probati, ali ne preporucujem da ga koristite ukoliko objavljujete samo hex projekta.
Isto je zgodno upisati u ovu mapu znak za stepen, kada se radi termometar ili sl. Jer na razlicitim dispejima, isti znak stoji na razlicitim mestima.
Evo jos jedan link.
http://www.picbasic.co.uk/forum/showthread.php?t=242" onclick="window.open(this.href);return false;
Ima i zgodan kalkulator, koji izmedju ostalog moze i za lcd da se koristi.
Re: skraceni kurs ucenja picbasica
hvala što si još nešta nadodao.
kod mene 8 red radi bez problema
e sad bih volio da ovi ostali forumaši koji su aktivni u ovom kursu da probaju
kod mene 8 red radi bez problema
e sad bih volio da ovi ostali forumaši koji su aktivni u ovom kursu da probaju
Re: skraceni kurs ucenja picbasica
Secam se kod mene nije radio na nekom zutom displeju, za koji ne pamtim gde je otisao...
- sindja1204
- Odlično uznapredovao
- Posts: 792
- Joined: 03-05-2009, 11:57
- Location: Beograd
Re: skraceni kurs ucenja picbasica
Ovo je odlicna stvar ali su mi oci ispale dok nisam ukapirao da iza Lcdout treba staviti $fe.inace pokazuje neke brlje na displeju. (Bar je kod mene tako). NprVFDisplay wrote:Code: Select all
LCDOUT$40,14, 31, 17, 17, 17, 17, 17, 31 ' Upisujem svoj simbol u RAM LCDOUT $fe,1,$00 ' prikazujem svoj simbol na LCD-u
Code: Select all
LCDOUT $48,0, 10, 10, 0, 0, 17, 14, 0 LCDOUT $FE,1,$01
Code: Select all
LCDOUT $fe,$40,14, 31, 17, 17, 17, 17, 17, 31 ' Upisujem svoj simbol u RAM
LCDOUT $fe,1,$00 ' prikazujem svoj simbol na LCD-u
Code: Select all
define OSC 4
Define LCD_DREG PORTB
Define LCD_DBIT 0
Define LCD_RSREG PORTB
Define LCD_RSBIT 5
Define LCD_EREG PORTB
Define LCD_EBIT 4
DEFINE LCE_BITS 4
DEFINE LCD_Lines 2
pocetak:
lcdout $Fe,$84,4 'Simbol zvucnik
lcdout $fe, $60,2,6,26,26,26,6,2,0 'na petom mestu prvog reda
pause 2000
lcdout $fe,$C0,0 'simbol zvuznika
LCDOUT $fe,$40,2, 6, 26, 26, 26, 6, 2, 0 'Prvo mesto u drugom redu
pause 2000
lcdout $Fe,$c3,4 'symbol zvucnika
lcdout $fe, $60,2,6,26,26,26,6,2 'cetvrto mesto drugi red
lcdout $fe,$c5,"Primer" 'Uz simbol upisujemo i neki tekst od petog mesta
pause 2000
GoTo pocetak
End
Re: skraceni kurs ucenja picbasica
Svaka Čast a trudu!
ovaj zadnji kod ja bih prvo da pošaljem sliku a tek onda da ju ispišem na lcd-u
ostalo je ok
hehe nisi jedini i ja sam napravio istu grešku kad sam prvi put to radio,a sada sam zaboravio napisati da treba napisati i $feOvo je odlicna stvar ali su mi oci ispale dok nisam ukapirao da iza Lcdout treba staviti $fe.inace pokazuje neke brlje na displeju. (Bar je kod mene tako).
ovaj zadnji kod ja bih prvo da pošaljem sliku a tek onda da ju ispišem na lcd-u
Code: Select all
lcdout $fe, $60,2,6,26,26,26,6,2,0 'na petom mestu prvog reda
lcdout $Fe,$84,4 'Simbol zvucnik
pause 2000
- sindja1204
- Odlično uznapredovao
- Posts: 792
- Joined: 03-05-2009, 11:57
- Location: Beograd
Re: skraceni kurs ucenja picbasica
Ma to su samo nabacani primeri da se vidi postupak. Inace u ovom poslednjem kodu ide u isto vreme simbol i tekst, u suprotnom dovoljna je pauza izmedju.
A evo i jednog konkretnog primera kako to izgleda na tajmeru kada se aktivira buzer nakon isteka vremena.
Code: Select all
lcdout $Fe,$c3,4 'symbol zvucnika
lcdout $fe, $60,2,6,26,26,26,6,2
pause 500 'kasnjenje npr 500
lcdout $fe,$c5,"Primer" 'Uz simbol upisujemo i neki tekst od petog mesta
pause 2000
Code: Select all
define OSC 4
Define LCD_DREG PORTB
Define LCD_DBIT 0
Define LCD_RSREG PORTB
Define LCD_RSBIT 5
Define LCD_EREG PORTB
Define LCD_EBIT 4
DEFINE LCE_BITS 4
DEFINE LCD_Lines 2
symbol buzer=porta.4
k var byte
TRISB=%00000000
TRISA=%00000111
'deo koda tajmera 59:59 Ukljucenje alarma kada je zavrseno
odbrojavanje
iskljuci:
For K=0 To 5
pause 250
LCDOUT $fe,$40,2, 6, 26, 26, 26, 6, 2, 0
LCDOUT $fe,1,$00
pause 520
lcdout $Fe,$81,4
lcdout $fe, $60,0,0,30,0,31,0,30,0
lcdout $fe,$83,"End count"
sound buzer, [110,60]
pause 100
lcdout $fe,1
lcdout $fe,$C0,0
LCDOUT $fe,$40,2, 6, 26, 26, 26, 6, 2, 0
pause 520
lcdout $Fe,$c1,4
lcdout $fe, $60,0,0,30,0,31,0,30,0
lcdout $fe,$c3,"Resett"
sound buzer, [110,60]
pause 100
Next
GoTo iskljuci
End
Re: skraceni kurs ucenja picbasica
Ja na to nisam ni obracao paznju. Inaace kada se napise $fe, to znaci da iza sledi komanda.
Re: skraceni kurs ucenja picbasica
neznam kako kod tebe ali kod mene ako ne upišem $fe meće da mi izbaci simbol nego moram prvo $fe pa zatim simbol
@sindja1204: znam da je to primjer ali nije uobičajno da prvo LCD-u kažeš da prikaže simbol iz memorije (kojega nema) pa mu ga zatim pošalješ, a tekst možeš i ovako:
$04 je neki simbol
u ovom drugom kodu si to dobro napravio
@sindja1204: znam da je to primjer ali nije uobičajno da prvo LCD-u kažeš da prikaže simbol iz memorije (kojega nema) pa mu ga zatim pošalješ, a tekst možeš i ovako:
Code: Select all
LCDOUT $FE,1,$04,"Primjer"
u ovom drugom kodu si to dobro napravio
Re: skraceni kurs ucenja picbasica
Pa mora $fe, jer ti saljes memorisku lokaciju simbola, a ne sam simbol.
Koliko sam primetio taj $fe, je samo za pbp, da postavi liniju rs na command.
Mada iskreno nisam siguran, jer nisam ulazio detaljnije u rad za ovaj lcd, jer je sve gotovo...
Koliko sam primetio taj $fe, je samo za pbp, da postavi liniju rs na command.
Mada iskreno nisam siguran, jer nisam ulazio detaljnije u rad za ovaj lcd, jer je sve gotovo...
- sindja1204
- Odlično uznapredovao
- Posts: 792
- Joined: 03-05-2009, 11:57
- Location: Beograd
Re: skraceni kurs ucenja picbasica
VFDisplay wrote: uobičajno da prvo LCD-u kažeš da prikaže simbol iz memorije (kojega nema) pa mu ga zatim pošalješ, a tekst možeš i ovako:
Ovo prvo je logicno, ali to su ustvari preradjeni primeri koje si ti postavio u prethodnom postu , a deo primera koda je i sa strane koju je Pedja postavio a ja sam u tim primerima pokazao kako neki simbol postaviti na neko drugo mesto. Inace i "ovako i onako" radi bez problema.
Ovo sa tekstom je malo diskutabilno.
Prvom komandom $Fe,$c1,4 odrdjujem lokaciju simbola a drugom $fe,$c3,"Resett" lokaciju odakle pocinje tekst.lcdout $Fe,$c1,4
lcdout $fe, $60,0,0,30,0,31,0,30,0
lcdout $fe,$c3,"Resett"
Re: skraceni kurs ucenja picbasica
evo ja opet imam problem s TDA7313!!!
opet mi ne sluša moje komande!
išao sam po metodi koju mi je @pedja089 rekao da prvo isprobavam da namještam ulaze te da dočekam zvuk na pinovima 17 i 7 no NIŠTA!!!
sad mi radni takt kakav i treba biti (4MHz) te nemam potrebe za komandom DEFINE I2C_SLOW 1,a i napajanje je ovoga puta uredu (nova 9V baterija)
jedino,može li biti problem zato što sam zamijenio pinove SCL i DIGGND pa da ponovno nisam spržio TDA,jer se u datasheet-u UŽASNO teško vide brojevi?!
kod:
koristim PIC16F877 te na SDA i SCL su stavljeni pull-up otpornici
opet mi ne sluša moje komande!
išao sam po metodi koju mi je @pedja089 rekao da prvo isprobavam da namještam ulaze te da dočekam zvuk na pinovima 17 i 7 no NIŠTA!!!
sad mi radni takt kakav i treba biti (4MHz) te nemam potrebe za komandom DEFINE I2C_SLOW 1,a i napajanje je ovoga puta uredu (nova 9V baterija)
jedino,može li biti problem zato što sam zamijenio pinove SCL i DIGGND pa da ponovno nisam spržio TDA,jer se u datasheet-u UŽASNO teško vide brojevi?!
kod:
Code: Select all
define osc 4
DEFINE I2C_SDA PORTA.4
DEFINE I2C_SCL PORTB.4
symbol SDA = porta.4
Symbol SCL = portb.4
adr var byte
i2cwrite sda,scl,$88,adr,[%01011000] 'stereo 3
pause 15
end
Re: skraceni kurs ucenja picbasica
evo mene s još jednim problemom
naime prije par mjeseci sam kupio PIC12F629 i sve je bilo OK a onda sam kod programiranja umjesto "program all" kliknuo na "Erase All" i naravno izbrisao onaj kod za kalibraciju unutarnjeg oscilatora!
da li netko zna kako to vratiti, te da li se taj PIC više može koristiti?
pokušao sam s DEFINE osc 4 te mu u ICprog namjestio XT oscilator i stavio mu 4MHz kristal ali ništa
svaka pomoć je dobrodošla
naime prije par mjeseci sam kupio PIC12F629 i sve je bilo OK a onda sam kod programiranja umjesto "program all" kliknuo na "Erase All" i naravno izbrisao onaj kod za kalibraciju unutarnjeg oscilatora!
da li netko zna kako to vratiti, te da li se taj PIC više može koristiti?
pokušao sam s DEFINE osc 4 te mu u ICprog namjestio XT oscilator i stavio mu 4MHz kristal ali ništa
svaka pomoć je dobrodošla
Re: skraceni kurs ucenja picbasica
Pa trebalo bi da mozes da koristis sa externim oscilatorom.
A ako si izbrisao podatak za kalibraciju, ti pic mozes koristiti i dalje, ali neces znati na kojoj frekfenciji radi...
Mozes je mozda nekako nastelovati tako sto postavis interni osc i clockout na nekom pinu, pa meris frekfenciju...
A ako si izbrisao podatak za kalibraciju, ti pic mozes koristiti i dalje, ali neces znati na kojoj frekfenciji radi...
Mozes je mozda nekako nastelovati tako sto postavis interni osc i clockout na nekom pinu, pa meris frekfenciju...
Re: skraceni kurs ucenja picbasica
Vrednost osc. ce biti 3FFF tako da nece biti priblizno 4MHz vec nesto drugo a pic ce raditi.Ako koristis interni oscilator u vecini slucajeva tacnost ti i nije toliko bitna.
Re: skraceni kurs ucenja picbasica
Ima li neka verzija PBP i Microcode studio koja radi na Windows 7?