www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD 4x20 DDRAM Adresse S6A0069


Autor: spacemikel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: spacemikel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich weiß zwar nicht, ob es daran liegt, aber ich lege zuerst die Daten
an den Datenport des LCDs und generiere anschließend den Impuls von 7
Takten Impulsdauer. Ich arbeite allerdings in ASM.

...

Autor: peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hannes Lux (hannes)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

...

Autor: spacemikel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.