H8にグラフィック液晶モジュールをつなぐ


戻る


 セイコーインスツルメンツの240×64ドットのグラフィック液晶モジュール「G2436」を入手したのでH8/3052につないでみました。このモジュールは秋葉原の「鈴商」で1台4000円で売られていました。

※入手したのは2003年3月上旬の時点です。時が経つと品切れになることもあるのであらかじめご了承ください。

・写真


稼動中の全景。


部品面。基板サイズはハガキより一回り小さいくらいです。。主な部品はH8/3052ボード、RAM628512BLP−5、ザイリンクスのCPLD XC95108です。


半田面。ほとんどの配線はCPUバス−CPLD間とRAM−CPLD間です。


液晶画面のアップ。縦64ドットってのはちょっとキツイですね。萌えゲー作るのは大変かも(^^;;;

・回路図

(1/2) CPUとCPLD、RAMの接続



(2/2) CPLDとLCDモジュールの接続、電源まわり、各種端子等


※ご注意

・図ではCPLD用のパスコンが一箇所に5つまとめて書かれていますが、実際にはVCCINT、VCCIO端子の間近につなぎます。
・図では直結になっていますがCPLDと液晶モジュールの間にはコネクタが入っています。
・内蔵ROM書きこみ用ジャンパーポストはH8内蔵ROMを書きこむときに接続し、普段は開放にしておきます。。


・回路の中身についての解説


・製作手順

※ これと同じ回路をつくってみたいという方、製作は各自の責任において行ってください。

・ひたすら配線する

 回路図どおりにひたすら配線します。配線量は百数十本程度で、休日1日かければできると思います。

 CPLDのPLCC84ピンソケットは、足の並びが一見不規則なので間違わないように気をつけましょう。慣れない人は「PLCCソケットを裏から見たときのピン番号の図」みたいなものを作っておくとよいかもしれません。

・電源を入れる前のチェック

 電子工作の基本ですが、電源を入れる前に、CPUボードやRAM、CPLDをソケットに挿さずに目視やテスターなどで間違った配線をしていないか、隣り合うピンなどがショートしていないか十分チェックします。

・CPLDを焼く

 配線ミス等がなければCPUボード、RAM、CPLDを挿し(まだ液晶モジュールはつながない)、CPLDプログラム用JTAGケーブルをつないで電源を入れます。そしてテスターで5V電源がちゃんと出ているか確認します。

 5Vが問題ないようであればパソコンでXilinx WebPackを実行し、CPLDを焼きます。Xilinx WebPackの使い方について、ここで詳しく解説する余裕はないので、各自で調べてください。

 焼いたあと、オシロスコープを持っている人は、液晶モジュール接続用端子のCP1、CP2、M、FRMからちゃんとパルスが出ているか調べます。これらのパルスが出ていない状態で液晶モジュールをつなぐと、液晶が電気分解して永久破壊に到るおそれがあります

・液晶をつないで電源を入れる

 上記が問題なければ液晶モジュールをつないで電源を入れます。うまく動いていればそのときたまたまRAM上にあったデータが液晶に表示されます。

 なにも出ない場合即電源を切ります。そして液晶モジュールの裏側のコントラスト調整ボリュームを適当に回して再度電源を入れて見ます。ボリュームをどの位置にしても全く何も出ない場合は配線が間違っているか、またはCPLDを焼く手順等が間違っているので再度チェックします。

(たまたまRAMの内容がオール”0”だった、という可能性も皆無ではありませんが、私の今までの経験からするとそういうことは起こったためしがないです。628512は電源投入時ほぼランダムに”1”と”0”が入り混じったパターンになります)

・LCD−RAMの動作チェック

 次に「超ミニBASIC for H8/3048」に同梱されている暫定版3052用インタプリタ(cmb3052.mot)をH8/3052の内蔵ROMに焼いたあと、CPUモードを6にして以下のプログラムを実行します。うまく動いていれば画面全体が黒いドットで埋め尽くされます。
 10 POKE &P1DDR,$FF:POKE &P2DDR,$FF 'ADDRESS BUS
 20 POKE &P4PCR,$FF ' PULL-UP ON
 30 POKE &P5DDR,$FF ' ADDRESS BUS
 40 POKE &P6DDR,$FF ' OUTPUT
 50 POKE &P8DDR,$FF ' OUTPUT (USE CS)
 60 POKE &PADDR,$FF ' OUTPUT
 70 POKE &PBDDR,$FF ' OUTPUT
 80 POKE &WCER,$0   ' DON'T USE WSC
 90 FOR I=$200000 TO $2007FF ' LCD RAM ADDR
100 POKE I,$FF               ' FILL BLACK (BIT='1':BLACK)
110 NEXT

・データコンバータ

 とりあえずサンプルデータを表示するため、240×64ドットのBMPファイルをPOKE文スクリプトに変換するツールをDelphiで作りました。

こんなプログラムを吐いてくれます。もちろん行番号をつけることも可能です。
POKE $200000,$55,$55,$55,$55,$55,$55,$5D,$55,$56,$00
POKE $20000A,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
POKE $200014,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
POKE $200020,$AA,$AA,$AA,$AA,$AA,$BA,$AA,$AA,$AA,$00
POKE $20002A,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
POKE $200034,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
POKE $200040,$55,$55,$55,$55,$55,$55,$5D,$55,$55,$00
POKE $20004A,$00,$00,$00,$00,$00,$00,$00,$0F,$FF,$FF
POKE $200054,$FF,$F0,$00,$00,$00,$00,$00,$00,$00,$00

(中略)

POKE $2007F4,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00

 このツールが欲しい方(いないと思うけど(^^;;;)はメールで連絡ください。

・今後やりたいこと

 とりあえずの目標として、これを発展させてBASICが使えて、グラフィックも描ける「プログラム電卓」のようなものを目指そうと思います。あとはキーボードとストレージをつければ・・・

(できれば「PDA」にしたいところなんですが、バッテリーとかいろいろ大変そうなので・・・)

 よく考えると、H8/3052ってのはX68000に匹敵する(ヘタすると凌駕する)程度のCPUパワーがあるわけで、そんなもんが個人で自作できるなんてすごい時代になったもんです。

やるべきことを列挙すると

・キーボードを付ける

 キーボードはタクトスイッチを使った、テンキー+α程度のオリジナルキー配置のキーボードを考えています。あまりキーが多いとデカくなるし配線も大変です。アルファベットなども根性でそのキーボードから入力します。
 PS/2キーボードをつなぐことも考えたのですが、デカくなるし、それにH8にPS/2キーボードをつなぐ、ってのは他にやっている人がいるので(有名なところではH8/OSの三岩さんなど)、同じことをやるのは芸がないと思います。

・ストレージをつける

 まずは手始めにシリアルEEPROM 24C1024を付けようと思います。容量は128Kバイトですが、「プログラム電卓」には十分な容量だと思います。将来的にはマルチメディアカードなどにも対応したいと思います。

・BASICインタプリタ

 「超ミニBASIC」にグラフィック関連の命令を追加し、またパソコンをつながなくても自前のキーボードでプログラムの入力・編集ができるようにします。