CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

グラフィックLCD表示テスト

イメージ 1

LCDレジスタを叩く関数をいくつか作り、コマンドを送ってみたところ
とりあえず表示は出るようになりました。
上の写真では全ページにインクリメントデータのパタンを送っています。
任意の座標にドットを描画するには、引数のX,Y座標から左右のプレーン、ページ、カラムアドレス、
ビット位置を算出してデータを書きこむ必要がありますが、既に描画済みものを消さないように
読出したデータと論理和を取って書戻すことになります。
たとえば・・


void set_pixel(char x,char y)
{
  int degit,adrs,plane,page,data;

  adrs = x % 61;
  plane = x / 61;
  degit = y % 8;
  page = y / 8;
  lcd_area(plane,page);
  data=lcd_dget(plane,adrs);
  data|=(1<<degit);
  lcd_dset(plane,adrs,data);
}


ただLCD内の処理やメモリは遅そうなので同じデータ構造の仮想VRAMをボード上のSRAMに準備して
まずこの中で描画を行い、完了したら1画面分を丸々LCDに転送するような処理の方が速そうです。
あと問題なのが画面上に文字を表示する場合、フォントデータが立て切りのものが要るという事。
普通、フォントデータはラスタ方向(横1列)のバイトデータなので変換しなければなりません。