Winstar Display LCD(WH2004A-YYK-CP)とSTM32プロセッサを使用しており、コードはCで記述されています。4ビットモードで実行する必要があります。私はそれを実行し、私が望むものを書きました。
ご存知のように、4ビットモードは8ビットデータを4ビットの2倍として送信します。問題は、2つのニブルの間でリセットすると、奇妙な文字が印刷され、いくらリセットしても正しく機能しないことです。私が思いついた唯一の解決策は、それを数回リセットすることです。
何が起こっているのかを理解するために、2つのニブル(それぞれ4ビット)の間に2秒の遅延を追加し、長い文を印刷しました。したがって、リセットするたびに、プロセッサは2番目のニブルの送信を待機しています。
私はそれをリセットしています、それは何か奇妙なものを印刷します、2番目のリセットの後それは何も印刷しません、そして3番目のものの後それは再び正しく印刷します。そして、4番目のリセットは再び奇妙なものを印刷し、5番目は何も印刷せず、6番目は再び正しく印刷します...そしてこのように続きます。したがって、問題はこれらの分割されたバイトであると確信しています。
同様のコードは、8ビットモードで完全に正常に機能します。
私が求めているのは、「STM32プロセッサをリセットしたときに、LCDが前のセッションで最初のニブルが送信されたデータの2番目のニブルを待機していない」ことをどのように確認できるかです。Cコードを使用して?
アップデート:
私もここに私のコードを送ります:http://pastebin.com/kHQQEqjx
LCDコマンドもここにあります:http://imgur.com/mfDlj