LCD-Adressen

Gast #3830
Lesenswert?

Habe es ausprobiert, funktioniert aber noch nicht.....
mein Display lässt sich nach wie vor nur für die erste und zweite Zeile 
adressieren

Die einzige Möglichkeit um in die dritte Zeile zu kommen ist momentan, 
die erste Zeile mit Zeichen zu überfüllen.
Gast #3831
Lesenswert?

Ein Auschnitt meines Programmes:

init_lcd();

   instruction(0x82); //cursor Line 1
   data('a');         //Zeichen ausgeben
   instruction(0xC2); //cursor Line 2
   data('b');         //Zeichen ausgeben
   instruction(0xA2); //cursor Line 3
   data('a');         //Zeichen ausgeben
   instruction(0xE2); //cursor Line 4
   data('b');         //Zeichen ausgeben
Gast #3832
Lesenswert?

Das "Geheimnis" mit den Adressen ist eigentlich keines

Ich gehe mal von einem KS0070 aus
Der kann 80 Zeichen darstellen
Also von 0 bis 0x4F
Wenn man jetzt 2 Zeilen hat teilt man das einfach
also 0..39 und 40..80
macht dann 0 bis 27h und 27h bis 4fh
Ganz simpel oder ????

Tja leider F a l s c h !!!!!!
Hier denkt ein Dezimalwesen und will einem DIGITAL Alien
Befehle erteilen ........zzzzzzzzz

Verwirrend wird das weil die Zeilen bitweise organisiert werden
Also 128 64 32
obwohl nur 80 Zeichen Dargestellt werden

Wenn mehr zeilen benutzt werden teilt man einfach 128/n
Also 2 Zeilen je 64 oder 4 je 32 oder eben 1*128

Warum ? weil dann der Controller einfach die
jeweilig gesetzten bits auswertet

( Wir versetzten uns in dumpfe 1 und null welt )

Der Controller schläft und saugt zufrieden die Batterie leer
Plötzlich Aufruhr im Gemach
Irgend ein Sack tritt vehement gegen die Enable Tür
Der Controller brauch ca 60us um aus seinem Tiefschlaf zu erwachen
Verärgert schaut er auf seine Ratgeber
RS pennt ( wie üblich der faule wicht )
Aber hoppla RW ist auch nicht wach----strange!
Der Controller wartet noch die eine oder andere us ab
watt mutt datt mutt denkt er sich und schaut mal was sich am Datenport
( Audienzsaal ) so abspielt
Klarer Fall:
Ist D5 gestetzt --> Klaro nächste Zeile
Ist D6 gesetzt ---> nochne Zeile dazu  ... usw
Son Controller wills halt auch einfach haben ( verstehe ich gut )
binn jetzt doch ein kleinwenig ins schwafeln gekommen
:-)


rechnung 0+64=40h
rechnung 0+32=20h
rechnung 0+32+32=40h
rechnung 0+32+32+32=60h

Soweit alles einfach Warum startet dann ein Display bei
80h ????????

Ganz simpel um dem Controller zu signalisieren hier kommen DDRAM
und nicht CGRAM Daten werden die D7 bzw D7D6 Datenbits
Ausgewertet

D7 =1 -> DDRAM Adresse
D7=0 D6=1 ->CGRAM Adresse

Das setzten des D7 bits entspricht aber
Na ???
Was Wohl ????
Richtig die 80h

Also die Null ist in Wirklichkeit eine 80h
Die Adressen laufen nicht 0..80 sondern 0..31 32..63 64..tbc

Na was will der Labersack mir sagen ?
Wie sag ichs meinem LCD ???

Ich will die dritte Zeile 1 position
3. Zeile also 64 also 40h im DDRAM

Damit der dooofe Flussig Stein Anzeigeplatt ( hab ich schon so gelesen )
das kapiert:

Addiere D7 bit als 80h dazu

kommt man also auf 80h+40h = C0h


Alles klar ?


Phagsae
Gast #3833
Lesenswert?

Bitte keine Antworten wie

"es war einmal ein uC, ....Irgend ein Sack tritt vehement gegen die 
Enable Tür
Der Controller brauch ca 60us um aus seinem Tiefschlaf zu erwachen
Verärgert schaut er auf seine Ratgeber
RS pennt ( wie üblich der faule wicht )
Aber hoppla RW ist auch nicht wach----strange!"

Ich kenne eine Anstalt, die.........



Ich möchte nur wissen, wie die vier Adressen für die vier Zeilen bei 
einem 4x16 Zeichendisplay lauten! Kann mir jemand weiterhelfen?
Gast #3837
Lesenswert?

Danke Ingo!

Durch deine Ratschläge und ein paar Tests habe ich nun die richtigen 
Adressen herausgefunden.

Hier die richtigen Adressen für ein 4x16 Display ohne langes Schnick 
Schnack, falls noch jemand diese benötigt:

0x80  1. Zeile 1.Pos
0xC0  2. Zeile 1.Pos
0x90  3. Zeile 1.Pos
0xD0  4. Zeile 1.Pos

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren