Sida 1 av 2
Exempelkod i asm för 4x16 lcd/HD44780 efterlyses [Löst]
Postat: 15 januari 2008, 01:31:18
av korp
Sitter här och försöker få liv i en HD44780-kompatibel 16x4 lcd, Powertip 1604X, med 4 bit interface, direkt kopplad till en PIC16F886.
Datablad
Detta är första gången jag försöker mig på att labba med en lcd. Jag har provat
Sodjans kod, men den är för en 16x2 lcd. Vid strömpåslag är varannan rad svart, och sedan rensas skärmen, så vad jag förstår passeras åtminstone initialiseringen. Jag greppar inte riktigt vad jag ska ändra för att få den att fungera med min 4-radare. Känns som det har med adresseringen av rad 3 och 4 att göra, men borde inte något visa sig på rad 1 och 2 ändå?
Finns det någon vänlig själ som har lust att kolla på Sodjans exempel och säga vad som behöver ändras för att exemplet ska funka rakt av med 16x4?
Postat: 15 januari 2008, 07:55:34
av Icecap
Utan att ha kollat med sodjans kod kan jag svara: När teckenbakgrunden blir "jämt grå" är det initierat rätt, sedan är det bara att skicka tecken.
Vad som kanske inte framgår är att den räknar/kan räkna liiiiite konstigt i raderna:
Rad1 pos 1 är "adress" 001
Rad2 pos 1 är "adress" 041
Rad3 pos 1 är "adress" 021
Rad4 pos 1 är "adress" 061
(adresserna: se sid 40 i databladet, "Set DDRAM address")
Detta betyder att man får "fibbla lite" för att få allting till att falla på plats.
Ovanstående adresser är inte nödvändigtvis korrekta men representerar en idé om hur det KAN se ut, du får helt enkelt testa dig fram.
Postat: 15 januari 2008, 11:34:47
av sodjan
Jag har kört mot flera olika helt HD44780 kompatibla displayer,
så jag vet inte vad som kan vara fel. Du kör 4-bit ? Har du kopplat
4 bit-interfacet korrekt ?
Koden bör fungera "rakt av", men inte visa text på alla 4 raderna...
Postat: 15 januari 2008, 12:40:13
av korp
Jag har kollat och dubbelkollat 4-bit interfacet och det ser okay ut. Drar jag ur någon av kablarna i interfacet så passeras heller inte initialiseringen, utan lcd:n stannar med varannan rad svart. Detta borde tyda på att åtminstone den biten är rätt inkopplad.
Jag kan posta mitt kopplingschema när jag kommer hem ikväll. Verkligen tacksam för hjälpen.
Postat: 15 januari 2008, 20:26:04
av korp
Jag har kopplat enligt kommentarerna i exempelkoden, dvs;
Enable till RA0, RS till RA1, D4 till RA4, D5 till RA5, D6 till RA6, D7 till RA7, R/W till GND. Sedan har jag en 50 Kohm pot ansluten till VCC, VO och GND. LCD och PIC16F886 matas av gemensam 5V från labbaggregat.
Icecap: Japp, jag skrev att skärmen rensas, men det stämmer bättre att den blir jämngrå när jag skruvar upp kontrasten lite. Samtliga teckenpositioner är "fyllda". Inte svarta som varannan rad före initialisering, men fyllda med ca 50% intensitet.
Postat: 15 januari 2008, 21:38:37
av Icecap
Då är den initialiserat rätt.
Postat: 15 januari 2008, 22:32:49
av sodjan
Vad heter LCD modulen *exakt* ? Se sidan 2-3 i databladet...
Postat: 16 januari 2008, 00:42:30
av korp
Exakt modell är PC1604LRU-XWA-B-P1
P=Powertip products
C=Teckenmodul
16=Tecken per rad
04=Rader
L=LED bakgrundsbelysning, gul-grön
R=Standardkontakt
U=(LCD typ+färg) STN positiv, gul-grön
X=Modellnamn
WA=Engelska/japanska tecken
B=("Polariseringstyp"/LCD temperaturområde/betraktningsvinkel) Transflektiv, Normal temp, 6:00 riktning
P1=Specialkod (=Osynliga tecken?

)
Postat: 16 januari 2008, 09:40:59
av sodjan
OK, det var "-B-" jag ville verifiera, så det inte var en "extended temp range" LCD.
Då är det inte det i alla fall...
Postat: 16 januari 2008, 23:03:04
av korp
Beställde en vanligare 2-radig LCD idag, så jag lättare kan få bekräftat att min inkoppling fungerar/inte fungerar. Till de finns ju iaf ordentligt med exempel att testa. Värdelöst att sitta här och slita sitt hår när LCD:n kan vara kaputt.
Troligen svårt att få byta 4-radaren om det är fel på den. Jag köper ofta på mig grejer "som kan vara bra att ha", och efter ett år är det surt om grejorna är "dead on arrival"

