Forum: Mikrocontroller und Digitale Elektronik LCD (HD44780) Cursor Position wechseln


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von FaB (Gast)


Lesenswert?

hallo,

hab ein problem mit meinem LCD...ich möchte die position
des cursors beliebig einstellen können z.b. spring auf die
2. linie und auf den 5. buchstaben .... jedoch funktioniert
dies nicht richtig. ich muss ja die adresse des ddrams ändern,
oder nicht? auf der ersten linie hab ichs so halb zum laufen
gebracht aber wenn ich den cursor auf die 2. linie setze dann
tut er so als würde er schreiben (er bewegt sich nach rechts)
jedoch gibt es nur immer leerschläge...es sind nie zeichen zu
sehen....

please help me!
tnx!

FaB

: Gesperrt durch User
von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Hast du das LCD bei der Initialisierung auf 2 Zeilen eingestellt?

Zum Positionieren des Cursors verwende ich das folgende Makro (avrasm):

;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

von FaB (Gast)


Lesenswert?

hallo andres

ja ich habs genau so gemacht wie du, funktioniert jedoch nicht.
bei mir verschiebt es den aktuellen text auf dem display, wenn
ich den cursor positionieren will...das hat doch was mit dem shift
zu tun? wie geht das mit dem shift überhaupt? hab das datenblatt
zwar schon mal von oben bis unten durchstudiert ... komm jedoch
immer noch nicht richtig draus.
nachdem es den aktuellen text verschiebt hat schreibt es dann
den text, den es auch sollte RÜCKWÄRTS auf das Display....was
ist da los? ein bisschen ne komische sache.

gruss fab

von mafer (Gast)


Lesenswert?

hallo andreas,

dies ist zwar schon ein veralteter thread, aber ich versuch mal mein 
glück:
und zwar bringt avr studio bei mir immer eine fehlermeldung bei der 
zeile:

[avrasm]ldi temp1, 0b10000000|(((@0)-1)<<6)|((@1)-1)[/avrams]
1
error: syntax error, unexpeceted ','

ich versuche gerade deinen digitalen funktiongenerator nachzubauen und 
verwende einen atmega8 controller.

vielen dank

mfg
mafer

von M. Н. (Gast)


Lesenswert?

Kurzer Auszug aus'm Tutorial:

<----------------------------------------------------------------------- 
>

Den Cursor neu positionieren. Display Data (DD) Ram ist vom Character 
Generator (CG) Ram unabhängig. Der Adresszeiger wird bei Ausgabe eines 
Zeichens ins DD Ram automatisch erhöht. Das Display verhält sich so, als 
ob eine Zeile immer aus 40 logischen Zeichen besteht, von der, je nach 
konkretem Displaytyp (16 Zeichen, 20 Zeichen) immer nur ein Teil 
sichtbar ist.

aaaaaaa 7-bit DD RAM Adresse. Auf 2-zeiligen Displays (und den meisten 
16x1 Displays), kann die Adressangabe wie folgt interpretiert werden:

1laaaaaa

l = Zeilennummer (0 oder 1)
a = 6-Bit Spaltennummer
<----------------------------------------------------------------------- 
>
Um in die zweite Zeile Spalte 3 zu springen sendet ihr dieses Command:

0b11  000010
   ^ |------|
   |     |
Zeile  Spalte

von Karl H. (kbuchegg)


Lesenswert?

mafer schrieb:
> hallo andreas,
>
> dies ist zwar schon ein veralteter thread, aber ich versuch mal mein
> glück:

Bitte nicht.
Wenn er es in 9 Jahren nicht hingekriegt hat, braucht er es jetzt auch 
nicht mehr.

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.