ルネサス RX65N-Envision-Kit (RX65N 評価ボード RTK5RX65N2C00000BR) を使って写真の描画をしてみました。画面サイズは 480×272 で、表示に使える RAM は 384KB ありますので、1面を表示するだけなら 16ビットカラーが使えます。しかし画面を瞬時に切り替えたりする用途の場合には 2面必要なので、8ビットカラーを使うことにしました。
 

そして、この写真のように表示することができました。

撮影場所は桜で有名な枚方市の天の川の堤防です。

 

描画できるようにする手順を説明します。
 

1. 写真 (jpeg ファイル) の解像度を減らし、カットして 480×272ピクセルのデータにする。
 

2. インデックスカラー (256色) に変換して、ビットマップで複製を作る。
 

註)1. 2. には画像処理ソフト Photoshop Lite を使いました。
 

3. プログラムを組んで、カラーパレットを抽出して、ファイルに次のようなデータを書き出す。
もちろん変数名は cp でなくても自由です。
const unsigned long cp[] = { ... };
 

4. プログラムを組んで、画像データを抽出して、ファイルに次のようなデータを書き出す。
const unsigned char bmp_data[] = { ... };
もちろん変数名は bmp_data でなくても自由です。
 

註)ビットマップ・ファイルは下記のような順で情報が入っています。
// ビットマップ・ファイル・ヘッダー
struct BITMAPFILEHEADER {
    WORD    bfType;      // ファイルタイプ BM
    DWORD   bfSize;      // ファイルサイズ (byte)
    WORD    bfReserved1; // Reserved; 常に 0
    WORD    bfReserved2; // Reserved; 常に 0
    DWORD   bfOffBits;   // ファイル先頭から画像データまでのオフセット(byte)
};
// ビットマップ・情報ヘッダー
struct BITMAPINFOHEADER {
    DWORD      biSize;            // 情報ヘッダサイズ[byte]
    LONG       biWidth;           // 画像の幅[ピクセル]
    LONG       biHeight;          // 画像の高さ[ピクセル]
    WORD       biPlanes;          // プレーン数  常に1
    WORD       biBitCount;        // 色ビット数[bit]  1,4,8,(16),24,32
    DWORD      biCompression;     // 圧縮形式  0,1,2,3
    DWORD      biSizeImage;       // 画像データサイズ[byte]
    LONG       biXPelsPerMeter;   // 水平解像度[dot/m]  0の場合もある
    LONG       biYPelsPerMeter;   // 垂直解像度[dot/m]  0の場合もある
    DWORD      biClrUsed;         // 格納パレット数[使用色数]  0の場合もある
    DWORD      biClrImportant;    // 重要色数  0の場合もある
};
// RGBQUAD (rgbBlue, rgbGreen, rgbRed, rgbReserved) カラーパレット
DWORD palet[256];    // 256色カラーパレット
// 画像データ

プログラムは Visual C++ の Win32 コンソールアプリで作りました。
説明は構造体で書きましたが、実際には fread() で構造体に入れると、Visual C++ では WORD bfType; の次に2バイトパディングされてしまってうまくいかないので、バイトデータとして fread() して、入れ直しました。

LCD 用メモリーセクションは次のように作成しました。
8ビット (256色) のデータバッファーを 2面確保しました。

#pragma section LCD    // リンカーに登録する。リンカーでの名称は BLCD_1 となる。
volatile unsigned char lcd_buffer[2][272][512];
#pragma section

ラインは 480 なのに 512 でバッファーを作っているのは、読み出しが 64バイトなので、64 の整数倍である必要があるからです。
データを設定するプログラムは次のようになります。
// カラーパレット
    for (i=0; i<256; i++) {
      GLCDC.GR2CLUT0[index].LONG = cp[i];
    }
// 画像データ
  for (i=0; i<272; i++) {
    for (j=0; j<480; j++) {
      lcd_buffer[0][i][j] = bmp_data[i * 480 + j];;
    }
  }
 

 電子回路の設計サービス/安田電子設計事務所 はRXマイコンの設計も行っています。
 お困りのことがあればご気軽にお問い合わせください。