PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD 2. Zeile direkt ansteuern



orph
08.07.2006, 23:48
Hallo

Nachdem ich nun ein neues LCD bekommen habe, und dies auch richtig funktioniert hat, habe ich nun eine neue Frage.

Auf welche Arten kann ich mit einem 16F88 die 2. Zeile eines 2*16 LCD mit Assembler ansteuern?
Da ich weis, dass die 2. Zeile die Adressen 64-79 im Textbuffer hat, habe ich in einem Prog mal alle Bufferadressen mit Zeichen beschrieben. Danach hat mir das LCD logsicherweise die oben genannten Adressen in der 2. Zeile angezeigt. Da es jedoch sehr mühsam ist, im Programm 80 Zeichen an ein LCD zu übermitteln etc. denke ich, dass es noch eine andere Möglichkeit gibt. Kann man ev. die jeweiligen Stellen direkt ansteuern oder das angezeigte Textfenster innerhalb des Textbuffers verscheiben?
Weis hierzu jemand etwas mehr?

Gruss orph

PICture
09.07.2006, 09:48
Hallo orph!

Bei (fast) jedem LCD Matrixdisplay hat jedes Zeichen eigene Adresse. Befor ein Zeichen (mit RS=1) zum Display geschickt wird, muss ein Befehl (mit RS=0) mit der Adresse, an der das Zeichen erscheinen soll, geschickt werden. Zum Beispiel wenn Du ein Zeichen auf der ersten Stelle in der 2.Zeile, die Adresse 40h (64d) hat, haben willst, musst Du in Deinem ASM Programm:

RS=0 für Befehl setzen
40h als Befehl schicken
RS=1 für Data setzen
Dein Zeichen als Data schicken.

Ich hoffe, dass es Dir hilft. :)

MfG

orph
24.07.2006, 22:57
ich hab doch tatsächlich nochmals im Datenblatt nachgeschaut und siehe da:
rs=0
bit 7 = 1
dann kann ich mit den restlichen 7 Bits die Zieladresse für das Zeichen angeben

thx für den Tip

PICture
25.07.2006, 07:30
Hallo orph!

Genau, so geht´s. Ich habe vergessen, dass zu der Adresse, die im Datenblatt des Displays angegeben ist, man noch das 7-te bit (80h) dazu addieren muss. Für erste Stelle in zweiter Zeile, die Adresse 40h hat, muss man dann ein Befehl C0h (nicht 40h, wie ich in meinem erstem Beitrag geschrieben habe) schicken, weil 80h+40h=C0h. Das habe ich doch schon so oft verwendet.... :)

Übrigens, ich habe noch nie solche Befehle wie "display clear" oder "cursor home" benutzt, weil ich immer nur bestimmte Bereiche des Displays überschrieben habe, was viel schneller ist.

MfG