PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD-Problem



DDenjo
02.07.2005, 17:39
Hallo,
ich programmiere zur Zeit mit einem PIC 18F248 eine Ansteuerung für ein LC-Display.
Nachdem es Anfangs noch ganz gut voran ging (Initialisierung & erste Zeichen ausgeben) stecke ich jetzt bei einer "Kleinigkeit" fest wo ich nicht mehr wirklich weiter weiß.

Habe eine kleine Routine geschrieben, dass ein Zeichen ausgegeben wird und danach der Adresszähler um 1 erhöht wird. Das klappt mit den ersten 8 Zeichen auch wunderbar! (RAM-Adresse 00h-07h)
Dann setze ich die Adresse des DD-RAM auf 40h um die Zeichen von 9-16 ausgeben zu können. (Die Adresse steht so im Datenblatt)

Die Zeichen von 9-16 wurden auch angezeigt. Also müsste die Programmierung für den Adressensprung auch richtig sein.
Nur dummerweise sehe ich dann nur noch (!!!) die Zeichen von 9-16.
Die Zeichen von 1-8 sind verschwunden.

Meine Frage: WAS MACHE ICH FALSCH???
Dachte, wenn ich die Adresse auf 40h setze, bleibt der RAM-Inhalt so erhalten und die Zeichen von 1-8 müssten noch da stehen wo sie waren?!

Es ist ein 1 Zeiliges Display mit 16 Zeichen! (HD44780)
Habe es als 2 zeilen Display Initialisiert (8+8)

Vielleicht sollte ich noch erwähnen, dass ich nicht wirklich weiß, woher und von welcher Firma das Display ist. Die Beschriftung darauf ist auch etwas mager. Weiß also nicht genau, ob die Sache mit meiner 2-Zeilen-Initialisierung wirklich so richtig ist.
Aber da er die Zeichen ab Adresse 40h anzeigt, kann es ja eigentlich nicht falsch sein?!

So, dann hoffe ich mal, dass mir jemand weiterhelfen kann.

ciao, DDenjo

the_Ghost666
03.07.2005, 10:49
das trift sich gut, genau damit hab ich auch grad ein problem,
also ich habs so gemacht,dass ich den Displayshift ausschalte und von selbst nach jedem eingegeben zeichen den Cursor einen nach links schiebe, damit ich solange auf der stelle durch die zeichen scrollen kann, wie ich es brauche, dann benutz ich das kommando zum Cursor verschieben um mit meiner "weiter" taste zur nächsten stelle zu kommen. wenn die ersten 8 voll sind, sag ich ihm, er soll den cursor an adresse 40h setzen, danach schreibt der auch weiter und zeigt beide zeilen an.
mein problem ist nur, dass er die 9. Displaystelle verschluckt, wenn ich weiterschreibe klappts ab stelle 10. problemlos.
kann es sein, dass du den Displayshift angelassen hast, und damit vielleicht die anderen zeichen wegshiftest? du kannst auch einfach mal das display mit 4 zeichen pro sekunde oder so durchlaufen lassen, dann kannst du vielleicht sehen, ob deine erste zeile weg oder nur verschoben ist.
du schreibst, dass deine routine den adresszähler erhöht, aber das macht doch das lcd schon selbst, oder meinstest du das ?
mein problem ist, dass der cursor eben nicht nach dem setzen auf 40h erscheint.
wenn du in assembler progst, können wir uns mal am besten per icq kurzschließen, hier meine uin 347386774

the_Ghost666
03.07.2005, 10:50
achja, haste mal bei sprut.de geschaut? unter dotmatrix displays gibts ne gute einführung

DDenjo
07.07.2005, 19:22
Hey,
danke für die Antwort Ghost666. Habe da die Sache mit den Adressen und dem betreiben vom Display noch nicht ganz verstanden gehabt. ;o)

Aber jetzt funktioniert es einwandfrei. Der Fehler lag an meiner Adressenerhöhung (und anderen Kleinigkeiten).
Ist natürlich falsch gewesen!!!

Habe jetzt aber noch ein anderes "Problem", wo ich nicht weiter weiß.

Obwohl ich den Cursor ausgestellt habe, wird mir an der aktuellen Position unten ein kleiner Strich angezeigt. Wie bekomme ich den noch weg?
Der eigentliche Cursor ist doch mit einem schwarzen Feld dargestellt?!

Weiß noch jemand eine Antwort auf diese Frage?

Danke schon mal!!!

the_Ghost666
08.07.2005, 11:36
nein , du kannst dir aussuchen obs ein unterstrich oder ein blinkender block ist. schau mal dass du beides deaktivierst, dann hast du gar keinen. den befehl weiß ich leider nicht auswendig aber bei sprut steht er gut beschrieben, eben an der selben stelle wie du den blockcursor ausstellst.
aber kannst du oder jemand anders vielleicht bei meinem problem helfen?
Ich will eine programmierbare Laufschrift auf einem 1x16 zeichen lcd machen.
also was muss ich anstellen, damit ich es in einem stück lesbar über das display scrollen lassen kann? wenn ich einfach nur die sichtbaren teile beschreibe und dann shiften lasse, verliert sich der zusammenhang.

08.07.2005, 14:04
Hey, danke wieder!
Werd mal danach gucken.

Bei deinem Problem kann ich dir leider nicht helfen.... noch nicht!
Wenn wir unser Projekt hier fertig haben (ist noch etwas umfangreicher), werd ich mich auf jeden Fall noch weiter mit Displays beschäftigen. Und dann auch ausführlicher!
Aber bis ich soweit sein werde, hast du wahrscheinlich eh keinen bedarf mehr an einer Antwort! ;o)

Also, danke nochmal und viel Erfolg!!!