Behöver hjälp med att få LCD fungera på PIC18F458

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Icecap
Inlägg: 26654
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av Icecap »

Och sedan står det i databladet för displayen att man INTE KAN KOLLA BUSY innan displayen är initierat!
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46998
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av TomasL »

pin 7 DB0 - pin 2 RA0
pin 8 DB1 - pin 3 RA1
pin 9 DB2 - pin 4 RA2
pin 9 DB3 - pin 3 RA3
RTFM igen.
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
Pin x-w är pinnnumreringen på din LCD, den får du leta reda på själv.

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 */
Har inte riktigt stt mig in i vad detta gör, men gissar att det definierar vilken del av PICens port man använder, så den skall vara bortkommenterad.

Dessutom finns det en alldeles utmärkt beskrivning av HD44780 på wikin
http://www.elektronikforumet.com/wiki/i ... le=HD44780
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av sodjan »

> 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å.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av sodjan »

> 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... :-)
Senast redigerad av sodjan 23 april 2011, 22:08:59, redigerad totalt 1 gång.
Användarvisningsbild
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

Inlägg av Swech »

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
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av sodjan »

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... :-)
Användarvisningsbild
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

Inlägg av Swech »

"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
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av sodjan »

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... :-)
jfri
Inlägg: 180
Blev medlem: 1 februari 2010, 21:41:20

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av jfri »

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
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av sodjan »

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...
jfri
Inlägg: 180
Blev medlem: 1 februari 2010, 21:41:20

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av jfri »

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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av sodjan »

RA4.... Hm... (Letar i databladet...) HA !
Digital I/O - open drain when configured as output.
Ja men då så...
ghu
Inlägg: 701
Blev medlem: 6 juni 2010, 14:28:18

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av ghu »

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?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av sodjan »

Så länge inte "problemet" med RA4 är löst, så finns det ingen
större anledning att leta efter andra eventuella problem.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46998
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Behöver hjälp med att få LCD fungera på PIC18F458

Inlägg av TomasL »

Har använt dem rakt av utan problem.
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
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.
Skriv svar