LCD 4x20 DDRAM Adresse S6A0069

Gast #338722
Hi Leute kann mir einer verraten wie ich an meinem 4x20LCD die Adressen
anspreche? Ich  möchte nicht immer nur in der linken oberen Ecke (DDRAM
00H) anfangen zu schreiben.

Auf dem LCD befinden sich zwei S6A0069.

Die DDRAM Adressen sind

1Zeile: 00H-13H
2zeile: 40H-53H
3Zeile: 14H-27H
4Zeile: 54H-67H

Es gibt nur ein E und das Display mit 2Controlern, wird als eins
verwaltet.

Die Initialiierung läuft 1a. Nur ich schaffe es nicht den Text an eine
beliebige Position zu schreiben.

Bsp:
// jetzt wird die Adresse ausgewählt
CLEAR_BIT(PORTA, PINA7);////RW=0,Daten werden in das Modul
geschrieben
CLEAR_BIT(PORTA, PINA6);//RS=0,Daten werden als Befehl interpretiert
PORTA|=(1<<PINA5);  //setzt E
PORTC=0xa;  // 10
PORTA&=~(1<<PINA5);  //übernahme der Daten E löschen

//Zeichen schreiben z.B. 8 0b00111000;
busy();
PORTA|=(1<<PINA6);  //RS=1 Daten werden als Text interpretiert
PORTA&=~(1<<PINA7);  //RW=0, daten werden in das Modul geschrieben
PORTA|=(1<<PINA5);  //setzt E
PORTC=0b00111000;  // 8
PORTA&=~(1<<PINA5);  //übernahme der Daten E löschen


Help, hat einer eine Idee, warum ich jetzt nicht an der Stelle 10(0aH)
des Displays schreibe, sondern immer noch in der linken oberen Ecke?

Danke

Ciao Spacemikel
Gast
Hallo Spacemikel

wie hast Du das LCD angeschlossen? 4 Bit oder 8 Bit Mode?

Wenn Du wie ich vermute im 8 Bit Mode arbeitest, so must du DB7 bei der
Adressierung setzen. Also für Zeichen an Zeile 0, Spalte 10

0b10001010 0x8A

Für Zeile 3, Spalte 2 0b10001111 0x8F
Zeile 2 Spalte 10 0b11001010 0xCA

Gruß
Peter
Gast
Hi Peter,

danke für deine Tip, doch leider klappt es so auch nicht.

Ich habe das Display im 8Bit Modus angeschlossen.
DB7 habe ich auch schon gesetzt und auch nicht, ich komme einfach nicht
von der 1 Position weg (00h).
Mein vorletzter Schritt in der LCD_INIT ist Clear Display, dann hänge
ich an der Position, ohne Clear Display springt der Cursor zufällig auf
dem LCD rum.

Hast du noch einen Tip für mich?

Im Anhang befindet sich meine LCD_INIT

Danke.

Ciao Spacemikel
Angehängte Dateien:
Gast
Hallo Spacemikel
wie lange wartest Du nach dem setzen der Cursorposition? Ich kann kein
wait sehen. Probier es mal mit 64 ms und dann einem display.

Gruß
Peter
Das Setzen der Cursorposition mit dem Kommando "Set DD-RAM Adress"
braucht keine besondere Wartezeit, das dauert 42µs, so wie die meisten
Kommandos ("Read Data" und "Write Data" dauern 46µs).

Was richtig lange dauert und was man nach der Initialisierung tunlichst
vermeidet, das ist "Display Clear" und "Return Home" mit 1,64ms.

Viele LCDs benötigen nach dem Anlegen der Betriebsspannung eine längere
Pause, bis man sie ansprechen kann. Im Datenblatt (des 4x20) steht 15ms,
nachdem die Betriebsspannung 4,5V überschritten hat. Etwas mehr schadet
bestimmt nicht.

Ich hänge mal eine halbfertige, aber funktionierenden
LCD-Routinensammlung an, ist zwar für 4 Zeilen mit 20 Zeichen, in
AVR-Assembler und im Nibble-Mode, aber ich denke, dass man dort die
Initialisierung nachvollziehen kann.

...
Angehängte Dateien:
Gast
Erfolg!!

Hi Leute, des Problems Lösung lag in der DB7=1 + der zusätzlichen
Wartezeit nach der LCD_INIT.

Danke für eure guten Tips :-)


Ciao Spacemikel

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.