PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bestimmte Curser-Position im LCD-Display anfahren



Raphael
27.07.2010, 16:29
Halli Hallo,

ich hab heute das erste mal ein LCD-Display angesteuert. Ich habe einen Atmega8 verwendet, das Display ist ein 2x16 Zeichen (HMC16223SG von Pollin). Ich habe den Code von dem Tutorial auf der mikrocontroller.net website verwendet: http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD
Das ganze funktioniert auch ganz gut ... allerdings kann ich nur nacheinander Zeichen anzeigen lassen und nicht zu bestimmten Positionen (z.B. 5tes Zeichen, zweite Spalte) springen. Ich hab gelesen, dass ma dazu irgendwie die DDRAM Adresse ansprechen muss...ich verstehe aber nicht so ganz wie ich das anstellen soll....

Wenn ich im Display 40 Zeichen dargestellt habe springt er in die nächste Zeile... wäre toll wenn es eine Möglichkeit gäbe das zu vereinfachen.

Kann mir jemand erklären, wie ich solche "Kursersprünge" anstellen kann?

Viele Grüße
Raphael

Jaecko
27.07.2010, 21:25
Es gibt normal bei jedem Display ein Register, das die DDRAM-Adresse beinhaltet. Ebenso sollte es ein Kommandobyte geben, diese Adresse zu setzen.

Wie man die Adresse einstellt, steht normalerweise im Datenblatt. Blöderweise hat Pollin die Angewohnheit, als "Datenblatt" alles mögliche - ausser nützliches - reinzustellen.
Da hier aber "HDD44780 kompatibel" steht, sollten diese Kommandos hier klappen: http://www.sprut.de/electronic/lcd/index.htm#befehle

PICture
27.07.2010, 22:28
Hallo!

@ Raphael

Es muss zuerst die Adresse, wo das Zeichen plaziert werden soll (z.B. für erste Zeile Anfang = 40h + 0...0Fh, zweite Zeile Anfang = C0h + 0...0Fh), als Befehl (mit RS=1) und anschliessend das Zeichen selbst als Data (mit RS=0) an Display geschickt werden.

MfG

Raphael
28.07.2010, 16:03
Hallo,
danke es hat funktioniert.

Bei dem Display das ich habe(HMC16223SG) sieht das Byte allerdings so aus 0b1zssssss; z = 0 ->Zeile 1, z = 1 -> Zeile 2, Mit den 6 verbleibenden Bits kann man dann die Stelle(Spalte) wählen.

Den Wert habe ich dann als Instruktion ausgegeben (habe die Routine lcd_command verwendet).

Funktioniert prima!

Viele Grüße und danke für die Hilfe!

PICture
28.07.2010, 16:54
Hallo!

Na ja, inteligentes Probieren geht's immer schneller als bedenklos Studieren. Mich hat nie Interesiert, was für ein Kontroller mein LCD hat. Die Anfangsadressen der Zeilen müssen doch in einem Byte liegen und bei 2-Zeilen mit ASM gibt es nur 256/32 = 8 Möglichkeiten zum ausprobieren ... :)

MfG

Richard
28.07.2010, 20:48
Wenn es auf Geschwindigkeit nicht ankommt...einfach xyz Lerzeichen
(space) voraus senden.....

Gruß Richard