Benötige für ein 4x16 Display die Adressen der Zeilen: 1. Zeile Pos.1: 0x80 2. Zeile Pos.1: 0xc0 3. Zeile Pos.1: ????? 4. Zeile Pos.1: ????? Bitte helft mir weiter, mit dem Datenblatt des HD's komme ich leider nicht weiter (ist nicht meine Stärke)
Kann man das lc-display auch im simulatot simulieren oder muss man den programmspeicher immer neu "brennen" um es zu testen??
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.
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
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
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?
Hi, Du hast falsch gerechnet: 0x80 (hex) + 20 (dez) ist nicht 0xA0 ! sondern 0x94 (hex)! Genauso mit der 4. Zeile.... Ich hoffe das hat geholfen. Bis dann, Ingo.
Mann Kurt, da gibt sich jemand die Mühe eine ausführliche Anleitung zu schreiben, und du beschwerst dich auch noch. Warum probierst du nicht einfach aus wo die anderen Zeilen anfangen? MfG Andreas
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.