skraceni kurs ucenja picbasica

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

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
User avatar
Dariolo
Odlično uznapredovao
Odlično uznapredovao
Posts: 822
Joined: 24-08-2006, 23:29
Location: Žepče (BiH), Zagreb (HR)

Post by Dariolo »

Pošto je pedja trenutno loš sa pristupom interneta, pokušat ću ja nešto da napišem za LCD!

Mada sam i ja još u dubokoj fazi učenja pokušat ću napisati da svi početnici (kao i ja) shvate i razumiju!

http://img.alibaba.com/photo/11413948/1 ... odules.jpg
to bi bio primjer jednog paralelnog 16x2 LCD-a, još postoje i serijski al oni su kompliciranij i skuplji pa njih odmah zaboravimo :D

za PBP koriste se LCD-ei koji u sebi koriste HD44780 kontoler, mada ima i drugih koji se mogu koristit (jedan takav je u mene)

http://home.iae.nl/users/pouweha/lcd/lc ... assignment

tu imamo raspored pinova na jednom takvom LCD-u

Kod spajanja LCD-a sa PIC-om, ako koristimo pbp trebamo koristiti odgovarajuće pinove.
Na slici je prikazano spajanje LCD-a i PIC-a:

Image

No spajanje na ovaj način nije nužno mogu se koristiti i drugi pinovi PIC-a ali se onda se moraju definirati pinovi koji se koriste

to bi bilo malo od hardware-skog dijela sada da pređemo na pisanja programa.

za slanje podtaka na LCD koristi se jednostavna naredba LCDOUT.

Ispod imamo tabelu komandi koje se koriste uz naredbu LCDOUT.

KOMANDA OPERACIJA NA DISPLAY-u
$FE,1 obriši displej
$FE,2 vrati se na početak prve linije
$FE,$0C isključi kursor
$FE,$0E uključi underline kursor
$FE,$0F uključi blinkajući kursor
$FE,$10 pomeri kursor u levo za 1 mesto
$FE,$14 pomeri kursor u desno za 1 mesto
$FE,$80 vrati kursor na početak prve linije
$FE,$C0 vrati kursor na početak druge linije
$FE,$94 vrati kursor na početak treće linije (za one displaye koji imaju 3 linije)
$FE,$D4 vrati kursor na početak četvrte linije (za one displaye koji imaju 4 linije)

ove komande pišu se iz LCDOUT!

Code: Select all

 LCDOUT $FE, 1 ;briše sve sa LCD-a 
Kod pisanja programa na početku potrebno je napraviti pausu od 0.5sek da se LCD inicializira.

Code: Select all

pause 500 
LCDOUT $FE, 1 ;briše sve sa LCD-a i inicijelizira ga 
ako uzmemo

Code: Select all

 LCDOUT $FE, $C0  ;početak druge linije
onda se podatci upisuju u 2. red.

neki od načina slanja podataka na LCD:

Code: Select all

 LCDOUT $FE, 1, "elektronika.ba"  ; ispisuje u prvu liniju elektronika.ba
LCDOUT $FE, $C0, "elktrophreak ; u drugu liniju ispisuje elektrophreak
LCDOUT $FE, i ; ispisuje neku vrijednost koju smo dodjelili i
http://www.elektronika.ba/forum/uploadz ... ika.ba.JPG

ako npr. želimo da podatak bude zapisan od pete pozicije u prvom redu koristit ćemo sljedeće:

Code: Select all

 LCDOUT $FE, $80+5, "elektro" 
http://www.elektronika.ba/forum/uploadz ... lektro.JPG
da bi vrijednosti neke konstante ili promjenjive na LCD-u predstavili u binearnom obliku koristi se naredba LCDOUT $FE, BIN i
odnosdno da bi bila u heksadekadnom ili dekadnom obliku umjesto BIN koristit će se HEX ili DEC.


ako oćemo npravi ti niz nekog znaka određeni broj puta koristit ćemo REP,
npr. ako želimo da na LCD-u imamo ispisano ***** , naredba bi izgledala LCDOUT $FE, REP "*"\5
znači gdje je "*" upisuje se znak koji se želi ponavaljati i MORA biti pod novodnicima, a 5 predstavlja broj ponvaljanja.

Ovo su bile neke osnovne naznake kod pisanja naredbih za LCD, prilično su jednostavno tako da nebi trebali imati problema sa njima!

Sada ćemo samo pokazati primjer jednog jednostavnog programa koji mjeri frekvenciju na koju dovedemo na željeni ulaz (RB1)

Code: Select all

TRISB.1=1
TRISA=0
BROJ VAR WORD
pause 500        
lcdout $FE, 1
POCETAK:
COUNT PORTB.1,1000,BROJ ' broji impulse na pinu RB1, u periodu od 1S i rezultat  smesta u "BROJ"
lcdout $FE, $80, "COUNT=", dec broj ; ispisuje na LCD-u COUNT= i broj prikazuje kao decimalnu veličinu
pause 10      
GOTO POCETAK
http://www.elektronika.ba/forum/uploadz ... _count.JPG

