Behöver hjälp med att få LCD fungera på PIC18F458
Re: Behöver hjälp med att få LCD fungera på PIC18F458
Och sedan står det i databladet för displayen att man INTE KAN KOLLA BUSY innan displayen är initierat!
Re: Behöver hjälp med att få LCD fungera på PIC18F458
RTFM igen.pin 7 DB0 - pin 2 RA0
pin 8 DB1 - pin 3 RA1
pin 9 DB2 - pin 4 RA2
pin 9 DB3 - pin 3 RA3
Man använder DB4-DB7 när man kommunicerar med 4 datalinor, aldrig DB0-DB3.
Så i ditt fall skall det bli så här:
Kod: Markera allt
pin x DB4 - pin 2 RA0
pin y DB5 - pin 3 RA1
pin z DB6 - pin 4 RA2
pin w DB7 - pin 3 RA3
Kod: Markera allt
/* When in 4-bit interface define if the data is in the upper
* or lower nibble. For lower nibble, comment the #define UPPER
*/
/* #define UPPER */
Dessutom finns det en alldeles utmärkt beskrivning av HD44780 på wikin
http://www.elektronikforumet.com/wiki/i ... le=HD44780
Re: Behöver hjälp med att få LCD fungera på PIC18F458
> Man använder DB4-DB7 när man kommunicerar med 4 datalinor, aldrig DB0-DB3.
Se "Interface pin description" på sidan 2/9 här för detaljer :
http://www.sparkfun.com/datasheets/LCD/ ... tended.pdf
Som TomasL säger så fungerar alla HD44780 (eller kompatibla) LCD'er så.
Se "Interface pin description" på sidan 2/9 här för detaljer :
http://www.sparkfun.com/datasheets/LCD/ ... tended.pdf
Som TomasL säger så fungerar alla HD44780 (eller kompatibla) LCD'er så.
Re: Behöver hjälp med att få LCD fungera på PIC18F458
> Man använder DB4-DB7 när man kommunicerar med 4 datalinor, aldrig DB0-DB3.
Se "Interface pin description" på sidan 2/9 här för detaljer :
http://www.sparkfun.com/datasheets/LCD/ ... tended.pdf
Som TomasL säger så fungerar alla HD44780 (eller kompatibla) LCD'er så.
EDIT: Oops, dubbelpost, hur det nu gick till...
Se "Interface pin description" på sidan 2/9 här för detaljer :
http://www.sparkfun.com/datasheets/LCD/ ... tended.pdf
Som TomasL säger så fungerar alla HD44780 (eller kompatibla) LCD'er så.
EDIT: Oops, dubbelpost, hur det nu gick till...

Senast redigerad av sodjan 23 april 2011, 22:08:59, redigerad totalt 1 gång.
- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Behöver hjälp med att få LCD fungera på PIC18F458
Det verkar väl som att problemet i sig är att fel pinnar har använts på LCDn.
Felet skulle vem som helst kunnat ha gjort oavsett om man skrivit koden själv eller
använt något färdigt.
Vissa inlägg osar av "låg blodsockerhalt", blir trist och tråkigt att läsa....
Swech
Felet skulle vem som helst kunnat ha gjort oavsett om man skrivit koden själv eller
använt något färdigt.
Vissa inlägg osar av "låg blodsockerhalt", blir trist och tråkigt att läsa....
Swech
Re: Behöver hjälp med att få LCD fungera på PIC18F458
Problemet är när vi inte har en chans att gissa felet utifrån den
tillgängliga information. Om kopplingen PIC/LCD hade varit med
i första inlägget så hade det kanske blivit en ganska kort tråd...
tillgängliga information. Om kopplingen PIC/LCD hade varit med
i första inlägget så hade det kanske blivit en ganska kort tråd...

