信彦の家
SG12864 ライブラリ
GLCD LIB
(グラフィックLCD SG12864制御 用 ライブラリ)
ライブラリの特徴
  ・全角日本語が簡単に表示できる。
  ・線、四角、丸などの図が簡単に表示できる。
  ・早い!
  ・H8-3069F + MES の環境があれば即座に使える。
  ・MES の環境が無くても、PICやSHでも、ヘッダを編集するだけで使える。(ハズ)
GLCD LIB ダウンロード → glcd_lib_102.zip (225KB)
※ 101 → 102 にバージョンアップしました! 使い方に変更はありません。更に高速に動作します。
後、グラフィックを表示する時は、TETSUYA さんが公開している「 SG12232用フォント作成補助ツール BMP2FONT 」を使うと、ビットマップファイルからC用の配列を書いてくれるので、かなり便利です。
↓↓↓↓↓↓↓↓↓ ファイルの説明とか リファレンスとか ↓↓↓↓↓↓↓↓↓

【 タイトル 】 GLCD LIB Ver.1.02
【 動作環境 】 RAM 4KB以上  ROM 16KB以上 (フォント未使用時
【 作 成 日 】 2008/5/24
【 製 作 者 】 秋月 信彦
【 配布形態 】 フリーウェア
【  転  載  】 自由



■はじめに
この度は「GLCD LIB」をダウンロードして頂き、誠にありがとうございます。
「GLCD LIB」は、マイコンからSG12864を制御するためのライブラリです。
描画用にRAM領域を約2KB使用します。また、日本語フォントデータをコンパイルすると約170KBになるので、使用時はメモリ量にご注意ください。

    使用するRAM領域                        約   2KB
    GLCDライブラリコンパイル時要領(ROM)    約   8KB
    日本語ライブラリコンパイル時要領(ROM)  約 170KB

サンプルではH8/3069Fを使用したソースになっていますが、条件さえ充たしていればヘッダを修正するだけで、PICでもSHでも使えます。


■GLCD LIB の特徴
GLCD LIB は グラフィックLCD SG12864 専用のライブラリです。
高速に動作させるために、グラフィックバッファを2K取り、前回との差分のみをLCDへ送信しています。
そうする事により、LCDへ送信するデータを最小限に抑えられ、高速に動作します。


■ファイルの説明

  ○メインファイル
    メイン動作になるプログラムを書きます。

    main.c  --  ココにいろんな絵を描いたりする動作を書いてね
    main.h  --  ココで共通使用するライブラリなんかのインクルードをしてね

  ○グラフィックLCDライブラリ
    LCDを制御するためのライブラリと、バッファ上に絵を描いたりするためのライブラリです。

    glcd_lib.c  --  ライブラリ用の関数が書いてあります。(ココは変更無しに使えるハズ
    glcd_lib.h  --  ココで、GLCDがどの足につながってるかとか設定してね

  ○全角日本語ライブラリ
    LCDライブラリのバッファ上に日本語を描くためのライブラリです。
    フォントサイズが 12px×12px固定です。(フォントデータを自分で作れば一応変えられる)
    コンパイルするとフォントデータが170Kくらいなので、使用しない場合は外すべし。

    shinonomefont.h  --  フォントデータです。
    zenkaku.c        --  ライブラリ用関数が書いてあります。
    zenkaku.h        --  関数を使うためのヘッダです。

  ○プロジェクトファイル
    MESのWindows用の開発環境 CBar Lite で使用するプロジェクトファイルです。
    CBar を使ってる人は、コレを使えばスグコンパイルできるハズ

    main.cba  --  CBar用プロジェクトファイル
    Makefile  --  普通はCBarが勝手に作ってくれるんだけど、一応置いときます。


■ライブラリリファレンス


  □glcdInit( void )
    ライブラリ、グラフィックLCD機器の初期化をします。

     パラメータ:
       無し

     戻り値:
       無し


  □clearGlcdData( unsigned char ch )
    グラフィックバッファを指定した値でクリアします。

     パラメータ:
       unsigned char  ch  リセットする値( 0x00(真っ白) ~ 0x55(シマシマ) ~ 0xff(真っ黒) )

     戻り値:
       無し


  □sendgGlcdData( void )
    グラフィックバッファに描かれているデータをLCDへ送信します。

     パラメータ:
       無し

     戻り値:
       無し


  □glcdPset( int x, int y, int c )
    グラフィックバッファの指定した位置へ、1pxの点を描きます。

     パラメータ:
       int  x  書き込みたい位置(X座標)
       int  y  書き込みたい位置(Y座標)
       int  c  書き込みたい色( 0=白 / 1=黒 )

     戻り値:
       無し


  □glcdLine( int sx, int sy, int ex, int ey, int c )
    グラフィックバッファに線を描きます。

     パラメータ:
       int  sx  書き込みたい開始位置(X座標)
       int  sy  書き込みたい開始位置(Y座標)
       int  ex  書き込みたい終了位置(X座標)
       int  ey  書き込みたい終了位置(Y座標)
       int  c   書き込みたい色( 0=白 / 1=黒 )

     戻り値:
       無し


  □glcdRect( int sx, int sy, int ex, int ey, int c )
    グラフィックバッファへ四角を描きます。(中は空)

     パラメータ:
       int  sx  書き込みたい開始位置(X座標)
       int  sy  書き込みたい開始位置(Y座標)
       int  ex  書き込みたい終了位置(X座標)
       int  ey  書き込みたい終了位置(Y座標)
       int  c   書き込みたい色( 0=白 / 1=黒 )

     戻り値:
       無し


  □glcdSRect( int sx, int sy, int ex, int ey, int c )
    グラフィックバッファへ四角を描きます。(塗りつぶす)

     パラメータ:
       int  sx  書き込みたい開始位置(X座標)
       int  sy  書き込みたい開始位置(Y座標)
       int  ex  書き込みたい終了位置(X座標)
       int  ey  書き込みたい終了位置(Y座標)
       int  c   書き込みたい色( 0=白 / 1=黒 )

     戻り値:
       無し


  □glcdDdaCircle( int xo, int yo, int r, int c )
     グラフィックバッファへ丸を描きます。(中は空)

     パラメータ:
       int  xo  書き込みたい円の中心点(X座標)
       int  yo  書き込みたい円の中心点(Y座標)
       int  r   書き込みたい円の半径
       int  c   書き込みたい色( 0=白 / 1=黒 )

     戻り値:
       無し


  □glcdDdaSCircle( int xo, int yo, int r, int c )
     グラフィックバッファへ丸を描きます。(塗りつぶす)

     パラメータ:
       int  xo  書き込みたい円の中心点(X座標)
       int  yo  書き込みたい円の中心点(Y座標)
       int  r   書き込みたい円の半径
       int  c   書き込みたい色( 0=白 / 1=黒 )

     戻り値:
       無し


  □glcdImage( int x, int y, int w, int h, unsigned char *data )
     グラフィックバッファへ画像を描く。

     パラメータ:
       int  x  書き込みたい位置(X座標)
       int  y  書き込みたい位置(Y座標)
       int  w  書き込みたい画像の幅
       int  h  書き込みたい画像の高さ
       unsigned char *data  書き込みたい画像データ

     戻り値:
       無し

     グラフィックデータは、高さ8pxを16進数にしたビットデータの羅列を渡します。
     高さ8px以上の画像データを表示する場合も、同じ様に高さ8pxのデータを上から1行
     ずつ羅列していきます。
     例:高さ16px、幅5px の画像を表示する場合、
    unsigned char sima_sima[10] = {
        0x55,0x55,0x55,0x55,0x55, (←上8pxのデータ)
        0x55,0x55,0x55,0x55,0x55  (←下8pxのデータ)
    } ;
    glcdImage( {表示位置X}, {表示位置Y}, 5, 16, sima_sima, 1 ) ;
    


  ※ LCDへの送信モジュールは、後閑哲也さんが公開している
     「 PIC24H 製作例 オシロスコープ 」を参考に作成しました。
     電子工作の実験室 → http://www.picfun.com/
GLCD LIB ダウンロード → glcd_lib_102.zip (225KB)