2013年2月19日火曜日

詳細不明グラフィック液晶の制御に成功しました。

以前ジャンク屋にて購入した詳細不明液晶の制御に成功しました。
色々調査した結果を記録しておきます。

まず、液晶から。


型番:LM523
使用チップ:HD44104 13個使用。

ピンアサイン

hardwareluxx より

1:D1 上位32ライン分表示用シリアルデータ
2:FLM First Line Marker スタートラインを示す信号
3:M 液晶の表示をコントロールする信号。1フレームごとにH/Lを切り替えて送信
4:CL1 水平割り込み。1ラインシフトレジスタラッチ信号
5:CL2 D1,D2用シリアルデータ転送用クロック
6:D2 下位32ライン分表示用シリアルデータ
7:Vdd 5V
8:GNC
9:Vee -5V 液晶パネル駆動用電源。
10:コントラスト調整用。5VとGND間にVRを入れて、電圧を調整することにより、液晶のコントラストを調整できる。

制御方法

Arduino UNOによる制御サンプル。(メモリの関係上上半分だけ)

使い方はここに書いてある通り。(最初に見つけれていれば・・)
原理的には、ブラウン管式テレビと同じで、画面の先頭端から横に走査していって、端に来たら、
次の行へを繰り返し、最終端に来たら、また画面の先頭に制御を戻すという感じ。

プログラムでは以下のような流れで制御しました。

1:画面の画素数分の配列を用意しておく。(VRAMになります)
2:VRAMクリア
3:FLM信号をHigh(制御を画面の先頭へ持っていく)
4:VRAM配列にテスト用データを書き込む。
5:X軸、Y軸のループを回す。
6:配列の中身は8bitなので、1bitずつ取り出し。
7:D1信号をVRAMの内容に従い、High/Lowをセット。
8:データ送信用クロックCL2をHigh/Lowして1クロック送信。これにより、セットしたD1,D2のビットデータが液晶へ取り込まれる。
9:以上を1行分繰り返す。
10:1行分データを送信したら、CL1をHigh/Lowして内容を確定させる。
11:最初の行が確定したので、FLM信号をLowにする。以降最終行に到達するまでFLMはLowのまま。
12:以上を最終行に到達するまで繰り返す。
13:最終行に到達したら、FLM信号をHighにして、制御を画面の先頭へ持っていく。
14:1から繰り返す。
具体的な内容はサンプルソースを参照してください。

参考:サンプルプログラムを動かした様子。

(画面が点滅したり一瞬消えたりするのは、転送レートが間に合っていないからです。TVと同じく、転送レートが高速でないと、残像が残らないのでちらつきます。)


*参考までに*
多分専用の制御ICと思われる。(動作未確認)
HD61830/HD61830B

0 件のコメント:

コメントを投稿