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
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
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
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 ;-)
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.