- Swech
- EF Sponsor
- Inlägg: 4750
- Blev medlem: 6 november 2006, 21:43:35
- Ort: Munkedal, Sverige (Sweden)
- Kontakt:
Re: Behöver hjälp med att få LCD fungera på PIC18F458
"Problemet är när vi inte har en chans att gissa felet utifrån den
tillgängliga information"
När har vi det då? Det som gör trådarna underhållande och framför allt lärorika
är när man får den där aha upplevelsen "det var det som var problemet"
Lite samma som att se på dr House. Det brukar ju ta 45 minuter för dem att komma fram
till att det var en vanlig förkylning som låg bakom....
Det visade sig ju i slutänden att de färdiga rutinerna säkerligen fungerar helt som det är tänkt och inte är "rena skiten".
Jfri lär nog knappast ställa fler frågor om han kör fast igen eftersom han då
verkar hållas personligt ansvarig för hur de förkompilerade rutinerna funkar.
Men nu är det säkert tionde gången jag går in i trådar som jag tycker spårar ur.
det börjar bli j...ligt tröttsamt.
Swech
tillgängliga information"
När har vi det då? Det som gör trådarna underhållande och framför allt lärorika
är när man får den där aha upplevelsen "det var det som var problemet"
Lite samma som att se på dr House. Det brukar ju ta 45 minuter för dem att komma fram
till att det var en vanlig förkylning som låg bakom....
Det visade sig ju i slutänden att de färdiga rutinerna säkerligen fungerar helt som det är tänkt och inte är "rena skiten".
Jfri lär nog knappast ställa fler frågor om han kör fast igen eftersom han då
verkar hållas personligt ansvarig för hur de förkompilerade rutinerna funkar.
Men nu är det säkert tionde gången jag går in i trådar som jag tycker spårar ur.
det börjar bli j...ligt tröttsamt.
Swech
Re: Behöver hjälp med att få LCD fungera på PIC18F458
Nej, "rena skiten" är de säkert inte. 
Aja, det är lite synd att man (d.v.s vi andra inkl mig) inte börjar
med att fråga om de *enkla* felen. Man träffar ofta ganska rätt
genom att gissa på "felkopplat" när något inte fungerar...

Aja, det är lite synd att man (d.v.s vi andra inkl mig) inte börjar
med att fråga om de *enkla* felen. Man träffar ofta ganska rätt
genom att gissa på "felkopplat" när något inte fungerar...

