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