Postat: 16 januari 2008, 23:06:37
av Kaggen
Kolla att du fått timingen rätt (altså pausen/delayen mellan kommandona). Jag skrev min LCD-rutin själv(för en gammal LCD display, inte samma som du har) och hade ett helskotta innan jag hittade att delayen var fel på ett par ställen. Nu borde väl iofs Sodjans kod funka rakt av, men jag vet inte om du fipplat i koden själv också.
Dessutom beroende på om man väljer 1 eller 2-raders mode (Function set) så skiljer det mycket i kontrast. Trodde ett tag 2-raders mode inte funkade på min för att jag inte såg någon text, tills jag fipplade med kontrasten.
Postat: 16 januari 2008, 23:09:07
av sodjan
> Beställde en vanligare 2-radig LCD idag,
Jag hade kunnat skicka en till dig som jag vet fungerar med min kod
om du hade frågat...
Postat: 16 januari 2008, 23:19:47
av korp
Sodjan, det hade varit väldigt sjysst att få testa en sådan. Det tar säkert över en vecka att få hem den jag beställde. Finns det möjlighet att få en till låns så står jag naturligtvis för frakten.
Postat: 16 januari 2008, 23:39:06
av sodjan
Mail en adress så postar jag en enkel 16x2 LCD i morgon.
Det är en Sharp med original Hitachi 44780 controller.
Jag har aldrig haft några problem med den med olika
testkoder (egna eller från nätet). Jag har t.ex kört en färdig
HEX fil från Wouter van Ooijen på många olika LCD'er.
Kolla på :
http://www.voti.nl/dwarf/index.html
En bit ner, leta efter DN008.hex. Inkopplingen finns i DB017.pdf.
Bara om du vill ha ett testprogram till...
Som sagt mail bara en adress så kommer det en till helgen.
Jag skickar den, jag vill inte ha något för den och du
kan behålla den...
Postat: 22 januari 2008, 00:51:26
av korp
Sodjan, jag fick grejorna idag och lödde på en pinheader direkt under lunchen. Dock uppvisade den nya LCD:n samma problem, så jag kunde iaf halvt konstatera att det är något vajs med min koppling, vilket i själva verket var uppmuntrande.
Rev precis kopplingen och satte upp det hela igen och då såg jag vad jag hade gjort för fel. RA0-RA5 på PIC16F886 är ju i ordning, motsvarande samma stigning på PIC:ens pin-numrering, men jag hade missat att RA7 och RA6 har omvänd ordning. Jag hade alltså kopplat RA6 till D7 och RA7 till D6. Jag har ju för tusan kollat flera gånger utan att upptäcka det

Ställer mig i skamvrån...
Därmed passerades LCD:ns initialisering, även om bitarna var omkastade på de positioner som motsvarar D6 och D7.

Nu fungerar det med både den LCD jag fick från dig, och min ursprungliga 4-radare (har inte testat alla rader än men det syns iaf text).
Ett stort tack för hjälpen, och tiden du la ner på mitt slarv!
Notering till mig själv: Fungerar det inte? Riv skiten. Läs databladet. Gör om. Gör rätt.