evo i ja sam se nešto potrudio da doprinesem u učenju pbp-a, ako netko vidi neku grešku u ovome napisanome neka rekne pošto sam još uvjke početnik ko što sam već reko!
a i pedja je reko nadopuniti pa eto vjerujem da će on ako bude kakvi greški il slično ispraviti i nadopuniti tekst!

stavit ću još koji program za LCD čim uhvatim još malo vremena!

i još jednom da pohvalim pedju na trudu, tek sam sada vidio šta znači pisat sav ovaj tekst!!
Attachments
PIC-LCD.gif
(10.03 KiB) Downloaded 1 time
Last edited by Dariolo on 21-10-2008, 17:21, edited 1 time in total.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

super odradjeno. ja cu samo jos dodati kako se koristi define za lcd, tako da se moze spojiti na bilo koji port, cim malo uhvatim vremena....
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

kod koriscenja define upotreba naredbi lcdout se ne menja. define samo definise kako je spojen lcd sa picem. i dodaje se na sam pocetak programa.

DEFINE LCD_BITS 4 'bira se da li lcd radi u 4 bitnom ili 8 bitnom modu
DEFINE LCD_DREG PORTB 'bira se port na koji su zakaceni data biti(d4-d7)
DEFINE LCD_DBIT 0 'pocetni bit data porta. 0 ili 4. ako je postavljen na 0 onda se d4 spaja na rb0,d5-rb1, d6-rb2, d7-rb3,
a ako je postavljen na 4 d4 se spaja na rb4 itd..
DEFINE LCD_RSREG PORTB 'port na koji je zakacena linija RS
DEFINE LCD_RSBIT 4 'bit porta na kome je zakacena linija RS. u ovom slucaju je zakacena na RB4
DEFINE LCD_EREG PORTB 'port na kome je zakacena E linija displeja
DEFINE LCD_EBIT 3 'bit porta na kome je zakacena E linija.
DEFINE LCD_RWREG PORTE 'podesavanje sa RW liniju. mada ovo se ne ubacuje jer se RW vezuje na masu. i time je odabran upis podataka u displej.
DEFINE LCD_RWBIT 2 'RW bit
DEFINE LCD_LINES 2 'broj linija displeja. 1,2,4
DEFINE LCD_COMMANDUS 2000 'kasnjenje komande u ms. po meni je ne potrebno posebno definisati, jer je vec definisano u pbp
DEFINE LCD_DATAUS 50 'kasnjenje podataka u ms.
jos par napomena. umesto potenciometra moze se ubaciti otpornik(2k2) izmedju mase i pina 3. a ako se koristi ra4 sa lcd-om pull up otpornik uglavnom nije potreban jer lcd ima pull up na svim ulasnim pinovima.
kada se radi simulacija u proteusu, tada pull up mora ici...
evo jedan primer spajanja lcd-a na portb.

Code: Select all

DEFINE LCD_BITS 4 
DEFINE LCD_DREG PORTB 
DEFINE LCD_DBIT 0 
DEFINE LCD_RSREG PORTB 
DEFINE LCD_RSBIT 4 
DEFINE LCD_EREG PORTB 
DEFINE LCD_EBIT 5 
DEFINE LCD_LINES 2
pause 100 'cekanje inicijalizacije displeja
lcdout $fe,1, "pozdrav svima" 
end
sema:
Attachments
untitled.GIF
Sema
(36.4 KiB) Downloaded 1 time
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

Imama problem sa lcd.. uzeo sam od mikroelektronike njihov sa plavim osvetlenjem i sve sam uradio po pedjinoj semi jos sam doceo na pin1 gnd, spojio sa pic16f84 u ubacio ovaj pedjin probram i nedaje znake zivota samo svetli osvetlenje i na ekranu nista nepise.... nez do cega moze bit problem :? jel neko imao takav problem :?:
User avatar
Elektronicar
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 467
Joined: 19-01-2008, 17:05
Location: Balkan

Post by Elektronicar »

Nisi pravilno inicijalizovao display ili imas gresku u programu. Takodje proveri kontrast.
koska182
Posts: 11
Joined: 09-06-2007, 01:00

Post by koska182 »

jesi na lcd-u spojio r/w pin (pin 5) na masu?
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

spoj kao na semi. onda izbacis define, i samo pises

Code: Select all

trisa=0
trisb=0
pause 100
lcdout $fe,1,"pozdrav"
end
http://www.elektronika.ba/forum/uploadz ... 14_sch.GIF
Last edited by pedja089 on 20-10-2008, 20:50, edited 2 times in total.
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

PRoradio mi je bilo... i onda smao odjednom opet je zakazalo i sad u prvom redu imam jednu takicu i nista vise.... do cega je to :?: :evil:
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

do protoborda. i meni se to desavalo. napravi neku malu test plocicu sa lcd-om i ostale pinove samo izvuci do kraja plocice....
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

