mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zum LCD-Tut


Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe mittlerweile mit einem 16 x 2 LCD ( hd44780 ) rumgespielt. Nun 
möchte ich die Position von bestimmten Zeichen auf dem LCD festlegen. 
Ich denke mal, dass folgende Zeilen aus dem LCD-Tut eine Verschiebung 
des Cursors bewirken, oder :

----
        ldi temp1, 0b00101000        ;noch was einstellen...
        rcall lcd_command
        ldi temp1, 0b00001100        ;...nochwas...
        rcall lcd_command
        ldi temp1, 0b00000100        ;endlich fertig
        rcall lcd_command

-----
Was genau wird hier eingestellt ? Ein Blick ins Datenblatt hat schon 
geholfen, allerdings weiß ich immer noch nicht, wie ich den 
Adress-Counter des DDRAMs vom LCD variieren kann, um die Zeichen an eine 
gewünschte Stellen anzeigen zu lassen. Ich hoffe, Jemand kann mir die 
Zeilen kurz erklären.

Gruß

Steffen

Autor: Dieter Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Steffen
Zur Intialisierung des Display
ldi temp1, 0b00101000 ;GG Ram einstellen ????????
ldi temp1, 0b00001100 ;Display einschalten
ldi temp1, 0b00000100 ;RAM inkrementieren nach schreiben eines Zeichens, 
also nächste Speicherstelle einstellen, für nächste Zeichen

Zum setzen einzelner Zeichen auf ein bestimmte Position, mußt du erst 
den DDRAM einstellen und dann das Zeichen schreiben.

DDRAM Setzen MSB 0 1  dann 6 Bits für die Adresse

Z.B.: 0100 0001 oder 0100 0010

Schau aber mal vorher nach, wie die Adressen auf die Zeilen aufgeteilt 
werden. Der Chip läuft auf vielen Anzeigen 2  16 bis 4  20 und 
weitere. Hab ich gerade nicht zur Hand.

MFG
Dieter

Autor: Dieter Brüggemann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Steffen

Kleiner Fehler hat sich da eingeschlichen.

Anstatt
DDRAM Setzen MSB 0 1 dann 6 Bits für die Adresse
Z.B.: 0100 0001 oder 0100 0010

Muß es heißen

DDRAM Setzen MSB 1 dann 7 Bits für die Adresse

Als lcd_command
Zeile 1 Stelle 1  0b10000001
Zeile 1 Stelle 8  0b10001000

Dein Display hat dann die Adressen.

1 Zeile         0 1 2 3 bis 16
2.Zeile        64 65 66 bis 79

MFG Dieter

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steffen, die Initialisierung hat mit dem was du vorhast eigentlich 
nichts zu tun. (Trotzdem sollte ich wohl mal dazuschreiben was diese 
Zeilen genau bewirken.)

Mit dem folgenden Makro kannst du den Cursor auf eine bestimmte Position 
setzen:

;LCD-Cursor an bestimmte Position setzen
.MACRO locate ;(Zeile,Spalte)
        push temp1
        ldi temp1, 0b10000000|(((@0)-1)<<6)|((@1)-1)
        rcall lcd_command
        pop temp1
.ENDMACRO

Aufgerufen wird das ganze einfach so:

        ...
        locate 1,5
        ...

Fast wie in QBasic ;-)

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.