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
sasa45
Odlično uznapredovao
Odlično uznapredovao
Posts: 518
Joined: 19-01-2007, 07:42
Location: Subotica - Srbija
Contact:

Re: skraceni kurs ucenja picbasica

Post by sasa45 »

to je to tasterima mu dajes stalnu log1 a kad je stisnut daje log0

tako da za tastere promeni kod na

Code: Select all

button PORTA.0, 0, 120, 10, B1, 0, lblDole
button PORTA.1, 0, 120, 10, B1, 0, lblGore
button PORTA.2, 0, 120, 10, B1, 0, lblset 
i treba da radi sve ok
bciric
Napredujem
Napredujem
Posts: 115
Joined: 13-10-2008, 19:58

Re: skraceni kurs ucenja picbasica

Post by bciric »

ma opet isto. mora da mi u simulatoru nesto ne valja. opet si on tera gore pa gore :)
User avatar
sasa45
Odlično uznapredovao
Odlično uznapredovao
Posts: 518
Joined: 19-01-2007, 07:42
Location: Subotica - Srbija
Contact:

Re: skraceni kurs ucenja picbasica

Post by sasa45 »

po meni sad kod mora da radi...nije nista komplikovano pa i bez probe se vidi da je sve ok...
User avatar
sasa45
Odlično uznapredovao
Odlično uznapredovao
Posts: 518
Joined: 19-01-2007, 07:42
Location: Subotica - Srbija
Contact:

Re: skraceni kurs ucenja picbasica

Post by sasa45 »

koji pic koristis...posto ja kad sam radio sa pic16f877a i slucajno sam u podesavanjima ostavio pic16f877...i ispravan kod mi je gresio dok u podesavanjima nisam podesio da je pic16f877a...
koska182
Posts: 11
Joined: 09-06-2007, 01:00

Re: skraceni kurs ucenja picbasica

Post by koska182 »

probaj promijeniti ove varijable B1, u B1, B2, B3 i postavi ih na nulu prije glavne petlje.
ovako:
DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTD
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTD
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTD
DEFINE LCD_EBIT 4
DEFINE LCD_LINES 2
pause 100 'cekanje inicijalizacije displeja
lcdout $fe,1, "pozdrav svima"

SYMBOL TASTER1= PORTA.0
SYMBOL TASTER2= PORTA.1
SYMBOL TASTER3= PORTA.2
B1 var byte : B1 = 0
B2 var byte : B2 = 0
B3 var byte : B3 = 0



INPUT TASTER1 ' sada smo taster proglasili ulazom
INPUT TASTER2
INPUT TASTER3
pocetak:


button PORTA.0, 0, 120, 10, B1, 1, lblDole
button PORTA.1, 0, 120, 10, B2, 1, lblGore
button PORTA.2, 0, 120, 10, B3, 1, lblset
GOTO pocetak
lblGore:
pause 100
LCDOUT $FE, 1 ;briše sve sa LCD-a
lcdout $fe,1, "gore"
GOTO pocetak
lblDole:
pause 100
LCDOUT $FE, 1 ;briše sve sa LCD-a
lcdout $fe,1, "dole"
GOTO pocetak
lblset:
pause 100
LCDOUT $FE, 1 ;briše sve sa LCD-a
lcdout $fe,1, "set"
GOTO pocetak

end
User avatar
sasa45
Odlično uznapredovao
Odlično uznapredovao
Posts: 518
Joined: 19-01-2007, 07:42
Location: Subotica - Srbija
Contact:

Re: skraceni kurs ucenja picbasica

Post by sasa45 »

ja ga resio ovako i proverio na razvojnom sistemu i radi...tastere sam morao prebaciti na portc zato sto radim sa pic16f877

Code: Select all

