Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

PIC32MM0064GPL028 + ST7735 でプログラム・メモリに置いた画像を表示させる。 – データの準備 –

1.44インチのカラー液晶だが、ArduinoのライブラリとかだとSDカードを取り付けてそこから読み込んだ画像を表示したりしている。
1.44inchカラー液晶+Arduino Nano クローン+SDカード で画像表示する。
それでもいいんだが、せっかくプログラム・メモリが65535bytesもあるんだから画像くらい持てるだろう。

圧縮した画像をデコードするほどの技量は無いので、そのままのデータで置きたい。
仮にフルカラーだと、128 × 128 × 3 = 49152 bytes となって1枚しか持てなくてちょっと寂しい。
PSPの減色処理のメニューを見ると下のようになっていて、

16色か256色ってとこだろう。
256色8ビットとすれば、 128 × 128 × 1 = 16384 bytes となって3~4枚持てそうだ。

調べてみる。
ここあたりを参考にさせていただいた。
http://www.umekkii.jp/data/computer/file_format/bitmap.cgi

自分なりに解釈したところをまとめると以下の通り。
色情報が1ピクセルあたり8ビットになるというのはいい。
256色というのは、使われている代表的な色を256色に集約してその色のテーブル(パレット)を持つということのようだ。
各ピクセルは、その256色のうちのどの色でそのピクセルを表示するかを色の番号(インデックス)で持っている。
そもそもBMPファイルには、ヘッダ、パレット、画像データの順にデータが書いてある。
ある画像を減色して8ビット化したもののパレットを表示したのが下の絵だ。

上は119番のパレットを示しており、色は R:169, G:82, B:84 と記録されている。
あるピクセルを表示しようとする場合の手順は以下の通り。
1.ピクセルのデータとして1バイトのデータを読んでくる。
 データは0~255のいずれかだ。
 ここでは 119 とする。
2.その番号に対応した120セット目のパレット・データを読みに行く。
 順に 0x54, 0x52, 0xA9, 0x00 と書いてある。
 これは BGR の順だ。
 最後に1バイト(0x00)のダミーを加えて4バイトで1セットとなっている。
 256セット、256 × 4 = 1024 bytes 書いてある。
3.液晶の表示ピクセルの青を0x54、緑を0x52、赤を0xA9で光らせる。
4.以上をピクセル数だけ繰り返す。

BMPファイルのデータをCのデータ・ファイルにするプログラムをVB6で作った。

この1.44インチのカラー液晶に実際に写真を表示させる話は「PIC32MM0064GPL028 + ST7735 でプログラム・メモリに置いた画像を表示させる。 – 表示する –
へ続く。
PIC32MM0064GPL028 関連記事一覧

このエントリーをはてなブックマークに追加

Posted under: PIC32MM0064GPL028, 液晶


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.