5.4インチSTNカラー液晶モニターの実験
画像表示の最初の一歩


はじめに

秋月電子通商で購入したアナログインターフェースのLCD5.4インチSTNカラー液晶モニターセットでカラー画像の出力をしてみました。このセットはビデオ→RGBコンバータ5.4インチSTNカラー液晶のセットで、このままでもビデオのコンポジット信号が表示可能ですが、さらにTVチューナ&選局セットを追加するとTVが見れるようになります。

まず、ビデオのコンポジット信号について調べたのですが、イマイチ理解し切れなかったので、5.4インチSTNカラー液晶モニターセットに含まれているビデオ→RGBコンバータの波形を見て、その真似をしてカラーパターンや文字表示にチャレンジしてみました。
実際に動作するものがあれば、資料が無くても何とかなるものです。

カラー液晶モニター

5.4インチSTNカラー液晶モニターセット

5.4インチSTNカラー液晶モニターセットは秋月電子通商のキットで、5200円で購入しました。

↓5.4インチSTNカラー液晶モニターセット

いかにもパチンコ用モニターな液晶とビデオ→RGBコンバータのセットです。液晶はRGBのアナログ入力3本と同期信号の計4本で動作します。ノイズには弱そうですが、たった4本で画像が表示できるのですから、工作作業は非常に簡単です。その分、プログラミングで苦労することになるんじゃないかな?・・・と、このとき思いました。


キットを作成する

バックライト用の9V電源とLCD用の5V電源を作成して、接続するだけ動作します。

↓DC版の某ゲームの画像

ビデオ→RGBコンバータは完成品なので、殆どいじるところがありません。とりあえず、ゲーム機とつないで画像を表示してみました。写真はDC版の某ゲームの画像。ねじねてる。

LCDの発色はSTNならこんなものかというレベルです。高品質ではありませんが、それなりに使うことができます。


2000円以下から始められるPIC入門で製作したブレークアウトゲームはコンポジット信号なので接続してみます。ついでに配線を整理したおかげで見た目スッキリ。コレでコンポジット信号を出力するものなら何でも表示できます。

↓ブレークアウトゲーム

はぁ、満足満足・・・・じゃなくて!
自分の思いどおりの画面を表示したいんだった。


RGB信号の波形はどうなっているのか?

オシロを当てて直接みてみる

難しいことなのか、言うまでもないことなのか、ビデオのコンポジット信号に関する資料はたくさんあるのですが、アナログRGBの信号に関する資料が全く見当たりませんでした(涙)。資料が無いと初心者にはとってもキツイです…まぁ凹んでばかりはいられないのでビデオ→RGBコンバータの信号を覗いてみるとします。波形の確認にはペン型オシロOsziFoxを利用しました。

RGB液晶モニターの画像の入力は、RGBSYNC信号があります。ビデオの同期信号には水平同期と垂直同期があるのですが、この液晶ではどうなっているのかさっぱりです。RGBの方もどうなっているのか見当もつきません。その辺をチョコチョコとオシロを当てて探ってみます。

↓SYNC信号をOsziFoxの液晶画面で表示したところ

C-SYNCにプローブを当てると、なにやら同期信号っぽいのがでてきました。どうやらこの信号に合わせてRGBを表示しているみたいです。


ペン型オシロOsziFoxには液晶画面に表示するほかに、RS-232C経由でPCに表示する機能があります。目の粗い液晶画面でアタリをつけて、波形の細かいところPCで確認するといいみたいです。

↓SYNC信号の波形をPCで表示したところ


5V程度のパルスが63us間隔で出ています。パルス幅は3.5usです。63us=15.87kHzなので、周波数からしてどうやらコレが水平同期のようです。観測を続けると、上の波形を反転したような波形を見ることがあります。稀にしか見ることができないので、どうやら垂直同期のようです。

次はRGB信号の方を見てみます。アナログ信号をそのまま見てもわかりずらいので、2000円以下から始められるPIC入門で作成したブレークアウトゲームの波形を見ることにします。ブレークアウトゲームの画像出力はビデオ出力でモノクロです。単純な画像なので、何かキッカケが掴めるかもしれません。

↓ブレークアウトゲーム

まず、ビデオ→RGBコンバータのビデオ側の信号をのぞいて見ます。ビデオのコンポジット信号は同期信号と画像情報が合わさったアナログな信号です。

↓ブレークアウトゲームのコンポジット信号


この波形はかなりの確率で見ることができるので、両端に壁以外何もないラインの波形だとおもいます。そうだとすると、水平同期信号の間に適当な信号を入れると何かしら表示するのかもしれません。

モノクロはRGBの出力が全部同じになるはずなので、RGBのどれか一つについて調べます。比較しやすいように上の波形と同じようになるようにしてみました。

↓ブレークアウトゲームの同期信号とB信号をプローブしたもの


参考のためSYNC信号をOsziFoxのソフトウェアのホールド機能を使って白で表示させています。タイミングをキッチリ合わせたわけではないので、正確な波形ではありませんが・・・。とりあえずこの波形の真似をすれば、何か表示してくれそうです。

実際の動作波形を観察して、どのような波形を作れば良いのかはイメージできました。しかし、厳密なタイミングについてはさっぱりです。

ここでようやく資料を見つける

トランジスタ技術2000年7月号の特集の最後にPICとAVRでRGB液晶モニターを利用して、オシロスコープを作成する記事がありました。これにビデオ信号のフォーマットが掲載されていたので、コレを参考に5.4インチSTNカラー液晶モニターセットの仕様を以下のように推測しました。

