| Autor |
LCD - WD-C2704M-1HNN (Keine Zeichen) Suche nach: lcd (4712) |
|
|
|
|
BID = 644175
abracadabra Stammposter
   
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 361
|
|
Hallo,
habe das WD-C2704M-1HNN von Pollin an einen Mikrocontroller über 8Bit Leitungen + RS,RW,EN1,EN2 angeschlossen.
Es besitzt HD44780-kompatible Controller.
Nun lässt es sich wunderbar initialisieren und verarbeitet die Kommandobefehle so wie es sollte.
Allerdings bekomme ich kein einziges Zeichen dargestellt.
Wenn ich einen entsprechenden Befehl sende, beispielsweise:
RS = 1, RW = 0 und 0x33 auf den 8Bit Bus lege, dann inkrementiert das Display zwar den Cursor während der fallenden Flanke von E1,
aber stellt kein Zeichen dar sondern eben nur ein Leerzeichen.
Wenn ich anstelle von 0x33 was laut Datenblatt einer "3" entsprechen sollte ein 0xff sende, geschieht das geliche.
Bei 0xff sollte aber die gesamte "Zeichenbox" schwarz werden..
Ich wundere mich was da schiefgeht..
Kann es sein, dass der interne Speicher, indem das LCD die Zeichen abgelegt hat, gelöscht ist?
Hmm.
Was bedeutet eigentlich: "Schreibt Daten in CG- oder DD-RAM"
Was ist der CG- und der DD-RAM ?
Grüße
abracadabra |
|
BID = 644211
perl Ehrenmitglied
       
Beiträge: 11110,1 Wohnort: Rheinbach
|
|
Kann es sein, dass du invertierte Daten, also CC und 00 statt 33 und FF schickst?
P.S:
CG = Character Generator. In diesem RAM kannst du also ein paar selbst definierte Zeichen ablegen. Die vordefinierten Zeichen das ganze Alphabet etc. stehen aber in einem grösseren ROM.
DD = Display Data . Da stehen die darzustellenden Zeichen, so wie du sie geschickt hast, drin.
2.P.S.:
Ein häufiger Fehler ist auch, dass man die Daten zu schnell schickt.
Viele dieser Display Controller sind unglaublich langsam, und es ist problemlos möglich sie zu "überfahren". Dann gehen natürlich Bytes verloren und das Ergebnis ist ungewiss.
Entweder wartest du also nach jedem Byte die im Datenblatt genannte Mindestzeit, 100ms reichen aber immer, oder du stellst per Hardwareabfrage fest, wann der Controller bereit ist ein neues Byte zu empfangen.
Letzteres geht am schnellsten, erfordert aber etwas mehr Programmierung beim Absender der Daten.
[ Diese Nachricht wurde geändert von: perl am 30 Okt 2009 13:33 ] |
|
BID = 644271
abracadabra Stammposter
   
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 361
|
| Code : |
RS = 0;
RW = 0;
while(1)
{
delay_ms(100);
E1 = 1;
delay_ms(5);
p2 = x;
delay_ms(5);
E1 = 0;
x++;
}
|
|
Wobei p2 der 8Bit Datenport ist.
Nun rauscht mein Cursor im 110ms Takt über das LCD, doch leider hinterlässt es kein einziges Zeichen.
|
BID = 644275
perl Ehrenmitglied
       
Beiträge: 11110,1 Wohnort: Rheinbach
|
Zitat :
| | Nun lässt es sich wunderbar initialisieren und verarbeitet die Kommandobefehle so wie es sollte. |
Woher weisst du das, wenn du nichts siehst?
|
BID = 644282
DonComi Inventar
     
Beiträge: 8604 Wohnort: Amerika
|
Das kann ja alles Mögliche sein, was da nicht stimmt.
Wenn die Initialisierung fehlerhaft ist, dann bringt alles nichts.
Hast du mal eine fetige Bilbiothek ausprobiert?
_________________
|
BID = 644301
abracadabra Stammposter
   
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 361
|
Es ist richtig initialisiert, da ich den blinkenden Cursor sehe.
Befehle wie: Cursor platzieren, LCD löschen, Cursor an/aus, funktionieren tadellos.
|
BID = 644305
perl Ehrenmitglied
       
Beiträge: 11110,1 Wohnort: Rheinbach
|
Das sind alles Kommandos, bei denen RS=0 ist.
Zum Schreiben von Zeichen muss RS=1 sein, und davon sehe ich in deinem Codeschnipsel nichts.
|
BID = 644313
abracadabra Stammposter
   
Avatar auf fremdem Server ! Hochladen oder per Mail an Admin
Beiträge: 361
|
Habe fälschlicher weise RS = 0 angegeben oben, sorry für die Verwirrung.
Im Programm lautet es aber:
RS = 1;
RW = 0;
Also sollte alles funktionieren..
|
BID = 644333
DonComi Inventar
     
Beiträge: 8604 Wohnort: Amerika
|
Tja, dann musst du wohl mal mit dem Oszi nachschauen, wenn du meinst, dass im Programm alles richtig ist...
Vielleicht Datenrichtungsregister nicht richtig beschrieben?
Wir können hier nur raten, solange wir nicht deinen Quellkode sehen. Und zwar den, den du benutzt, nicht irgendeinen, der sagt, wie es gehen sollte...
_________________
|