Forum: Mikrocontroller und Digitale Elektronik HD44780 Kompatibles Display "LF"


von Michael D. (etzen_michi)


Angehängte Dateien:

Lesenswert?

Guten Tag.

Ich bin ja dabei das Tutorial durch zu gehen, und da habe ich nun 
nochmal wieder eine Frage ^^.

Im Tutorial steht dass das LF (ASCII 0A) für Zeilenvorschub steht.
Also verstehe ich das so dass wenn ich in der oberen Reihe schreibe, 
einen LF mache und dann weiter schreibe das in die untere Reihe 
geschrieben wird.

Leider funktioniert das bei meinem Display nicht so.
Ich habe die lcd-routines.asm wie im Anhang und schreibe zur Ausführung:

ldi temp1, 0x0A
rcall lcd_data

Ich habe bereits das Datenblatt rausgesucht für den Controller 
(S6A0069X) welcher zweimal auf der Platine vorhanden ist (nehme mal an 
E1 und E2) sowie (S6A2067X) welcher dreimal auf der Platine vorhanden 
ist (so wie ich verstehe damit der S6A0069X über diesen ausreichend 
Pixel ansteuern kann.

Leider werde ich aus den Datenblättern nicht schlau wie ich in die 
zweite Zeile springen kann.

Habe da zwar sowas gefunden wie DDRAM, aber leider nicht welche Adresse 
für welche Position steht, wie sich die Adresse pro "Byte" verändert.

Ich kann zwar in die zweite Zeile indem ich die erste vollschreibe (40 
Zeichen) aber das ist ziemlich umständlich.

Display ist ein Displaytech 404B. Mehr steht leider nicht drauf. 
Controller ist HD44780 kompatibel.

(Codebelegung des Displays angehängt, da drei verschiedene Vorhanden)

von spess53 (Gast)


Lesenswert?

Hi

LC-Displays kennen $0A nicht. Du musst den Cursor manuell auf den Anfang 
der 2.Zeile setzen.

Füge mal das Unterprogramm in deine Code ein
1
go_to:     push  temp1
2
           ori   temp1,    0b10000000   ; Set DDRAM
3
           rcall lcd_command
4
           rcall delay5ms
5
           pop   temp1
6
           ret

mit
1
          ldi temp1,$40
2
          rcall go_to
kommst du an den Anfang der 2.Zeile

MfG Spess

von Michael D. (etzen_michi)


Lesenswert?

Kann man da auch

ldi temp1, $C0
rcall lcd_command
rcall delay_5ms

machen?


Spart man paar Zyklen
push
ori
pop
Und natürlich den Sprung zum Unterprogramm go_to

von Michael D. (etzen_michi)


Lesenswert?

Nochmal ne andere Frage:

Der ASCII Code für das "ä" ist falsch, sodass ich den manuell einfügen 
muss (E1) .. kann ich das irgendwo hinterlegen?

von spess53 (Gast)


Lesenswert?

Hi

>Kann man da auch

>ldi temp1, $C0
>rcall lcd_command
>rcall delay_5ms

>machen?

Kann man. Nur dem Code von mir wird die Adresse übergeben. Damit kann 
man auch an andere Stellen springen.

MfG Spess

von Michael D. (etzen_michi)


Lesenswert?

Hast recht ... ein wenig komisch aber man kommt mit zurecht ^^.

Mein Display geht ja bis $27 .. bei $28 schreibt er alles in die zweite 
Zeile. Bei $29 auch, aber bei $30 zeigt er nichts an.  Bei $38 schreibt 
er einen Buchstaben nicht, bei §39 und §40 schreibt er alles in die 
zweite Zeile .... Naja soll mir egal sein .. ich kan es ausreichend 
positionieren.

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.