DEFINE LCD_BITS 4      ' LCD broj Bita na liniji 4 ili 8
DEFINE LCD_DREG PORTB  ' LCD data port
DEFINE LCD_DBIT 0      ' LCD pocetni bit podataka 0 ili 4(od kojeg pina na mikrokontroleru pocinje 0 bit podataka)
DEFINE LCD_RSREG PORTB ' LCD registar select port
DEFINE LCD_RSBIT 4     ' LCD registar select bit (na koji pin na mikrokontroleru je povezan RS bit)
DEFINE LCD_EREG PORTB  ' LCD enable port
DEFINE LCD_EBIT 5      ' LCD enable bit(na koji pin na mikrokontroleru je povezan E bit)
DEFINE LCD_LINES 2 

pause 100 'cekanje inicijalizacije displeja
lcdout $fe,2, "pozdrav svima"

trisc=0

pocetak: 

if portc.0=1 then  lblGore
if portc.1=1 then  lblDole
if portc.2=1 then  lblset
      
GOTO pocetak
lblGore:
    pause 100
    LCDOUT $FE, 1 ;briše sve sa LCD-a   
    lcdout $fe,1, "gore"
    GOTO pocetak
lblDole:
    pause 100
    LCDOUT $FE, 1 ;briše sve sa LCD-a   
    lcdout $fe,1, "dole"
    GOTO pocetak
lblset:
    pause 100
    LCDOUT $FE, 1 ;briše sve sa LCD-a   
    lcdout $fe,1, "set"
    GOTO pocetak  

end
bciric
Napredujem
Napredujem
Posts: 115
Joined: 13-10-2008, 19:58

Re: skraceni kurs ucenja picbasica

Post by bciric »

Ja ovo ne mou nikako da nastimam da radi u proteusu. kod je vise nego ocigledam i treba da radi ali nece. evo u prilogu fajlovi iz proteusa da pogledate gde gresim.
Attachments
proteus.rar
Projekat iz proteusa
(27.72 KiB) Downloaded 482 times
koska182
Posts: 11
Joined: 09-06-2007, 01:00

Re: skraceni kurs ucenja picbasica

Post by koska182 »

samo ubaci liniju

Code: Select all

ADCON1 = %00000111
treba ugasiti analogne ulaze na porta... :)
bciric
Napredujem
Napredujem
Posts: 115
Joined: 13-10-2008, 19:58

Re: skraceni kurs ucenja picbasica

Post by bciric »

