LCD 4x20 treiberproblem

OP #688937
Lesenswert?

hallo

da ich mich ganz neu mit µC beschäftige habe ich des öfteren kleiner 
probleme die ich hier nachfrage.

diesmal geht es um mein display

ich habe ein display 4X20 von reichelt. betrieben mit einem HD44780 
controller.
den treiber den ich dazu habe ist leider auf den KS0073 geschrieben.der 
treiber funktioniert auch soweit. das problem das ich hab ist das die 
zeilen unterschiedlich aufgeteilt sind (siehe unten)!
nun die frage: im anhang ist der treiber in .a51 und ich komme damit 
nicht so klar ihn umzuschreiben damit die zeilen untereinander sind.
kann mir jemand helfen bzw. hat mir jemand einen passenden code?

danke gruß simon

4x20
zeile1   zeile2  zeile3  zeile4

$00-$13 $40-$53 $14-$27 $54-$67 Kontroller HD44780
$00-$13 $20-$33 $40-$53 $60-$73 Kontroller KS0073
Angehängte Dateien:
Gast #689066
Lesenswert?

Bitte schön!

Aber mal im Ernst: Wenn Du nicht in der Lage bist, das Programm zu
analysieren, mußt Du Dich eben mit Assembler-Programmierung
auseinandersetzen, dafür gibt es genug Tutorials (z.B. erikbuchmann.de).

Und für den Anfang muß es ja nicht gerade eine LCD-Ansteuerung sein.
Gast #689103
Lesenswert?

Hallo Simon!

ich kann dir den Code leider nicht nicht umschreiben aber zu den 
Adressen

>$00-$13 $40-$53 $14-$27 $54-$67 Kontroller HD44780

Muss noch ein Offset von 7Fh Addiert werden.
Begründung: (Zitat von Andreas Reber FH Pforzheim)

Die erste Displayposition hat die DDRAM Adresse 00h, da der Befehl 
jedoch ein MSB mit dem Wert 1 hat, muss man zu jeder Displayposition
den Offset 7Fh addieren um den Datenwert zu erhalten.
Also:
Fangen die einzelnen Displayzeilen bei folgende Adressen an:

Zeile1: 80h
Zeile2: C0h
Zeile3: 94h
Zeile4: D4h

Da ich diesen Offsetwert bei dir nicht entdecken kann gehe ich davon 
aus, das von C aus die Routinen aufgerufen werden.

Mit  _moveto: wird der Cursor ja gesetzt. R7 = Zeile und R5 = Spalte

Wie der Aufruf in C jetzt aussieht weiss ich nicht aber vielleicht es 
dir ja weiter.

Gruß
norad
#689356
Lesenswert?

norad wrote:
> Sorry Hannes!
>
> Die 7Fh ergeben mit der Grundzahl eben die Adressen für die Zeilen eines
> 4 Zeiligen Display mit 20 Zeichen. Also wie oben beschrieben.

Nööö...
Der "Set DD-RAM address"-Befehl besteht aus dem Bit 7 (Wert 128 bzw. 
80h) und der Adresse im DD-RAM. Es muss zur Adresse (Adresse entspricht 
der Ausgabeposition, allerdings verschachtelt) also 128 geORt bzw. 
addiert werden...

Die Adresse beginnt übrigens mit 0.

...

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