まずは初期化の手順です
データ線を4本しか繋いでなかったら 8bit モードに入れないから
初期状態(電源投入直後)は 4bit モードだろう
と思ったら、違いました。
初期状態では 8bit モードです。
えぇぇ? と思ったのですが
うまく作られていまして
Function Set コマンド (0b001*****) は bit4 が 0 なら
下位の 4bit が何であれ、4bit モードに切り替わります。
ではまず 0011(2) を 送ればいいか
と思ったのですが、ちがってました
0011(2) を 3回 送って、それから 0010(2) を送る
のが一般的な 4bit モードへの入り方のようです
まず、8bit モードで 「8bit モードにする」コマンドを送ることで
「お前はいま 8bit モードだ」と念押ししているそうです。
なぜ念押しが3回もいるのかよくわからないけど
ここは疑問にこだわらずに作法という事で・・・
いま、モードは 8bit です(なにせ 3回も念押ししてるので)
そして 10(2) = 4bit モードへの切り替え命令を送ると
線をつないでいない下位 4bit は不定ですが、上に書いたように
上位 4bit が 0010(2) なら下位 4bit が何であれ 4bit モードに入る
なので、これで準備はOKです
その他の手順もつけて、初期化の手順は以下のようになります
ウエイトの時間は必要以上に(キリの良い数になるよう)長くとってます
① の電源オン直後のウエイトについては
42ms 程度と書かれているものもよく見ますが
互換機の中には電源投入から安定まで時間が長くかかるものもあり
50 ~ 100ms 推奨と書かれている資料を見かけたので
長めに 100ms にしています
1回目の 0x3 だけはウエイトを長く取るよう指示があり
③ は 10ms にしています
① 100ms 待つ
② RS ピンを 0 にする(0 = コマンド、1 = 表示データ)
③ 0011(2) を送って 10ms 待つ
④ 0011(2) を送って 2ms 待つ(2回くりかえし)
④ 0010(2) を送って 2ms 待つ
今日もコードを書くところまで進めませんでした
明日こそ Python で動くコードを書けますように


コメント