2010年7月20日火曜日

SG12864A with mbed NXP LPC1768

もう随分前に購入して死蔵していた128x64ドットのモノクロLCDのライブラリを書くためにmbedを使用しました。


以下のようなインターフェースを用いて簡単に使えます。
  1. インスタンスを生成する。ピン配置はヘッダファイルを見て下さい。
    • SG12864A lcd(p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18);
  2. リセットする。
    • lcd.reset();
  3. バッファをクリアする。
    • lcd.bufferClear(reverse);
  4. バッファに線を描画する。
    • lcd.bufferDrawLine(0, 0, SG12864A::PIXEL_X - 1, SG12864A::PIXEL_Y - 1);
  5. バッファに文字を描画する。
    • lcd.bufferDrawString(1, 1, "This is a test #1.");
  6. バッファにチェックボックスを描画する。
    • lcd.bufferDrawCheckbox(50, 50, 60, 60, true);
  7. バッファにプログレスバーを描画する。
    • lcd.bufferDrawProgressbar(10, 10, 118, 20, min, max, val, true);
  8. バッファの内容を表示に反映させる。
    • lcd.bufferPush();
上記のように内部バッファに描画を行い、後でbufferPushを呼ぶことでLCDに反映されるという設計にしました。

このバッファがあることで
  1. 重ねて描画したい時にLCDからデータを読みなおさなくて良い。
  2. 描画指令毎にI/Oしなくて済む。
  3. ページ概念の追加などの拡張対応が可能。
などのメリットが生まれます。

ライブラリは Users » shintamainjp » Published programs » SG12864A に置きました。
何かの参考になれば幸いです。
現在のところハードウェアインターフェースの部分は抽象化していませんが、他のプラットフォームで使う際に再考したいと思います。

0 件のコメント:

コメントを投稿