mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2. Zeile vom LCD beschreiben


Autor: Malte P. (malte-cux)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

ich habe anhand des AVR-Tutorials mich mit dem LCD EA DIP162-D 
beschäftigt.
Wenn ich so wie beschrieben vorgehe, erscheint auch in der ersten Zeile 
der Text.

Meine Frage ist wie ich nun etwas in die zweite Zeile schreiben kann.

Habe versucht die Adresse des Cursors zu verändern...
Aber ohne Erfolg.

Im Anhang das Datenblatt des LCD´s

Die Datei lcd-routines.asm ist unverändert zu dem Tut. Dort ist auf 4 
bit und eigentlich auch 2 Zeile eingestellt.
Warum muss ich diese Datei eigentlich am Ende meines Quellcodes 
"includen"?

Hier der Quellcode:

.include "m8def.inc"         ; Definitionsdatei für den Prozessortyp 
einbinden

.def temp1 = r16
.def temp2 = r17
.def temp3 = r18


           ldi temp1, LOW(RAMEND)      ; LOW-Byte der obersten 
RAM-Adresse
           out SPL, temp1
           ldi temp1, HIGH(RAMEND)     ; HIGH-Byte der obersten 
RAM-Adresse
           out SPH, temp1

           ldi temp1, 0xFF    ; Port D = Ausgang
           out DDRD, temp1

           rcall lcd_init     ; Display initialisieren
           rcall lcd_clear    ; Display löschen


     ldi temp1, ' '     ; Zeichen anzeigen
           rcall lcd_data

     ldi temp1, ' '     ; Zeichen anzeigen
           rcall lcd_data

     ldi temp1, ' '     ; Zeichen anzeigen
           rcall lcd_data

     ldi temp1, 'T'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 'e'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 's'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 't'     ; Zeichen anzeigen
           rcall lcd_data

     ldi temp1, 0b10100001
     rcall lcd_command

     ldi temp1, 'T'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 'e'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 's'     ; Zeichen anzeigen
           rcall lcd_data

           ldi temp1, 't'     ; Zeichen anzeigen
           rcall lcd_data




loop:
           rjmp loop


.include "lcd-routines.asm"            ; LCD-Routinen werden hier 
eingefügt



Viele Grüße
Malte

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>     ldi temp1, 0b10100001
>     rcall lcd_command

Wie kommst du auf die DDRAM-Adresse $21. Normalerweise beginnt die 
2.Zeile an der Adresse $40.

MfG Spess

Autor: Malte P. (malte-cux)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie kommst du auf $21 bzw $40?

habe jetzt mal folgendes draus gemacht:

ldi temp1, $40
rcall lcd_command

das ändert aber leider nichts an meiner Anzeige.

wer kann helfen?

Viele Grüße
Malte

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>habe jetzt mal folgendes draus gemacht:

>ldi temp1, $40
>rcall lcd_command

Du hast dir schon mal die Befehlsbeschreibung angesehen?

Der Befehl 'Set DDRAM Address' ist $1xxxxxxx. Wobei xxxxxxx die Adresse 
ist.

Also das so nichts werden.

MfG Spess

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Malte P. schrieb:
> Wie kommst du auf $21 bzw $40?

Das ist das Befehlsbyte von dir

>     ldi temp1, 0b10100001


also   0b10100001

Die linkste 1 ist konstant und kennzeichnet für das LCD das es sich um 
das Kommando "Set DDRAM Adress" handelt. Die muss also dort bleiben. 
Lässt du diese 1 daher mal links liegen

       0b.0100001

bzw ersetzt du Bits die du, da sie zur Kodierung des Befehls gebraucht 
werden und daher nicht zu den 'Daten' gerechnet werden können, durch 0 
dann bleibt

       0b00100001

und das ist nun mal Hex 21

> ldi temp1, $40

Da ist aber das 1 Bit an der Bitposition 7, welches das Kommando 'Set 
DDRAM Adress' kennzeichnet nicht gesetzt. Das musst du schon setzen.

Was auch immer du für eine Adresse willst, also zb hex 40

     0100 0000

du musst auch noch das 7 Bit setzen um den Befehl zu kennzeichnen

     1100 0000


Was musst du daher zum LCD schicken, um den Cursor an die DDRAM Adresse 
$40 zu setzen?

Autor: Malte P. (malte-cux)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jo danke, jetzt läufts...

--> ldi temp1, 0b11000000

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.