www.mikrocontroller.net

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


Autor: Michael D. (etzen_michi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
go_to:     push  temp1
           ori   temp1,    0b10000000   ; Set DDRAM
           rcall lcd_command
           rcall delay5ms
           pop   temp1
           ret

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

MfG Spess

Autor: Michael D. (etzen_michi)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael D. (etzen_michi)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael D. (etzen_michi)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.