Forum: Mikrocontroller und Digitale Elektronik Curser Position


von Eric (Gast)


Lesenswert?

Hi,
Ich habe ein paar fragen bezüglich des LCD Tutorials.
Also ich habe ein LCD Display von Reichelt ( EA DIP204-4 mit dem KS0073
Controller) an einem ATmega16 angeschlossen.
Ich habe die Software aus dem LCD Tutorial benutzt und sie funktioniert
auch wunderbar.

jetzt will ich mal ein wort in die zweite oder dritte oder vierte zeile
schreiben und niergenwo sonst hin. wie funktioniert das?
irgendwie kann ich ja eine curserposition angeben von der ab das, die
zeichen geschreiben werden sollen. aber wie?
ich vermute ich muß doch dazu das einen wert in das DDRAM schreiben
oder?

Dann noch meine zweite Frage:
um das display anzusteuern, brauch ich ja nicht immer das enable bit.
Dann reicht es doch einfach, wenn ich aus der lcd_command routine die
lcd_enable routine weglasse oder?

und an welcher stelle des tutorials kann ich den vier zeilen modus
einstellen?

vielen dank schonmal

von Rahul (Gast)


Lesenswert?

Im Datenblatt findet man ein paar nette Hinweise in Form einer Tabelle.
PDF-Reader und grundlegende Englisch-Kenntnisse sollten vorhanden sein
;)
Auf Seite 2 stehen in der Tabelle sämtliche Befehle, und auf Seite 3
stehen rechts neben dem Initialisierungsbeispiel die Adresse für die
jeweilige Zeile.

Enable wirst du deswegen brauchen, weil das die Takt-Leitung ist. Mit
einer fallenden Flanke auf dieser Leitung werden die anliegenden Daten
in den Display-Speicher übernommen.

von crazy horse (Gast)


Lesenswert?

http://www.mikrocontroller.net/forum/read-1-190985.html#190985

vielleicht hilft dir das was. Weiss nicht, welchen Compiler du benutzt,
aber wenn du die lib-Datei mal durchschaust, kannst du damit vielleicht
was anfangen.

von Eric (Gast)


Lesenswert?

Hi ich benutze das AVR Studio.

die Adressierung habe ich schon gesehen.
1.Zeile $00..$13
2.Zeile $20..§33
3.Zeile $40..$53
4.Zeile $60..$73

leider funktioniert nur die erste und dritte zeile.
es wäre aber auch toll wenn die 2. und 4. Zeile funktionieren würde.

mit ldi    temp1,0b00001001   ; 4zeilen modus
           recall 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


sollte ich ja eigentlich den vier zeilen modus aufrufen können.
Fünktioniert aber nicht. Nachdem ich diesen Befehl ausgeführt habe, ist
das display leer.

von Eric (Gast)


Lesenswert?

Keiner eine Idee?

von Dirk (Gast)


Lesenswert?

Hi,

die Init weicht auch vom HD44780 ab.

writecmd(0x34);
writecmd(0x09);
writecmd(0x30);
writecmd(0x0F);
writecmd(0x01);
writecmd(0x06);

beachte bitte das die einzelnen Routinen eine gewisse Ablaufzeit
benoetigen o. du musst das busyflag abfragen.

von Eric (Gast)


Lesenswert?

Also das ist aus dem tutorial:

lcd_init:
           ldi  temp3,50
powerupwait:
           rcall  delay5ms
           dec  temp3
           brne powerupwait
           ldi temp1, 0b00000010        ;muss 3mal hintereinander
gesendet
           out PORTD, temp1             ;werden zur Initialisierung
           rcall lcd_enable             ;1
           rcall delay5ms
           rcall lcd_enable             ;2
           rcall delay5ms
           rcall lcd_enable             ;und 3!
           rcall delay5ms
       ldi temp1,0b00000010        ;4bit-Modus einstellen
       out PORTD, temp1
           rcall lcd_enable
           rcall delay5ms
           ldi temp1, 0b00101000        ;noch was einstellen...
           rcall lcd_command
           ldi temp1, 0b00001100        ;...nochwas...
           rcall lcd_command
           ldi temp1, 0b00000100        ;endlich fertig
           rcall lcd_command
           ret

was wird hier zu´m beispiele eigentlich eingestell,wo steht:
;noch was einstellen...
;...nochwas...
;endlich fertig   ?
und
ldi temp1, 0b00000010    ;muss 3mal hintereinander gesendet werden
was wird da eingestell?

um mein Display für den 4 line modus einzustellen
müsste ich laut datenblatt

ldi temp1,0b00001001
rcall lcd_command   senden.

aber egal anwelcher stelle und mit welcher pause ich das mache bleibt
mein display dunkel und reagiert nicht mehr.


wenn ich das programm aus dem tutorial so lasse wie es ist funktioniert
es ja wunderbar aber halt nur mit der ersten und dritten zeile.

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