skraceni kurs ucenja picbasica

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

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
acavplana
Posts: 2
Joined: 05-07-2010, 21:27

Re: skraceni kurs ucenja picbasica

Post by acavplana »

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
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: skraceni kurs ucenja picbasica

Post by VFDisplay »

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

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

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

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.
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: skraceni kurs ucenja picbasica

Post by VFDisplay »

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

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
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:

Code: Select all

LCDOUT $48,0, 10, 10, 0, 0, 17, 14, 0
LCDOUT $FE,1,$01
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! :D
Neka netko pokuša ispisati na LCD-u simbol zvučnika ili nešta drugo i neka javi rezultate :wink:
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: skraceni kurs ucenja picbasica

Post by VFDisplay »

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

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

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

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
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.
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: skraceni kurs ucenja picbasica

Post by VFDisplay »

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

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Secam se kod mene nije radio na nekom zutom displeju, za koji ne pamtim gde je otisao...
User avatar
sindja1204
Odlično uznapredovao
Odlično uznapredovao
Posts: 792
Joined: 03-05-2009, 11:57
Location: Beograd

Re: skraceni kurs ucenja picbasica

Post by sindja1204 »

VFDisplay 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
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). Npr

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
E sad ovde su uglavnom primeri za prvi karakter na LCD-u. Ako zelimo da nam simbol bude na nekom drugom mestu u prvom ili drugom redu ili da uz simbol upisemo i tekst, mozemo to ovako:

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
 
 
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: skraceni kurs ucenja picbasica

Post by VFDisplay »

Svaka Čast a trudu!
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).
hehe nisi jedini :lol: i ja sam napravio istu grešku kad sam prvi put to radio,a sada sam zaboravio napisati da treba napisati i $fe :oops:
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
ostalo je ok :wink:
User avatar
sindja1204
Odlično uznapredovao
Odlično uznapredovao
Posts: 792
Joined: 03-05-2009, 11:57
Location: Beograd

Re: skraceni kurs ucenja picbasica

Post by sindja1204 »

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.

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
A evo i jednog konkretnog primera kako to izgleda na tajmeru kada se aktivira buzer nakon isteka vremena.

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

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

Ja na to nisam ni obracao paznju. Inaace kada se napise $fe, to znaci da iza sledi komanda.
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: skraceni kurs ucenja picbasica

Post by VFDisplay »

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:

Code: Select all

LCDOUT $FE,1,$04,"Primjer"
$04 je neki simbol
u ovom drugom kodu si to dobro napravio :wink:
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

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...
User avatar
sindja1204
Odlično uznapredovao
Odlično uznapredovao
Posts: 792
Joined: 03-05-2009, 11:57
Location: Beograd

Re: skraceni kurs ucenja picbasica

Post by sindja1204 »

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.
lcdout $Fe,$c1,4
lcdout $fe, $60,0,0,30,0,31,0,30,0
lcdout $fe,$c3,"Resett"
Prvom komandom $Fe,$c1,4 odrdjujem lokaciju simbola a drugom $fe,$c3,"Resett" lokaciju odakle pocinje tekst.
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: skraceni kurs ucenja picbasica

Post by VFDisplay »

evo ja opet imam problem s TDA7313!!! :evil:
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 
koristim PIC16F877 te na SDA i SCL su stavljeni pull-up otpornici
VFDisplay
Odlično uznapredovao
Odlično uznapredovao
Posts: 515
Joined: 01-08-2009, 20:18

Re: skraceni kurs ucenja picbasica

Post by VFDisplay »

evo mene s još jednim problemom :evil:
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! :ohno:
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 :D
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7874
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

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...
yt1nvs
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 286
Joined: 30-03-2009, 16:54

Re: skraceni kurs ucenja picbasica

Post by yt1nvs »

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.
kyzo
Posts: 9
Joined: 20-07-2009, 20:27

Re: skraceni kurs ucenja picbasica

Post by kyzo »

Ima li neka verzija PBP i Microcode studio koja radi na Windows 7?
Post Reply