2

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

4

2 に答える 2

15

これは、そのLCDコントローラーを4ビットモードで初期化するために必要なすべてのステップの詳細を示すフローチャートです。

ここに画像の説明を入力してください

于 2012-08-30T22:03:18.007 に答える
1

通常、LCDデバイスをリセットする方法があります。これは、プロセッサの起動の一部として実行します。

そうすれば、プロセッサをリセットすると、LCDも既知の状態になります。

データシート(または他のプログラミング仕様)を入手して、それがどのように行われるのかを確認する必要があります。LCDを既知の初期状態に戻す方法はほぼ確実にあります。

それ以外の場合は、リセットスイッチをプロセッサLCDコントローラの両方に接続する必要があります。

于 2012-08-14T11:57:19.197 に答える