Re: Behöver hjälp med att få LCD fungera på PIC18F458
Nu har jag kopplat om databitarna till DB4-DB7 men det fungerar ändå inte. Mäter att de fyra databitarna förblir höga vilket innebär att BusyXLCD() returnerar ett och därmed
att
while( BusyXLCD() ); //FASTNAR HÄR
att
while( BusyXLCD() ); //FASTNAR HÄR
Re: Behöver hjälp med att få LCD fungera på PIC18F458
OK.
Det är inte alltid man bryr sig om "busy", man har oftast inte mer
bråttom att skriva till en LCD än att man kan vänta "tillräckligt"
länge i alla fall.
Jag utgår från att du har kvar en ordentlig delay i början *innan*
LCD anropen så att allt hinner stabilisera sig.
> Mäter att de fyra databitarna förblir höga...
Och R/W linjen ?
Aja, skitsvårt att säga något om det när man inte har prylarna
framför sig. Det kan ju vara fler småfel som det med fel pinnar...
Det är inte alltid man bryr sig om "busy", man har oftast inte mer
bråttom att skriva till en LCD än att man kan vänta "tillräckligt"
länge i alla fall.
Jag utgår från att du har kvar en ordentlig delay i början *innan*
LCD anropen så att allt hinner stabilisera sig.
> Mäter att de fyra databitarna förblir höga...
Och R/W linjen ?
Aja, skitsvårt att säga något om det när man inte har prylarna
framför sig. Det kan ju vara fler småfel som det med fel pinnar...
Re: Behöver hjälp med att få LCD fungera på PIC18F458
R/W linjen sätts hög i början av BusyXLCD och sedan låg igen innan funktionen avslutas så den bör vara hög för det mesta och kortvarigt vara låg. Detta är också vad jag ser på oscilloskopet. Däremot så ser jag inga pulser på E linjen vilket borde vara fallet. Kör jag i MPLABsim ser jag att RA4 sätts clears som den ska i BusyXLCD. Använder ett RIGOL DS1052E oscilloskop. Och ja jag har en lång fördröjning innan jag börjar initiera LCDn.
Re: Behöver hjälp med att få LCD fungera på PIC18F458
RA4.... Hm... (Letar i databladet...) HA !
Ja men då så...Digital I/O - open drain when configured as output.
Re: Behöver hjälp med att få LCD fungera på PIC18F458
Det skulle vara intressant att få reda på om det är någon som fått XLCD-rutinerna i C18 att fungera i 4-bitars mode?
Jag har aldrig använt rutinerna själv men om man tittar på hur initieringen görs i 4-bitars mode så blir man lite fundersam. Nedan följer utdrag ur filen openxlcd:
//-------------------reset procedure through software----------------------
WriteCmdXLCD(0x30);
Delay10KTCYx(0x05);
WriteCmdXLCD(0x30);
Delay10KTCYx(0x01);
WriteCmdXLCD(0x32);
while( BusyXLCD() );
//-----------------------------------------------------------------------------------------
WriteCmdXLCD(0x30) delar upp 0x30 i 2 delar och sänder först 3 och sedan 0 till LCD:n!!!!
Hur har man tänkt att detta ska fungera vid initieringen av LCD:n?
Jag har aldrig använt rutinerna själv men om man tittar på hur initieringen görs i 4-bitars mode så blir man lite fundersam. Nedan följer utdrag ur filen openxlcd:
//-------------------reset procedure through software----------------------
WriteCmdXLCD(0x30);
Delay10KTCYx(0x05);
WriteCmdXLCD(0x30);
Delay10KTCYx(0x01);
WriteCmdXLCD(0x32);
while( BusyXLCD() );
//-----------------------------------------------------------------------------------------
WriteCmdXLCD(0x30) delar upp 0x30 i 2 delar och sänder först 3 och sedan 0 till LCD:n!!!!
Hur har man tänkt att detta ska fungera vid initieringen av LCD:n?
Re: Behöver hjälp med att få LCD fungera på PIC18F458
Så länge inte "problemet" med RA4 är löst, så finns det ingen
större anledning att leta efter andra eventuella problem.
större anledning att leta efter andra eventuella problem.
Re: Behöver hjälp med att få LCD fungera på PIC18F458
Har använt dem rakt av utan problem.
uChips bibliotek hanterar alla fördröjningar utan problem.
Initiering av en display.
Tycker fortfarande du borde läsa manualerna.
Eftersom 0X00 inte finns som kommando, skiter displayen i det.
Vad rutinen gör, vilket är helt rätt, är:
Skifta 0x30 fyra höger mata ut det
mata ut 0, vilket displayen inte skall bry sig om,
Upprepa en gång
skifta 0x32 fyra höger
mata ut 3
mata ut 2
Detta under förutsättning att du kör "Low Nibble"
Men som Sodjan säger fixa till Hårdvaran så den kan fungera först.
uChips bibliotek hanterar alla fördröjningar utan problem.
Initiering av en display.
Kod: Markera allt
PON
dly15m
0x3 INIT
dly5m
0x3 INIT
dly100u
0x3 INIT
dly40u
0x2 INIT
dly40u
0x2 "4-Bit Data"
dly1u
0x8 "2 line" "5x7"
dly40u
0x0 Entry mode
dly1u
0x6 Entry mode "Increment" "no shift"
dly40u
0x0 ON/OFF
dly1u
0xE "Disp ON" "Curs ON" "Blink OFF"
dly40u
0x0 DISP Clear
dly1u
0x1 DISP Clear
dly2m
Eftersom 0X00 inte finns som kommando, skiter displayen i det.
Vad rutinen gör, vilket är helt rätt, är:
Skifta 0x30 fyra höger mata ut det
mata ut 0, vilket displayen inte skall bry sig om,
Upprepa en gång
skifta 0x32 fyra höger
mata ut 3
mata ut 2
Detta under förutsättning att du kör "Low Nibble"
Men som Sodjan säger fixa till Hårdvaran så den kan fungera först.