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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist das Flussdiagramm, das details alle erforderlichen Schritte zu initialisieren, dass der LCD-controller im 4 bit Modus.
Gibt es in der Regel ein Weg wäre, um das zurücksetzen der LCD-Gerät, was Sie tun würde, als Teil der Inbetriebnahme für den Prozessor.
So, ein reset der Prozessor wäre auch der LCD in einem bekannten Zustand.
Müssen Sie Holen Sie sich ein halten Sie dem Datenblatt (oder anderen Programmier-spec) und sehen, wie es gemeint ist, getan zu werden. Es ist fast sicher ein Weg, um den LCD wieder auf einen bekannten anfänglichen Zustand.
Andernfalls müssen Sie möglicherweise binden Sie den reset-Schalter, um sowohl der Prozessor und dem LCD-controller.