Hallo zusammen, ich stehe seit Tagen vor einem größeren Problem. Und zwar versuche ich Zeichen auf einem Winstone WH2004A Display (4 Zeilen a 20 Zeichen) auszugeben. Im Datenblatt ist beschrieben, dass der verwendete Controller ein KS0066 ist. Durch die Suchfunktion bin ich leider auf kein Ergebnis gestoßen, deshalb wende ich mich erwartungsvoll an euch. Nach anlegen der Betriebsspanung sind Zeile 1 und 3 des Display zunächst von der Farbe her leicht dunkler, das verschwindet nach der Initialisierung. Ich kann das Display initialisieren, komplett löschen, den Cursor blinken lassen und die Position des Cursors sowie die Position im RAM festlegen wo ich hinschreiben möchte. Schreibe ich allerdings Daten zur Ausgabe an das Display, so erscheinen mir auf dem Display nur irgendwelche wilden Zeichen, die absolut nichts mit den eigentlichen Buchstaben zu tun haben. gebe ich z.B. send_data(0x41); send_data(0x42); aus, so erwarte ich AB als Anzeige auf dem Display. Als Ergebnis erhalte ich jedoch die ersten beiden Anzeigefelder mit irgend welchen undefinierbaren Zeichen gefüllt. Hat irgendjemand eine Idee woran das liegen könnte? mache ich bei der Initialisierung möglicherweise etwas falsch. Gruß und Dank P.S. Das Display ist Funktionstüchtig
Hi >Als Ergebnis erhalte ich jedoch die ersten beiden Anzeigefelder mit >irgend welchen undefinierbaren Zeichen gefüllt. Und welche? MfG Spess
Diese Zeichen gibt es leider nicht auf der Tastatur, selbst im ASCII Zeichensatz habe ich sie nicht gefunden. Sind einfach innerhalb eines Zeichenfeldes wild durcheinandergewürfelte Pixel zu sehen. Ach was mir in der Zwichenzeit noch eingefalle ist. Ansteuerung erfolgt über ein komplettes Byte.
Dirk K. schrieb: > Diese Zeichen gibt es leider nicht auf der Tastatur, selbst im ASCII > Zeichensatz habe ich sie nicht gefunden. Sind einfach innerhalb eines > Zeichenfeldes wild durcheinandergewürfelte Pixel zu sehen. Hier findest zb einen Zeichensatz http://www.lcd-module.de/pdf/doma/dips082.pdf Man beachte die Japanischen Zeichen mit Codes größer 127. Ist da deine Anzeige dabei? (Worauf es hinausgeht: Eventuell hast du ein paar Datenleitungen vertauscht. Wenn du die richtigen erwischt, dann geht sich das mit der Initialisierung immer noch aus. Nur die Zeichencodes sind dann durcheinander)
Nein, die Zeichen, welche auf meinem Display zu sehen sind, sind auch in dieser Tabelle nicht dabei. Datenleitungen vertauscht kann ich auch ausschließen, da die .exe Datei eines Kollegen mit selber Kabelbelegung fehlerfrei läuft. Nur leider ist dazu der C Code nicht mehr vorhanden, somit muss das ganze neu geschrieben werden und ich stehe gerade vor diesem Problem.
Dirk K. schrieb: > Nein, > die Zeichen, welche auf meinem Display zu sehen sind, sind auch in > dieser Tabelle nicht dabei. Hmm. Dann können das dann aber eigentlich nur noch die vordersten 8 benutzerdefinierten Zeichen sein, die du da siehst. Denn was anderes als diese im Datenblatt angegebenen Zeichen + die 8 benutzerdefinierten Zeichen kann das Display nicht anzeigen. Was mich zur Vermutung bringt, dass dir irgendwo das High-Nibble bei der Ausgabe verloren geht und du anstelle von 0x41 irrtümlich 0x01 zum LCD schickst. Genauso bei 0x51, das High-Nibble geht verloren und das LCD kriegt den Auftrag wiederrum 0x01 anzuzeigen. Klappere deinen Code mal in diese Richtung ab.
Aber warum kann ich dann einen Befehl zur Intialisierung oder Adressierung z.b. 0x80 problemlos senden? Und der Cursor steht danach auch an dieser Position. Ich verwende die selbe routine zum senden der Befehle als auch zum senden der Daten. Allerdings das RS bei der Datenübermittlung auf 1 gesetzt. Daher kann ich das eigentlich auch fast ausschließen. Ich weiß, ist furchtbar aber ich kann das Datenblatt mittlerweile fast auswendig und finde einfach nichts mehr wo ich den Fehler noch suchen kann.
Da könnte eines dabei sein, das muss ich mir morgen nochmal genau anschauen. Habe das Display leider gerade nicht hier. Aber vielen Dank schon mal für eure Hilfe!!
>Winstone oder Winstar (LCD Hersteller in Taiwan)? Das Teil ist von Winstar. Und wer so einen Schwachsinn macht hat sowieso keine Ahnung von dem was er tut. >send_data(0x41); >send_data(0x42); send_data('A'); send_data('B'); Müsste eigentlich auch gehen;) Da aber niemand weiss was send_data() wirklich macht kann man sich weitere Vermutungen einfach sparen.
Dirk K. schrieb: > Ich weiß, ist furchtbar aber ich kann das Datenblatt mittlerweile fast > auswendig und finde einfach nichts mehr wo ich den Fehler noch suchen > kann. Nun, wir auch nicht. Du könntest aber mal einen Anfang machen und den Code herzeigen. Dann müsste man nicht raten.
Jetzt stell dich nicht an, du wirst den Fehler doch bestimmt auch so finden!
> Jetzt stell dich nicht an, du wirst den Fehler doch bestimmt auch so > > finden! Hab ich ;-) Ich danke allen für die mehr oder weniger Geistreichen Beiträge zu dem Thema!
Dirk K. schrieb: >> Jetzt stell dich nicht an, du wirst den Fehler doch bestimmt auch so >> >> finden! > > Hab ich ;-) Und was wars?
tja... das selbe prob hab ich in etwa auch und es wäre nett gewesen wenn jemand der hilfe sucht und sie dann findet die lösung mit anderen teilt ;) lg
Filo schrieb: > tja... das selbe prob hab ich in etwa auch und es wäre nett gewesen wenn > jemand der hilfe sucht und sie dann findet die lösung mit anderen teilt > ;) > Das war mit einiger Sicherheit irgend ein hausgemachter Blödsinn in seinem Code, den er nicht herzeigen will. Ich schätze mal du wirst ein komplett anderes Problem haben. Aber ohne Code und/oder Verschaltung herzuzeigen kann man sowieso nichts genaueres sagen.
ich hab nen neuen thread aufgemacht, vlt kannst mir ja helfen... [[Beitrag "ks0066 mit m8535 und bascom"]]
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.