4-bit-LCD mit C-code

Arbeite ich mit einem Winstar LCD-Display ( WH2004A-YYK-CP ) und STM32 Prozessor und codes sind in C geschrieben. ich muss es mit 4-bit-Modus. Ich führen Sie es aus und schrieb, was ich wollte.

Wie Sie wissen -, 4-bit-Modus senden 8-bit-Daten als 2-mal 4bit. Das problem ist, wenn ich reset zwischen den 2 nibbles, er druckt seltsame Zeichen, und egal wie sehr ich es zurückgesetzt, es funktioniert nicht richtig. Die einzige Lösung, die mir kam, ist ein Reset mehrmals.

Herauszufinden, was Los ist, ich habe 2 Sekunden-Verzögerung zwischen den 2 nibbles (4-bit), und drucken Sie einen langen Satz. also, wenn ich es zurücksetzen, Prozessor-warten auf senden der zweiten Hälfte.

Bin ich zurücksetzen, er druckt etwas seltsam, nach dem zweiten zurücksetzen, er druckt nichts, und nach der Dritten druckt es wieder richtig. und 4. reset es wieder druckt, etwas seltsames, 5. man druckt nichts und die 6. wieder richtig gedruckt wird ... und die geht auf wie diese.
Deshalb bin ich jetzt sicher, dass problem ist, diese geteilt bytes.

Ähnlicher code funktioniert einwandfrei mit 8-bit-Modus.

Was ich Frage ist hier:
Wie kann ich sicher sein, dass "wenn ich reset STM32-Prozessor, LCD-wartet nicht zweite nibble von einigen Daten, deren erste nibble wird gesendet in der vorherigen Sitzung." durch die Verwendung von C-codes?

UPDATE:

Ich auch senden meinen code hier: http://pastebin.com/kHQQEqjx

LCD-Befehle sind auch hier: http://imgur.com/mfDlj

  • Beispielcode?
  • Sehen, wie ich mich näherte, 4-bit-Modus (verschiedene Prozessor-obwohl - ich bin ein AVR-Typ): github.com/H2CO3/libavrutil/blob/master/src/lcd.c
  • Ich habe meine codes. @h2co3 was ändert sich, wenn Sie entfernen den Teil : /* Set 8-bit mode 3 times (!) */ haben Sie jemals versucht oder kannst du es für mich? Ich werde versuchen, zu implementieren ähnliches.
InformationsquelleAutor aemre | 2012-08-14
Schreibe einen Kommentar