evo ja sam sad probaop program sa define i radi bez problema...
User avatar
Dariolo
Odlično uznapredovao
Odlično uznapredovao
Posts: 822
Joined: 24-08-2006, 23:29
Location: Žepče (BiH), Zagreb (HR)

Post by Dariolo »

Jel može tko da pojasni kod drugih tipova PIC-a (npr. 16f627/628) kako se vrši npr. odabir int/ext oscilatora, odabir dali je pin RA5 MCLR ili I port, ili kako se to zove korištenje njegovih specijalnih registara!

gledao sam po datasheetu od 627 al teško da se snađem, vidim koji se registar koristi za što al neznam kako se to definira u pbp-u.

Jer sam prešao sa 84 na 627, pošto mi je onaj izgorio :twisted: :lol:
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

to su se postavke u programatoru...
bar ih ja sve imam u ovom od mikroelektronike sto ide uz easy pic. a u ic prog imas sa desneza mcle kao strane da biras xt,hs, int osc i mislim da je i tu za mclr. mada malo je nezgodno posle isprogramirati ako se mcle koristi kao io pin. jer u tom slucaju mora prvo da se dovede vpp pa vcc na pic, a to ne podrzavaju svi programatori....
User avatar
Dariolo
Odlično uznapredovao
Odlično uznapredovao
Posts: 822
Joined: 24-08-2006, 23:29
Location: Žepče (BiH), Zagreb (HR)

Post by Dariolo »

znam da ima u programatoru tako sam do sad i postavljo, al kad radim nešto u proteusu onda se javlja problem :?
koska182
Posts: 11
Joined: 09-06-2007, 01:00

Post by koska182 »

ja koristim samo ove za 16f62x

Code: Select all

 	
@ DEVICE INTRC_OSC_NOCLKOUT 
    	' System Clock Options	
	@ DEVICE WDT_ON
		' Watchdog Timer
	@ DEVICE PWRT_ON
		' Power-On Timer
	@ DEVICE MCLR_OFF
		' Master Clear Options (Internal)
	@ DEVICE BOD_ON
		' Brown-Out Detect
	@ DEVICE LVP_OFF
		' Low-Voltage Programming
	@ DEVICE CPD_OFF
		' Data Memory Code Protect
	@ DEVICE PROTECT_OFF
		' Program Code Protection
i mala napomena: trebaš ugasit komparatore (ako ih neces koristit)
s naredbom

Code: Select all

CMCON = 7
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

Jel neko moze da opise sta znaci sta kod fjuzova 12f629.. skontao sam sve samo ne kontam oscilatore :roll: jel moze neko?
shorty
Penjem se :)
Penjem se :)
Posts: 74
Joined: 03-05-2007, 20:10

Post by shorty »

Mene zanima o tom pbp-u ,odakle vama taj program da li je besplatan i gde se moze skinuti?
Pozdrav.
Branez
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 457
Joined: 22-04-2008, 16:27
Location: Maribor(SLO) Koprivnica(HR)
Contact:

Post by Branez »

Da si pročitao iz početka......
pedja089 wrote:http://rapidshare(dot)com/files/142404491/s ... u.rar.html
e ovako. u raru postoje 2 instalacije setup(instalira microcode studio) i pbp 2.44(to je kompajler). ne bitno kojim redom cete instalirati. samo nakon sto oboje instalirate preostaje vam povezati mcs sa kompajlerom.
uputstvo je na slici. znaci samo pokrenite mcs(micro code studio) i pratite uputstva sa slike

http://www.elektronika.ba/forum/uploadz ... titled.GIF

evo jednostavnog napajanja
http://www.elektronika.ba/forum/uploadz ... 088_01.gif
a evo jos jednostavnijeg
http://www.elektronika.ba/forum/uploadz ... titled.GIF
Real Radios Glow in the Dark!
shorty
Penjem se :)
Penjem se :)
Posts: 74
Joined: 03-05-2007, 20:10

Post by shorty »

Ok, vidim izvinjavam se,a je li to full verzija ili neka krekovana,mislim ima li ogranicenja,ako nema onda bih mogao preci sa mickrobasica na taj pbp?
Hvala unapred.
User avatar
Smjesko
Stariji član
Stariji član
Posts: 4012
Joined: 26-12-2005, 17:12

Post by Smjesko »

Skini, instaliraj pa vidi :!:
bora_73
Penjem se :)
Penjem se :)
Posts: 92
Joined: 28-11-2008, 02:18

Re: skraceni kurs ucenja picbasica

Post by bora_73 »

Samo želim da izrazim svoje ogromno oduševljenje kada sam video temu koju sam u celosti pročitao
Mesecima u nazad tražim po netu i raznim literaturama uvakav pristup objašnjenju tematike,.....

svaka čast Peđi sa svim mogućim pohvalama, jedva čekam nastavak,.....

Totalni sam početnik ali već u ovom trenutku imam mogućnost da ispratim kurs od početka tako da ću moći spreman dočekati nastavak kursa, pa se nadam da ću i dalje učestvovati u istom,......

pozdrav!!!!
Post Reply