LCDモジュールでゲーム [ざれごと]
今まで、 Samsung の KS0066 というチップが、LCDモジュールのコントローラとして多く使われてきました。 先ごろ、 Samsung がモノクロ用コントローラの供給を止めたために、LCDモジュールメーカは代替品への切り替えを進めてきているようです。 Sitronix社の ST7066U などの名前があがっています。
その代替品の一つが、 SUNPLUS 社の SPLC780D というチップです。 マルツパーツ館で扱っている "TC1602E-13T" にも使用されています。 今回は、これを使ってみます。
なぜ、3回も Function Set コマンドを送るのか
LCDモジュールのコマンドは、日立製作所のHD44780と互換性を保っています。 どのLCDモジュールも初期設定手順は共通です。 パワーオン・リセットの後は、なぜか"Function Set"コマンドを何度も送る必要があるとされています。 一回じゃだめなの? 何のために?
Function Setの未使用ビットを探る
Function Set コマンドの構成は、こんなふうになっています。
Instruction | Instruction Code | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
RS | R/W | DB7 | DB6 | DB5 | DB4 | DB3 | DB2 | DB1 | DB0 | |
Function Set | 0 | 0 | 0 | 0 | 1 | DL | N | F | - | - |
"Function Set"コマンドは、DB1とDB0に未使用ビットがあり、いかにも不自然です。 ここには、何があるのだろうか。 ためしに色々な組み合わせを書き込んでみたら、変な表示が出てきました。
ゲーム?
この表示にたどり着くには、もはやマイコンを使う必要はありません。 データバスのDB1/DB0とEクロックをタクトスイッチで叩くだけで、このモードに入ることができます。
- DB1スイッチを押してEを押す
- DB0スイッチを押してEを押す
- DB1スイッチを押してEを押す
- DB1スイッチとDB0スイッチを押してEを押す
- DB0スイッチを押してEを押す
Eクロックをタクトスイッチで叩くとチャッタリングを起こしそうですが、全く問題になりません。 きっと、内部にデグリッチ・フィルタでも入れてあるのでしょう。 実に、凝った作りです。 いい仕事してますね~
タクトスイッチは、そのまま操作キーとしても使えることがわかりました。 インターフェースは、よくあるシューティングゲームと同じです。 音が出てこないのが残念ですが、これは、いいものだ。
他には、何がある?
DB1/DB0の組み合わせによって、別のコマンドが受け入れられることもわかりました。
- DB1スイッチを押してEを押す
- DB1スイッチとDB0スイッチを押してEを押す
- DB0スイッチを押してEを押す
- DBxスイッチを押さずEを押す
液晶画面には、こんな表示が出てきました。
おそまつさまでした。
(ノ∀`)やられました・・・お見事です。
by gomisai (2009-04-01 21:24)