www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

16f877a lcd

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
primozb2005
Član
Član



Pridružen-a: Pon 12 Dec 2005 23:20
Prispevkov: 59
Aktiv.: 0.25
Kraj: vransko-ljubljana

PrispevekObjavljeno: Tor Okt 23, 2007 10:23 pm    Naslov sporočila:  16f877a lcd Odgovori s citatom

Zdravo

Ucim se programirati s pomocjo microC-ja. Imam plosco easypic2,vendar imam probleme pri prikazovanju vrednosti in znakov na lcd displeju. Osvetljene imam vse okvirje v prvi vrstici. Kodo sem ze preveril, preveril sem tudi povezave na lcd display:
Na lcd nimam priključene osvetljitve, kontrast pa lahko spreminjam.
Coda:
char *TEXT = "USPELO";

void main() {
TRISB=0;
Lcd_Init(&PORTB);
lcd_Cmd(Lcd_CLEAR);
Lcd_Cmd(Lcd_CURSOR_OFF);
Lcd_Out(1, 1, text);
}//~!

Kje je se lahko napaka?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bungee
Član
Član



Pridružen-a: Pon 07 Mar 2005 18:49
Prispevkov: 1479
Aktiv.: 6.24
Kraj: Ljubljana

PrispevekObjavljeno: Tor Okt 23, 2007 11:51 pm    Naslov sporočila:   Odgovori s citatom

Težava, ki jo opisuješ je značilna za neinicializiran LCD.... oziroma do njega ni prišlo nič pametnega.

Kako imaš povezan LCD na PIC in ali je inicializacija PICa OK?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
primozb2005
Član
Član



Pridružen-a: Pon 12 Dec 2005 23:20
Prispevkov: 59
Aktiv.: 0.25
Kraj: vransko-ljubljana

PrispevekObjavljeno: Sre Okt 24, 2007 7:50 am    Naslov sporočila:   Odgovori s citatom

inicializacijo izvedem z:

Lcd_Init(&PORTB);

vezava lcd je v prilogi



lcd_16f877a.JPG
 Opis:
 Velikost datoteke:  34.62 KB
 Pogledana:  27 krat

lcd_16f877a.JPG


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Sre Okt 24, 2007 10:10 am    Naslov sporočila:   Odgovori s citatom

Hitrost izvajanja programa zelo zmanjšaj (manjši kristal ali še bolje zunanji nastavljiv oscilator ranga frekvence nekaj kHz). To LCDja nič moti. S tem pa se izogneš čudnim pojavom na linijah. Upam, da nimaš predolgih žic in da je masa med PICem in LCDjem povezana skupaj.

Potem pa z osciloskopom ali multimetrom poglej, kaj se dogaja na dotičnih pinih porta B. Za lažje delo naredi zanko (repeat ali loop) in kompletno to kodo, ki si jo navedel tu, ponavljaš v neskončnost.

Če ne gre, poglej če ti prevajalnik naredi .ASM datoteko in jo odpri v MPLAB-u in tam poženi simulator tvojega procesorčka. In gledaš pine PORTB, kaj se dogaja na njih.

_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.71
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Sre Okt 24, 2007 12:06 pm    Naslov sporočila:   Odgovori s citatom

Mozno je, da se koda, ki se skriva za Lcd_Init(&PORTB) izvede prehitro. LCDju pošlješ en znak, ali spremeniš vrednost signala na pinu in za tem MORAŠ čakati določen čas predpisan v datasheetu, da procesor od LCDja prežveči signal. Načeloma to pomeni tudi, da LCD deluje, potem pa daš hitrejši kristal (quartz), pa vse skupaj ne dela več.

Jur
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
VolkD
Član
Član



Pridružen-a: Pet 24 Sep 2004 21:58
Prispevkov: 14228
Aktiv.: 60.06
Kraj: Divača (Kačiče)

PrispevekObjavljeno: Sre Okt 24, 2007 12:39 pm    Naslov sporočila:   Odgovori s citatom

jur je napisal/a:
Mozno je, da se koda, ki se skriva za Lcd_Init(&PORTB) izvede prehitro. LCDju pošlješ en znak, ali spremeniš vrednost signala na pinu in za tem MORAŠ čakati določen čas predpisan v datasheetu, da procesor od LCDja prežveči signal. Načeloma to pomeni tudi, da LCD deluje, potem pa daš hitrejši kristal (quartz), pa vse skupaj ne dela več.


Opisan primer je najpogostejša napaka pri krmiljenju LCD-jev, ki povzroči največ izgubljenih ur.

_________________
Dokler bodo ljudje mislili, da živali ne čutijo, bodo živali čutile, da ljudje ne mislijo.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
primozb2005
Član
Član



Pridružen-a: Pon 12 Dec 2005 23:20
Prispevkov: 59
Aktiv.: 0.25
Kraj: vransko-ljubljana

PrispevekObjavljeno: Sre Okt 24, 2007 12:47 pm    Naslov sporočila:   Odgovori s citatom

Bom na dodal še zakasnitev:
Delay_ms(1000);

