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
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
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
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.