Hallo Ich will ein 4x20 LCD ansteuern (KS0073). Im großen und ganzen klappt es auch. Nur eine Merkwürdigkeit bleibt. Wenn ich nach einem CLS Zeichen schreibe, werden einige davon in der 2. Zeile wiederholt und der Cursor (blinken und sichtbar aktiviert) blinkt dann in beiden Zeilen synchron. So sieht es aus: Hello my new world_ world_ Der Underscore soll der Cursor sein. Da mache ich doch bestimmt was bei der Initialisierung falsch (2 Zeilen-Modus ist an) Nur was fehlt? Außerdem scheint die Speicheradressierung nicht mit dem Datenblatt (und anderen Angaben bei anderen LCDs) übereinzustimmen. Aber das schiebe ich vorerst noch auf das obige Phänomen.
Das Löschen dauert bei vielen LCDs recht lange, vielleicht schreibst du nur zu früh? ...
Der lcd-controller ist bei mir etwas langsammer als der controller den ihn steuert. D.h. ich mache par usleep. void lcdWrite(short dat) { while((lcdRead(0)>>7)&1){} // wait until LCD is ready RS=(dat>>9)&1; // get RS bit RW=OFF; // set RW bit if(WdtLcdIAP) feedWatchDog(); usleep(WAITTIME_WRITE); if(WdtLcdIAP) feedWatchDog(); if (ENABLE_NR==1) E=ON; else E2=ON; DATA=(char)dat; E=OFF; E2=OFF; RS=OFF; RW=OFF; return; }
...und bis heute auch keine lösung gefunden, leider. als wenn die adressangaben im datenblatt falsch sind, sobald ich über "20" rausgehe, kommt murks...aber naja: trial and error :) Klaus.
void usleep(unsigned int count) { while (count) { count--; } if(WdtGlobalIAP) feedWatchDog(); }
Nicht zwingend, wenn man "Hello World!" in ein LCD schreiben will...nach größeren projekten durchaus, sicherlich. Klaus.
@Klaus: was heißt trial and error? Soll das heißen, das das LCD kaputt ist oder nichts taugt? Kann ja nicht sein, daß ich jetzt ein anderes nehmen soll. Hat ja nebenbei auch Geld gekostet. Wenn nur die Adresse falsch wäre, könnte ich damit leben. Aber wieso dieses doppelte schreiben?
@alle Noch mehr warten kann ich schon gar nicht mehr. Habe überall wo es nur geht delays drin und bringt nichts. Schreiben und Befehle (Cursor an usw.) tut er ja auch wunderbar im Prinzip.
Hallo, tut mir leid ich habe erst jetzt reingeschaut. Ich hatte letzten Monat das gleiche Problem. Da stimmt was mit der Initialisierung nicht. Hier im Forum gibt es schon einen Beitrag dazu. Such mal nach 4x20 glaube ich. Dort findest Du dann auch die neuen.lib dateien für C. Ich hoffe ich hab Dir helfen können. Grüsse Markus
Tata!!! Habe über den Tellerrand geschautund was tolles gefunden: http://www.roboternetz.de/phpBB2/viewtopic.php?t=10766 Der 2. Beitrag klärts. Man muß per function set das RE Bit setzen und dann ein extended function set. Jetzt stimmt alles - auch der Adressbereich!
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.