ena sekunda mislim da bo dovolj......bom poskusil sporočil rezultate.

Hvala za namige.
lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
primozb2005
Član
Član



Pridružen-a: Pon 12 Dec 2005 23:20
Prispevkov: 59
Aktiv.: 0.25
Kraj: vransko-ljubljana

PrispevekObjavljeno: Sre Okt 24, 2007 9:07 pm    Naslov sporočila:   Odgovori s citatom

void main() {
CMCON = 0x07;

Lcd_Config(&PORTB,2,3,0,7,6,5,4);
Lcd_Cmd(Lcd_CLEAR);
Lcd_Cmd(Lcd_CURSOR_OFF);
Lcd_Out(1, 1, "MikroE");
Delay_ms(1000);
}

dodal sem zakasnitev, vendar nobene spremembe.Vezavo sem še enkrat pregledal in vse je uredu.
Uporabljam pa tale display: pvc160203p
Oscilator sem uporabil 4MHz

????
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
bungee
Član
Član



Pridružen-a: Pon 07 Mar 2005 18:49
Prispevkov: 1479
Aktiv.: 6.24
Kraj: Ljubljana

PrispevekObjavljeno: Sre Okt 24, 2007 10:05 pm    Naslov sporočila:   Odgovori s citatom

V tej drugi kodi ti takole na oko, manjka LCDInit
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gregorino
Član
Član



Pridružen-a: Tor 15 Jun 2004 22:35
Prispevkov: 10
Aktiv.: 0.04
Kraj: Ptuj

PrispevekObjavljeno: Sre Okt 24, 2007 10:39 pm    Naslov sporočila:   Odgovori s citatom

Koda:

char *text = "mikroElektronika";

void main() {
  TRISB = 0;                // PORTB is output
  Lcd_Init(&PORTB);         // Initialize LCD connected to PORTB
  Lcd_Cmd(Lcd_CLEAR);       // Clear display
  Lcd_Cmd(Lcd_CURSOR_OFF);  // Turn cursor off
  Lcd_Out(1, 1, text);      // Print text to LCD, 2nd row, 1st column
}//~!


Zgoraj imaš napisan program iz mokroC-jeve pomoči, ki je podan kot primer. Vezava je enaka kot na sliki, ki si jo podal.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
primozb2005
Član
Član



Pridružen-a: Pon 12 Dec 2005 23:20
Prispevkov: 59
Aktiv.: 0.25
Kraj: vransko-ljubljana

PrispevekObjavljeno: Čet Okt 25, 2007 7:55 am    Naslov sporočila:   Odgovori s citatom

Hvala,tudi ta primer iz primera sem preizkusil, vendar brez uspeha. Mislim da je napaka v lcd-ju, saj mislim da ne deluje v 4 bitnem načinu. Bom šel kupiti lcd, kakršnega priporočajo pri mikroelektroniki, saj je configuracija izdelana za lcd z hitachi HD44780modulom.

lp
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Čet Okt 25, 2007 10:07 am    Naslov sporočila:   Odgovori s citatom

Si pustil reset mikrokontrolerja v zraku kot na shemi?
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.71
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Čet Okt 25, 2007 3:28 pm    Naslov sporočila:   Odgovori s citatom

Lcd_Config(&PORTB,2,3,0,7,6,5,4);
Lcd_Cmd(Lcd_CLEAR);
Lcd_Cmd(Lcd_CURSOR_OFF);
Lcd_Out(1, 1, "MikroE");
Delay_ms(1000);

Tole seveda nima smisla. Zakasnitev na LCDju je potrebno za vsako operacijo posebej, ne samo na koncu:

Lcd_Config(&PORTB,2,3,0,7,6,5,4);
Delay_ms(1000);
Lcd_Cmd(Lcd_CLEAR);
Delay_ms(1000);
Lcd_Cmd(Lcd_CURSOR_OFF);
Delay_ms(1000);
Lcd_Out(1, 1, "MikroE");
Delay_ms(1000);

Načeloma je možno, da imajo zgoraj navedene procedure že vgrajeno zakasnitev (ne vem), pa posebna zakasnitev ni potrebna.
Pri programiranju v assemblerju pa je pri vsaki manupulaciji z LCDjem potrebno čakati.

Jur
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Čet Okt 25, 2007 4:26 pm    Naslov sporočila:   Odgovori s citatom

Za vsakim ukazom dodaj še en blink neke LEDice, da vidiš, če se program sploh izvaja. Z osciloskopom ali kakšnim drugim orodjem si pregledal signale?
_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
primozb2005
Član
Član



Pridružen-a: Pon 12 Dec 2005 23:20
Prispevkov: 59
Aktiv.: 0.25
Kraj: vransko-ljubljana

PrispevekObjavljeno: Pet Okt 26, 2007 9:07 am    Naslov sporočila:   Odgovori s citatom

USPELO...

Zamenjal sem lcd displaj in sedaj dela. Mislim da je bila napaka, da lcd display ni podpiral 4 bitne priključitve.

Hvala vam za nasvete.

lp Primož
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group