To je bio problem :(
hvala ti puno
User avatar
sasa45
Odlično uznapredovao
Odlično uznapredovao
Posts: 518
Joined: 19-01-2007, 07:42
Location: Subotica - Srbija
Contact:

Re: skraceni kurs ucenja picbasica

Post by sasa45 »

pa sto nisi rekao da radis sa pic16f877 on ima na portu a analogne ulaze....
flash005
Posts: 16
Joined: 30-12-2008, 21:28

Re: skraceni kurs ucenja picbasica

Post by flash005 »

Pozdrav svima...

Ovaj kod je copy-paste i helpa..od micro basica....program za mjerenje temperature preko ds1820

program onewire

dim i, j1, j2 as byte
text as string[15]
tmp_sign as byte

main:

text = "Temp:- flash005"
adcon1 = 255 ' configure RA5 pin as digital I/O
PORTA = 255 ' initialize porte to 255
PORTD = 0 ' initialize portb to 255
TRISA = 255 ' designate porte as input
TRISD = 0 ' designate portb as output
Lcd_Init(PORTD)
lcd_cmd(LCD_CURSOR_OFF)
lcd_out(1, 1, text)
lcd_chr(2, 12, 223) ' 'degree' character
lcd_chr(2, 13, "C")

while TRUE
ow_reset(PORTA, 5) ' onewire reset signal
ow_write(PORTA, 5, $CC) ' issue command to DS1820
ow_write(PORTA, 5, $44) ' issue command to DS1820
delay_us(120)
i = ow_reset(PORTA, 5)
ow_write(PORTA, 5, $CC) ' issue command to DS1820
ow_write(PORTA, 5, $BE) ' issue command to DS1820

j1 = ow_read(PORTA, 5) ' get result
j2 = ow_read(PORTA, 5) ' get result (assuming the temperature is positive)

if j2 = $FF then
tmp_sign = "-" ' temperature sign
j1= j1 or $FF ' complement of two
j1= j1 + $01
else
tmp_sign = "+"
end if
j2 = (j1 and $01) * 5 ' Get decimal value
j1 = j1 >> 1 ' Get temp value

ByteToStr(j1, text) ' whole number
lcd_chr(2, 7, tmp_sign)
lcd_chr(2, 8, text[1])
lcd_chr(2, 9, text[2])
lcd_chr(2, 10, 46) ''.'

ByteToStr(j2, text) ' decimal
lcd_chr(2, 11, text[2])

Delay_ms(500)
wend 'endless loop
end.

-------------------------------------------------------------------------------
Međutim ovaj podebljani dio..mi nikako nece u glavu.....

j1= j1 or $FF ' complement of two

nakon ove naredbe .... j1 u bilo kojem slučaju ide na vrijednost FFh što nema nikakvog smisla..:D
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7876
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: skraceni kurs ucenja picbasica

Post by pedja089 »

nisi jedini kome nije jasno :wink:
flash005
Posts: 16
Joined: 30-12-2008, 21:28

Re: skraceni kurs ucenja picbasica

Post by flash005 »

Hehe..... odje bi trebalo doc....j1= j1 not ' tj da zamjeni jedinice i nule....pa se onda doda '1' bar su nas tako učili da se pretvaraju negativni brojevi:D
User avatar
sasa45
Odlično uznapredovao
Odlično uznapredovao
Posts: 518
Joined: 19-01-2007, 07:42
Location: Subotica - Srbija
Contact:

Re: skraceni kurs ucenja picbasica

Post by sasa45 »

ponekad bas zamrzim mikrocipove...i zalim dan kad sam poceo da radim sa njima....prvi put odradi posle vise nece....

hu dobro je dok sam vam pisao kod i objasnjenje koda nasao sam gresku... tako da nemam pitanje...lazna uzbuna...
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Re: skraceni kurs ucenja picbasica

Post by DaTi »

Kupio sam pic18f4550 (zbog usb konekcije) i sve je to lepo proradilo problem je nastao kada sam hteo da spojim lcd na njega. Spajao sam ga po ovoj shemi, kod u pbp za define sam dodao ovaj

Code: Select all

DEFINE  LCD_BITS 4
DEFINE  LCD_DREG PORTD
DEFINE  LCD_DBIT 4
DEFINE  LCD_RSREG PORTD
DEFINE  LCD_RSBIT 2
DEFINE  LCD_EREG PORTD
DEFINE  LCD_EBIT  3
DEFINE  LCD_LINES 2
DEFINE  LCD_DATAUS 40
i neke gluposti po lcd ispisuje... Gde gresim ?? na pic koristim oscilator od 20 mhz.

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

Re: skraceni kurs ucenja picbasica

Post by DaTi »

Resio sam problem, samo sam ga prebacio na portb.
User avatar
cvele
Napredujem
Napredujem
Posts: 165
Joined: 24-01-2007, 14:43
Location: BiH

Re: skraceni kurs ucenja picbasica

Post by cvele »

Moze li neko da objasni postupak citanja temperature sa DS1820 ili nekog drugog temperaturnog senzora u pbp-u?
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Re: skraceni kurs ucenja picbasica

Post by DaTi »

Već je bilo...

Code: Select all

             
            symbol  DQ = PORTb.2             ' Dq linija je povez. na pin RE2
           
            temperatura  Var Word            ' Promen.za cuvanje izmer. temp.
                count_remain Var Byte            ' Ostatak
                count_per_c  Var Byte            ' Ostatak po stepenu C
                
            Pause 100                        ' Pauza za start LCD-a
    Pocetak:
                OWOut DQ, 1, [$CC, $44]      ' Start merenja temperature
    Cekaj:  OWIn DQ, 4, [count_remain]       ' Provera da li jos traje
                If count_remain = 0 Then Cekaj
                OWOut DQ, 1, [$CC, $BE]      ' Procitaj izmerenu temperaturu
                OWIn DQ, 0, [temperatura.LOWBYTE, temperatura.HIGHBYTE, Skip 4, count_remain, count_per_c]
           
               ' Prikazi temperaturu u DEC obliku
           
               temperatura = (((temperatura >> 1) * 100) - 25) + (((count_per_c - count_remain) * 100) / count_per_c)
               Lcdout $fe, 1, "   TEMPERATURA"
               Lcdout $fe, $C0, "      ", DEC (temperatura / 100), ".", DEC2        temperatura, " C"
           Pause 5000                            ' Zadrzi pet sekundi
           
               GoTo Pocetak                      ' Ponovi sve
               End                           ' Kraj programa
Simurgh
Posts: 14
Joined: 06-02-2009, 13:39

Re: skraceni kurs ucenja picbasica

Post by Simurgh »

Jel iko u Proteusu uspio simuirati ovo ocitavanje temperature. Ja se evo cijeli dan patim sa ovim zadnjim kodom i nikako da dobijem zeljenu stvar. Samo mi ispise "TEMPERATURA" i stoji.

koliko vidim izlaz DQ je cijelo vrijeme na "1", nikako ne pada na "0", sto nije logicno. (spojen je na RC0 i na napajanje preko otpornika 4k7)

molim pomoc ako je iko ovo radio, bilo bi idealno da stavi u att ako ima simulaciju sa proteusom koja radi.

evo kod cijeli koji sam koristio :

Define LCD_DREG PORTD
Define LCD_DBIT 4
Define LCD_RSREG PORTE
Define LCD_RSBIT 0
Define LCD_EREG PORTE
Define LCD_EBIT 1
symbol DQ = PORTC.0 ' Dq linija je povez. na pin RC0
ADCON1 = 7 ' Set PORTA and PORTE to digital
Low PORTE.2 ' LCD R/W line low (W)
temperatura Var Word ' Promen.za cuvanje izmer. temp.
count_remain Var Byte ' Ostatak
count_per_c Var Byte ' Ostatak po stepenu C
Pause 100 ' Pauza za start LCD-a
Pocetak:
OWOut DQ, 1, [$CC, $44] ' Start merenja temperature
Cekaj:
OWIn DQ, 4, [count_remain] ' Provera da li jos traje
If count_remain = 0 Then Cekaj
OWOut DQ, 1, [$CC, $BE] ' Procitaj izmerenu temperaturu
OWIn DQ, 0, [temperatura.LOWBYTE, temperatura.HIGHBYTE, Skip 4, count_remain, count_per_c]


temperatura = (((temperatura >> 1) * 100) - 25) + (((count_per_c - count_remain) * 100) / count_per_c)
Lcdout $fe, 1, " TEMPERATURA"
Lcdout $fe, $C0, " ", DEC (temperatura / 100), ".", DEC2 temperatura, " C"
Pause 5000 ' Zadrzi pet sekundi
GoTo Pocetak ' Ponovi sve
End ' Kraj programa
Jms82
Posts: 16
Joined: 14-09-2008, 18:29

Re: skraceni kurs ucenja picbasica

Post by Jms82 »

Prvo da pohvalim pedju za ovaj kurs svaka cast majstore :P

Pratim kurs od pocetka ... iako sam mnoge stvari vezano za piceve znao i ranije , radio sa njima ,
neke stvari sam naucio koje nisam znao.
Zahvaljujem se na tome.

Samo zelim za one koji se pitaju kako mogu ovaj kurs iskoristiti u stvarnom zivotu dati jedan primjer
kako recimo izgleda jedan sklop u industriji zavrsen i perfektno obavlja svoj posao.

http://www.youtube.com/watch?v=QpsZcAY0oLw" onclick="window.open(this.href);return false;

Da vidite da to nije samo paljenje i gasenje Ledica... i da vam to moze jako pomoci u buducnosti...
Imam jos mnogo projekata vezanih za piceve zavrsenih kada budem imao vremena postam ih
ovdje...
Post Reply