Forum: Mikrocontroller und Digitale Elektronik LCD erste Zeile adressieren -> Fehler


von Fabian (Gast)


Angehängte Dateien:

Lesenswert?

Hi,
bin noch Einsteiger und spiele derzeit mit dem Atmega8 rum. Habe mir
eigenständig eine LCD für ein 4x16 dot matrix display mit HD44780A
Controller gebastelt und bin derzeit dabei noch ein bisschen etwas
einzubauen... habe ein Makro entwickelt, mit dem ich texte senden kann,
dann die zeile ansage und schließlich die leerzeichen in der Zeile,
bevor der text geschrieben wird.
Das ganze klappt in den Zeilen 2-4 auch wunderbar.
Nur in Zeile 1 funktioniert das überhaupt nicht. Entweder er ignoriert
die Leerzeichen einfach und fängt an Position 1 an oder er gibt
Schriftzeichensalat raus bzw. nur den ersten Buchstaben oder andern
mist.
Weiß jmd. vielleicht was ich noch falsch gemacht haben könnte?
Der Code liegt als Anhang bei. Ich entschuldige mich jetzt schon mal
für meinen wahrscheinlich sehr newbischen und dreckigen code.

von thkais (Gast)


Lesenswert?

.EQU Z1 = $00  ; Zeile 1 = $00
.EQU Z2 = $C0  ; Zeile 2 = $C0
.EQU Z3 = $90  ; Zeile 3 = $90
.EQU Z4 = $D0  ; Zeile 4 = $D0

Nimm mal für Z1 den Wert $80.

von Fabian (Gast)


Lesenswert?

Vielen Dank!
Jetzt gehts! Aber würde mich trotzdem mal interessieren, wo das im
Datenblatt steht, hatte nämlich schon vermutet, dass die $00 falsch
sind, konnte aber kein Ersatz im Datenblatt finden.

von thkais (Gast)


Lesenswert?

$80 = Binär 10000000. Das gesetzte 7.Bit zeigt dem Display-Controller
an, dass die Display-RAM Adresse gesetzt werden soll. Bei den anderen
Positionen sieht man auch, dass immer das 7. Bit gesetzt ist. Lässt man
das weg, bekommt man die tatsächlichen Adressen im Display RAM:
Zeile1 = $00, Zeile2 = $40, Zeile3 = $10, Zeile4 = $50. So sieht man
auch, dass die dritte(!) Zeile direkt im Anschluss auf die erste Zeile
folgt, d.h. wenn man mehr als 16 Zeichen in die erste Zeile schreibt,
kommen sie in der dritten heraus.
Steht mit Sicherheit im Datenblatt, hast Du wahrscheinlich übersehen
;)
Schau Dir mal genau die Tabelle mit den Commands an.

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
Noch kein Account? Hier anmelden.