バックライト用インバータ
バックライト用インバータ回路(ジャンク品)をインターネット(現品.com)で探し、購入しました。
2回路使えちょうどいい大きさです。電源はDC12V(消費電流0.6-0.7A程度)でインバータの出力電圧は1000V以上
(出力コンデンサ耐圧4300V)なのでちょっと怖い感じがしますが、表示は明るくとてもきれいです。
(充電部はビニルテープで防護しました)
画像の表示
前回は単純なパターンの表示ができたので、今度は画像データの表示にトライしてみました。
画像データの大きさは、mega8のメモリサイズはPROM:8k、SRAM:1k、EPROM:512(バイト)なのでPROMに
収まるサイズで、100x70ピクセル(1ピクセル1バイトとして)とした。
画像データは、BMP・JPEG等をRGBデータ変換しなければならないが、各フォーマットの仕様がわからず一から
勉強するには時間がかかるので、手を抜いて簡単に変換できるソフトをインターネットで探し、それを使うことにしました。
CSVファイル(YCbCr/RGB)←→JPEGファイル 変換システム(最近upされたばかり)
これを使えば、jpegファイルをRGBフォーマット(座標付RGB各8ビットのCSV)に変換
でき、エクセルで簡単に加工できます。
今回は、私のお気に入りのmiyaさんのmiya27.jpgの一部(100x70ピクセル)を切り出し表示させ
ることにしました。
(切出後データ)
上記変換ソフトでは、RGBデータが各8ビットなので圧縮し、LCDデータのフォーマットに合わせ
る必要があります。また、データの扱いとメモリ消費を抑えることを考慮して次のように変換しました
ピクセル:1バイト(ビットデータ:BBBGGGRR) B:8→3bit、G:8→3bit、R:8→2bit(1680万色→256色)
この変換とデータのプログラム用のテキスト化をエクセルマクロで組み、変換操作をしソースに貼付けました。
(F列まではJPEG-CSV変換ソフトデータ、G列以降はマクロによる追加データでJ列がLCD用データ)
プログラム
データは、PROMから直接転送もできますが、実行サイクルや事前データ加工処理があるため、1ライン分
データをPROMからSRAMへ転送し、ライン表示処理時SRAMからLCDへ転送し表示させます。
DCKは、’SRAM読出−LCDへ出力-カウント比較-条件ブランチ’処理が6CK(CPUクロック)かかることから、
CK/6周期(2.66MHz)としました。(データシートのフレーム周期20msを超えるためちょっと自信がなかった
けど大丈夫でした。もっと下げられそう1/10まで確認)
デューティ比はいろいろ変えてみて、ちらつきが生じず安定する1/6にしました。また、DCKは連続発生させこれに
同期するようにソースのカウント合わせをしました。(前回は、その都度発生・停止させていた)
画像は、100x70ピクセルを3x3表示させるようにしました。
ソース(本体:170ワード程度、データ:3600ワード)
実行結果
ソースの単純ミスになかなか気付かず、遠回りをしましたがとりあえず当初の目的は達成できました。
写りが悪く(縦縞が見える)見にくいかもしれませんが、実際はけっこうきれいに表示できています。
mega8のみでは、画像データ処理はこのくらいが限度かな。(パソコンに接続しながらの表示なら画面いっぱい
の画像もできますがあまり意味がない)