Forum: Mikrocontroller und Digitale Elektronik LCD 4x20 treiberproblem


von Simon M. (simonmilde)


Angehängte Dateien:

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

von jack (Gast)


Lesenswert?

Warum willst Du Dich Mikrocontrollern beschäftigen, wenn Du nicht
lernen willst, wie man sie programmiert?

von Simon M. (simonmilde)


Lesenswert?

danke für den hilfreichen  beitrag.

von jack (Gast)


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.

von Simon M. (simonmilde)


Lesenswert?

hast ja prinzipiell recht aber ich a51 hab ich nie geprogt! vergiss es 
einfach! war nur ne frage! brauch mich dafür auch nicht rechtfertigen.

schönen abend noch!

von norad (Gast)


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

von Hannes L. (hannes)


Lesenswert?

> Muss noch ein Offset von 7Fh Addiert werden.

7Fh ???

Ich denke eher 80h...

...

von norad (Gast)


Lesenswert?

@Hannnes!


Das ergibt doch 80h siehe oben! ;-)

von norad (Gast)


Lesenswert?

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.

von Hannes L. (hannes)


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.

...

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.