この液晶モニターの仕様
バックライト用電源 : 9V ・・・キット添付のデータシートに記載
LCDの電源(Vcc)     : 5V ・・・キット添付のデータシートに記載
RGB信号の電圧振幅  : 振幅 1.5V ・・・観測した波形より
同期信号方式       : 振幅 5Vの C-SYNC(Composite Sync=複合同期信号) さらに同期信号は反転 ・・・観測した波形より

C-SYNCは水平同期、垂直同期の複合信号です。この液晶のC-SYNCは資料と反転しています。

推測だけでは何も始まらないので、まずこの信号を真似て液晶に入力してみることにしました。

実際に信号を入れてみる

LCDとPICをどのようにつなぐか?

信号出力回路をPIC16F84を使ってブレッドボード上で作成しています。
観測した波形とレベルを同じにする為、SYNC信号はTTLレベルなのでPICの出力そのまま入れます。RGB信号は750Ωと300Ωで分圧して、振幅 1.5Vになるようにしました。これで観測した波形と同様になるはずです。

↓RGBパターンジェネレータの回路図 PDF版はこちら

まぁ、要するに5Vを1/3程度に分圧しているだけなんですけど。こんな感じでどんなものかなぁ?って勢いで、ブレッドボードで組み立ててみました。

↓ブレットボード


↓意味も無く横からのアップ

配線が全然不要なので製作は楽でした。最も生け花状態になるぐらいの配線数ならユニバーサルボードで作りますが。

ハードの方はこんなところで次にソフトを考えます。


ソフトは試行錯誤

SYNC信号とR信号だけ操作して、動かして見ました。

↓とりあえず表示した

いきなり真っ赤な画面が出て、やったー、ひょうじできたーと、喜んでいたのですが、この画面はSYNC信号を外しても表示することが判明。ようするにR信号がでていれば色が出るだけだったのです。



気を取り直して、タイミングの練りこみなおして画面の半分だけ表示するようにしました。

↓左半分だけ赤を表示

左半分だけ赤を表示するサンプル
アセンブラ:
rgb_test001.asm …とりあえず水平方向に画面を2分割。
アセンブルしたhexファイル:
rgb_test001.hex


コレができればこっちのもの。残りのG信号とB信号の出力も操作してカラーパターンジェネレータを作成しました。

↓ディジタル8色を表示

ディジタル8色を表示するサンプル
アセンブラ:
rgb_test100.asm …水平方向に画面を8分割。
アセンブルしたhexファイル:
rgb_test100.hex

このプログラムはSYNC信号以外は全てカラーパターンを表示するようにしています。


ソフトウェアの製作はロジックアナライザで確認しながら製作しました。

PICから出力しているSYNC信号とRGB信号は以下の通りです。

↓C-SYNC信号の垂直同期部分

等化パルス、垂直同期パルス、等化パルスの順に出力します。等化パルスは水平同期パルスの丁度1/2です。垂直同期パルスは、等化パルスよりパルス幅が2倍になって反転しています。この液晶のC-SYNCは同期反転しています。



続いてRGB信号の方は以下のとおり。

↓C-SYNC信号の水平同期部分とRGB信号

RGBはRを一桁目、Gを二桁目、Bを三桁目にして0、1、2、3…とやっているだけです。この方法だと、信号の変化点が重なったところが遅延の関係でずれて、色と色の境界が違う色になることがありますが、今回はそんなこと気にしません。


コレを水平方向と垂直方向にブランクを置いて、任意の位置に表示できるようにしました。ついでに、文字を表示してみます。文字のフォントは自分で作成しました。

↓ABCとカラーパターン表示

画面に文字とカラーパターンを表示するサンプル
アセンブラ:
rgb_test110.asm   …画面に文字とカラーパターンを表示
アセンブルしたhexファイル
rgb_test110.hex


思ったとおりの位置に表示できました。ただし、上のほうで表示がゆがんでいます。原因は今のところわかっていません。うーん。


蛇足ですが、ユニバーサルボードで作り直しました。

↓ユニバーサル基板で動かしているところ

以上で、なんとか文字とカラーパターンを表示できました。文字表示の画像はゆがんでいますが、アナログRGBの信号の仕様と同期信号の生成にちゃんとタイマ割り込みを使えばきちんと表示されるでしょう。


一通り表示ができるようになったので、これで色々なものの表示ができるようになる・・・はずですが、今回の製作では、表示するぐらいでいっぱいいっぱいでした。これはPICの処理能力というより、ビデオのアナログ信号自体、マイコンでやるには荷が重いということでしょう。デジタルインターフェースのLCDは後ほど試したいと思います。

今回学んだこと

波形をPCに画面を表示するのはHP的に非常に便利。
今回も多用しています。現実をそのまま公開できます。
でもやっぱりDSOが欲しい…。
OsziFoxで何処までできるか挑戦です。贅沢を言えばキリがない。
PICの入出力設定は入力が1、出力は0。
また間違えました、何をいまさらこんなことやってるんだか。
PICに繋いだ20MHzのセラロックのGNDはかなりノイズが乗ります。
最初はSYNCとだまされました。0.3Vp-pぐらいあったし。

やりのこし

文字表示の歪みがとれない。
結構いじくってみましたが、結局あきらめました。再度製作したらなくなると思いますけど。
スクロールサンプルの製作。
5ドット間隔の網目状のパターンを斜め下にスクロールするものを作ろうと思っていたんですけどねぇ。