秋月電子などで販売されているSHARP製HR-TFTモノクロメモリ液晶を、直接駆動するためのライブラリです。 図形、文字列の描画が可能です。 日本語のフォントも内包していますが、FlashサイズやRAMサイズが小さいものだと扱いきれないかもしれません。 既存のライブラリとは違い、貴重なSPIポートを占拠しません。DigitalOut端子3本でSPIモドキを実現しています。 結線方法については、デモプログラムのページをご参照ください。

Dependents:   SHARP_MEMORYLCD_WJ

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SH_MLCD_J.h Source File

SH_MLCD_J.h

00001 /* Sharp MemoryLCD Graphic Library (with Japanese Font)
00002  * Copyright (c) 2015 Yajirushi(Cursor)
00003  *
00004  * Released under the MIT license
00005  * http://opensource.org/licenses/mit-license.php
00006  *
00007  * Permission is hereby granted, free of charge, to any person obtaining a copy
00008  * of this software and associated documentation files (the "Software"), to deal
00009  * in the Software without restriction, including without limitation the rights
00010  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00011  * copies of the Software, and to permit persons to whom the Software is
00012  * furnished to do so, subject to the following conditions:
00013  *
00014  * The above copyright notice and this permission notice shall be included in
00015  * all copies or substantial portions of the Software.
00016  *
00017  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00018  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00019  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
00020  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00021  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00022  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
00023  * THE SOFTWARE.
00024  * -----------------------------------------------------------------
00025  * M+ BITMAP FONTS
00026  * http://mplus-fonts.osdn.jp/mplus-bitmap-fonts/index.html
00027  *
00028  * LICENSE
00029  *
00030  * These fonts are free software.
00031  * Unlimited permission is granted to use, copy,
00032  * and distribute it, with or without modification,
00033  * either commercially and noncommercially.
00034  *
00035  * THESE FONTS ARE PROVIDED "AS IS" WITHOUT WARRANTY.
00036  */
00037 #include "mbed.h"
00038 
00039 #ifndef SH_MLCD_J
00040 #define SH_MLCD_J
00041 
00042 //SPIモドキの持ち時間
00043 #define SHMLCD_J_SPIWAIT 1
00044 
00045 //MLCDの命令
00046 #define SHMLCD_J_WRITE 0x80
00047 #define SHMLCD_J_COM 0x40
00048 #define SHMLCD_J_CLEAR 0x20
00049 #define SHMLCD_J_DUMMY 0x00
00050 
00051 //ピクセルモード
00052 #define SHMLCD_J_BLACK 0
00053 #define SHMLCD_J_ERASE 1
00054 #define SHMLCD_J_INVERT -1
00055 
00056 /** シャープ製メモリ液晶用直接駆動ライブラリ
00057  *
00058  * 秋月電子通商などで販売されている、シャープ製メモリ液晶を直接駆動させるためのライブラリです。
00059  * 「みんなのラボ」から販売されている、SRAMを介すもの(メモリ液晶ブレークアウト基板)では動作しません。
00060  *
00061  * 2015年時点で販売されている、同じ駆動方式のLCD一覧:(このライブラリで駆動可能)
00062  * LS010B7DH01, LS013B7DH05, LS013B7DH03, LS027B7DH01A, LS044Q7DH01
00063  * (LS012B7DD01, LS013B7DH06は駆動方式が異なるため使用できません)
00064  *
00065  * Example:
00066  * @code
00067  * //メモリ液晶に様々な図形や文字を表示する
00068  *
00069  * #include "mbed.h"
00070  * #include "SH_MLCD_J.h"
00071  *
00072  * SHMLCD_J mlcd(p26, p25, p24);
00073  *
00074  * int main(){
00075  *
00076  *    wait(20.0); //結線完了までの待ち時間(不要であれば削除)
00077  *
00078  *    //初期化(引数にはデータシートに書いてある表示横幅と表示高さを指定する)
00079  *    mlcd.init(400, 240);
00080  *
00081  *    //四角形(即時描画)
00082  *    mlcd.drawRect(15, 15, 20, 20, SHMLCD_J_BLACK, true);
00083  *    mlcd.drawRect2(45, 15, 65, 35, SHMLCD_J_BLACK, true);
00084  *    mlcd.fillRect(75, 15, 20, 20, SHMLCD_J_BLACK, true);
00085  *    mlcd.fill2Point(105, 15, 125, 35, SHMLCD_J_BLACK, true);
00086  *
00087  *    //円(あとで描画):第5引数がfalseだと即時描画しない
00088  *    mlcd.drawCircle(25, 55, 10, SHMLCD_J_BLACK, false);
00089  *    mlcd.fillCircle(55, 55, 10, SHMLCD_J_BLACK, false);
00090  *
00091  *    //小さい文字(あとで描画):第5引数がfalseだと即時描画しない
00092  *    char str1[] = "small text! 小さい文字は余裕。\n改行も有効です。タブは無理。";
00093  *    mlcd.ws(str1, 10, 80, SHMLCD_J_BLACK, false);
00094  *
00095  *    //大きい文字(即時描画):第4引数にズーム倍率(整数)で倍角可能
00096  *    char str2[] = "Large Text! 2倍角も余裕。";
00097  *    mlcd.ws(str2, 10, 160, 2, SHMLCD_J_BLACK, true);
00098  *
00099  *    wait(3.0);
00100  *
00101  *    //表示画素全部更新(ここで円と小さい文字が描画されます)
00102  *    mlcd.writeArrayA();
00103  *
00104  *    wait(3.0);
00105  *
00106  *    //設定された表示幅と高さを取得
00107  *    int width_size = mlcd.getWidth();
00108  *    int height_size = mlcd.getHeight();
00109  *
00110  *    //グリッドを表示
00111  *    //垂直線を等間隔にXOR表示(描画はあとで):第4引数は描画モード
00112  *    //描画モード(fillCircleはSHMLCD_J_INVERTが使えません):
00113  *    // SHMLCD_J_BLACK (0): 黒で描画します
00114  *    // SHMLCD_J_ERASE (1): 白で描画します
00115  *    // SHMLCD_J_INVERT (-1): 画素を反転(XOR)させます(白なら黒、黒なら白)
00116  *    for(int x=10; x<width_size; x+=20){
00117  *        mlcd.drawLine(x, 0, x, height_size-1, SHMLCD_J_INVERT, false);
00118  *    }
00119  *    //水平線を等間隔にXOR表示(描画はあとで):第4引数は描画モード
00120  *    for(int y=10; y<height_size; y+=20){
00121  *        mlcd.drawLine(0, y, width_size-1, y, SHMLCD_J_INVERT, false);
00122  *    }
00123  *
00124  *    //表示画素特定部分だけ更新:ライン80からライン160まで更新
00125  *    mlcd.writeArrayN(80, 160);
00126  *
00127  *    wait(3.0);
00128  *
00129  *    //表示画素全部更新
00130  *    mlcd.writeArrayA();
00131  *
00132  * }
00133  * @endcode
00134  */
00135 class SHMLCD_J{
00136 public:
00137     /** コンストラクタ:SHMLCD_Jクラスのインスタンスを作成します
00138      *
00139      *  @param vSCK メモリ液晶のSCK端子に出力するピンを指定
00140      *  @param vSI メモリ液晶のSI端子に出力するピンを指定
00141      *  @param vCS メモリ液晶のSCS端子に出力するピンを指定
00142      *  @param vCOM メモリ液晶のCOM端子に出力するピンを指定
00143      *  @param vDISP メモリ液晶のDISP端子に出力するピンを指定
00144      */
00145     SHMLCD_J(PinName vSCK, PinName vSI, PinName vCS, PinName vCOM, PinName vDISP);
00146 
00147     /** コンストラクタ:SHMLCD_Jクラスのインスタンスを作成します
00148      *
00149      *  @param vSCK メモリ液晶のSCK端子に出力するピンを管理するDigitalOutポインタを指定
00150      *  @param vSI メモリ液晶のSI端子に出力するピンをを管理するDigitalOutポインタを指定
00151      *  @param vCS メモリ液晶のSCS端子に出力するピンをを管理するDigitalOutポインタを指定
00152      *  @param vCOM メモリ液晶のCOM端子に出力するピンをを管理するDigitalOutポインタを指定
00153      *  @param vDISP メモリ液晶のDISP端子に出力するピンをを管理するDigitalOutポインタを指定
00154      *
00155      * Example:
00156      * @code
00157      * #include "mbed.h"
00158      * #include "SH_MLCD_J.h"
00159      *
00160      * DigitalOut i_sck(p26);
00161      * DigitalOut i_si(p25);
00162      * DigitalOut i_cs(p24);
00163      * DigitalOut i_com(p23);
00164      * DigitalOut i_disp(p22);
00165      *
00166      * int main(){
00167      *     SHMLCD_J mlcd(&i_sck, &i_si, &i_cs, &i_com, &i_disp); //<- 先に宣言したものを&(アドレス)で渡す
00168      *     mlcd.init(400, 240);
00169      *     mlcd.pixel(50, 50);
00170      * }
00171      * @endcode
00172      */
00173     SHMLCD_J(DigitalOut *vSCK, DigitalOut *vSI, DigitalOut *vCS, DigitalOut *vCOM, DigitalOut *vDISP);
00174 
00175     /** コンストラクタ:SHMLCD_Jクラスのインスタンスを作成します(COM端子とDISP端子は使用しません)
00176      *
00177      *  @param vSCK メモリ液晶のSCK端子に出力するピンを指定
00178      *  @param vSI メモリ液晶のSI端子に出力するピンを指定
00179      *  @param vCS メモリ液晶のSCS端子に出力するピンを指定
00180      */
00181     SHMLCD_J(PinName vSCK, PinName vSI, PinName vCS);
00182 
00183     /** コンストラクタ:SHMLCD_Jクラスのインスタンスを作成します(COM端子とDISP端子は使用しません)
00184      *
00185      *  @param vSCK メモリ液晶のSCK端子に出力するピンを管理するDigitalOutポインタを指定
00186      *  @param vSI メモリ液晶のSI端子に出力するピンをを管理するDigitalOutポインタを指定
00187      *  @param vCS メモリ液晶のSCS端子に出力するピンをを管理するDigitalOutポインタを指定
00188      *
00189      * Example:
00190      * @code
00191      * #include "mbed.h"
00192      * #include "SH_MLCD_J.h"
00193      *
00194      * DigitalOut sck(p26);
00195      * DigitalOut si(p25);
00196      * DigitalOut cs(p24);
00197      *
00198      * int main(){
00199      *     SHMLCD_J mlcd(&sck, &si, &cs); //<- 先に宣言したものを&(アドレス)で渡す
00200      *     mlcd.init(400, 240);
00201      *     mlcd.pixel(50, 50);
00202      * }
00203      * @endcode
00204      */
00205     SHMLCD_J(DigitalOut *vSCK, DigitalOut *vSI, DigitalOut *vCS);
00206 
00207     /** デストラクタ:内部配列と使用した変数を削除します(ユーザーが呼ぶ必要はありません)
00208      */
00209     ~SHMLCD_J();
00210 
00211 private:
00212     //ディスプレイの幅、高さ
00213     unsigned short _width, _height;
00214 
00215     //一行のデータ量(_width / 8)
00216     unsigned char _bytes;
00217 
00218     //画素状態記憶用配列
00219     //最大12KByte(400 / 8 * 240 = 12,000)
00220     char *R;
00221 
00222     //通信に使用するピン(SPIモドキ)
00223     DigitalOut *pinSCK, *pinSI, *pinSCS;
00224 
00225     //外部信号用ピン
00226     DigitalOut *pinCOM, *pinDISP;
00227     bool useEcom, useEdisp;
00228 
00229     //COM信号状態
00230     bool comFlag;
00231 
00232     //COM信号用タイマー
00233     Ticker comT;
00234 
00235     //命令送信フラグ
00236     bool busySPI;
00237 
00238     //SPIモドキのコマンド送出
00239     void send_mode(unsigned char val);
00240     void send_addr(unsigned char val);
00241     void send_data(unsigned char val);
00242 
00243 public:
00244     /** 初期化:使用する配列や端子の状態を初期化します
00245      *  @warning インスタンス1つにつき1回しか呼ばないこと
00246      *
00247      *  @param dispWidth メモリ液晶の表示幅をピクセルで指定する
00248      *  @param dispHeight メモリ液晶の表示高さをピクセル指定する
00249      *
00250      *  @retval true 初期化に成功した
00251      *  @retval false 初期化に失敗した(表示幅や高さが間違っている等)
00252      */
00253     bool init(unsigned short dispWidth, unsigned short dispHeight);
00254 
00255     /** 初期化時に指定した表示ピクセル幅を返す
00256      *
00257      *  @returns 初期化時に指定した表示ピクセル幅
00258      */
00259     unsigned short getWidth();
00260 
00261     /** 初期化時に指定した表示ピクセル高さを返す
00262      *
00263      *  @returns 初期化時に指定した表示ピクセル高さ
00264      */
00265     unsigned short getHeight();
00266 
00267     /** 液晶の表示をクリアする:内部画素記憶配列はクリアされない
00268      */
00269     void clear();
00270 
00271     /** 液晶の表示をクリアする:内部画素記憶配列はクリアされない(clear()のエイリアス)
00272      */
00273     void cls();
00274 
00275     /** 内部画素記憶配列をクリアする:表示はクリアされない
00276      */
00277     void clearArray();
00278 
00279     /** 内部画素記憶配列をクリアする:表示はクリアされない(clearArray()のエイリアス)
00280      */
00281     void cla();
00282 
00283     /** DISP端子をONにする:外部DISP信号を使用しない場合は何も起きない
00284      */
00285     void dispON();
00286 
00287     /** DISP端子をOFFにする:外部DISP信号を使用しない場合は何も起きない
00288      */
00289     void dispOFF();
00290 
00291     /** 液晶寿命を延ばすためにCOM信号を反転させる
00292      *
00293      * initの中で自動的にタイマーに登録されるので、ほとんどの場合は呼ぶ必要がない
00294      */
00295     void invertCOM();
00296 
00297     /** 液晶寿命を延ばすためのCOM信号反転をタイマーに登録して自動的に行う
00298      *
00299      * initの中で自動的に呼ばれるので、ほとんどの場合は呼ぶ必要がない
00300      *
00301      * @param tickTime COM信号反転間隔(秒)
00302      */
00303     void regCOMTimer(float tickTime=0.25);
00304 
00305     /** 液晶寿命を延ばすためのCOM信号反転のタイマーを解除する
00306      */
00307     void deregCOMTimer();
00308 
00309     /** 内部画素記憶配列の特定の行にデータを上書きする
00310      *
00311      *  @param ln 上書きする行(0 から 高さ-1 まで)
00312      *  @param data 上書きするデータ
00313      */
00314     void updateArray1(unsigned char ln, const char *data);
00315 
00316     /** 内部画素記憶配列の特定の範囲にデータを上書きする
00317      *
00318      *  @param sn 上書きを開始する行(0 から 高さ-1 まで)
00319      *  @param en 上書きが終了する行(0 から 高さ-1 まで)
00320      *  @param data 上書きするデータ
00321      */
00322     void updateArrayN(unsigned char sn, unsigned char en, const char *data);
00323 
00324     /** 内部画素記憶配列を全て上書きする
00325      *
00326      *  @param data 上書きするデータ
00327      */
00328     void updateArrayA(const char *data);
00329 
00330     /** 内部画素記憶配列の特定の行をメモリ液晶に表示する
00331      *
00332      *  @param ln 表示する行(0 から 高さ-1 まで)
00333      */
00334     void writeArray1(unsigned char ln);
00335 
00336     /** 内部画素記憶配列の特定の範囲をメモリ液晶に表示する
00337      *
00338      *  @param sn 表示したい範囲の開始行(0 から 高さ-1 まで)
00339      *  @param sn 表示したい範囲の終了行(0 から 高さ-1 まで)
00340      */
00341     void writeArrayN(unsigned char sn, unsigned char en);
00342 
00343     /** 内部画素記憶配列を全てメモリ液晶に表示する
00344      */
00345     void writeArrayA();
00346 
00347     /** データをメモリ液晶の特定行に表示する(内部画素記憶配列を介さない)
00348      *
00349      *  @param ln 表示する行(0 から 高さ-1 まで)
00350      *  @param data 表示するデータ
00351      */
00352     void write1(unsigned char ln, const char *data);
00353 
00354     /** データをメモリ液晶の特定の範囲に表示する(内部画素記憶配列を介さない)
00355      *
00356      *  @param sn 表示したい範囲の開始行(0 から 高さ-1 まで)
00357      *  @param en 表示したい範囲の終了行(0 から 高さ-1 まで)
00358      *  @param data 表示するデータ
00359      */
00360     void writeN(unsigned char sn, unsigned char en, const char *data);
00361 
00362     /** データをメモリ液晶全域に表示する(内部画素記憶配列を介さない)
00363      *
00364      *  @param data 表示するデータ
00365      */
00366     void writeA(const char *data);
00367 
00368     /** メモリ液晶の特定の座標に1ピクセルのドットを表示する
00369      *
00370      *  @param x X座標(0 から 幅-1 まで)
00371      *  @param y Y座標(0 から 高さ-1 まで)
00372      *  @param mode 表示モード
00373      *
00374      *  @note modeの一覧:
00375      *   SHMLCD_J_BLACK (0): 黒く表示する
00376      *   SHMLCD_J_ERASE (1): 白く表示する
00377      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00378      *
00379      *  @param immidiate 即時描画させる
00380      */
00381     void pixel(unsigned short x, unsigned short y, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00382 
00383     /** メモリ液晶に線を表示する
00384      *
00385      *  @param fromX 始点のX座標(0 から 幅-1 まで)
00386      *  @param fromY 始点のY座標(0 から 高さ-1 まで)
00387      *  @param toX 終点のX座標(0 から 幅-1 まで)
00388      *  @param toY 終点のY座標(0 から 高さ-1 まで)
00389      *  @param mode 表示モード
00390      *
00391      *  @note modeの一覧:
00392      *   SHMLCD_J_BLACK (0): 黒く表示する
00393      *   SHMLCD_J_ERASE (1): 白く表示する
00394      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00395      *
00396      *  @param immidiate 即時描画させる
00397      */
00398     void drawLine(unsigned short fromX, unsigned short fromY, unsigned short toX, unsigned short toY, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00399 
00400     /** メモリ液晶に四角形を表示する
00401      *
00402      *  @param left 画面左端からの距離(0 から 幅-1 まで)
00403      *  @param top 画面上端からの距離(0 から 高さ-1 まで)
00404      *  @param width 四角形の幅
00405      *  @param height 四角形の高さ
00406      *  @param mode 表示モード
00407      *
00408      *  @note modeの一覧:
00409      *   SHMLCD_J_BLACK (0): 黒く表示する
00410      *   SHMLCD_J_ERASE (1): 白く表示する
00411      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00412      *
00413      *  @param immidiate 即時描画させる
00414      */
00415     void drawRect(unsigned short left, unsigned short top, unsigned short width, unsigned short height, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00416 
00417     /** メモリ液晶に四角形を表示する(対角点指定)
00418      *
00419      *  @param x1 四角形の左上の点のX座標(0 から 幅-1 まで)
00420      *  @param y1 四角形の左上の点のY座標(0 から 高さ-1 まで)
00421      *  @param x2 四角形の右下の点のX座標(0 から 幅-1 まで)
00422      *  @param y2 四角形の右下の点のY座標(0 から 高さ-1 まで)
00423      *  @param mode 表示モード
00424      *
00425      *  @note modeの一覧:
00426      *   SHMLCD_J_BLACK (0): 黒く表示する
00427      *   SHMLCD_J_ERASE (1): 白く表示する
00428      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00429      *
00430      *  @param immidiate 即時描画させる
00431      */
00432     void drawRect2(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00433 
00434     /** メモリ液晶に塗りつぶされた四角形を表示する
00435      *
00436      *  @param left 画面左端からの距離(0 から 幅-1 まで)
00437      *  @param top 画面上端からの距離(0 から 高さ-1 まで)
00438      *  @param width 四角形の幅
00439      *  @param height 四角形の高さ
00440      *  @param mode 表示モード
00441      *
00442      *  @note modeの一覧:
00443      *   SHMLCD_J_BLACK (0): 黒く表示する
00444      *   SHMLCD_J_ERASE (1): 白く表示する
00445      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00446      *
00447      *  @param immidiate 即時描画させる
00448      */
00449     void fillRect(unsigned short left, unsigned short top, unsigned short width, unsigned short height, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00450 
00451     /** メモリ液晶に塗りつぶされた四角形を表示する(対角点指定)
00452      *
00453      *  @param x1 四角形の左上の点のX座標(0 から 幅-1 まで)
00454      *  @param y1 四角形の左上の点のY座標(0 から 高さ-1 まで)
00455      *  @param x2 四角形の右下の点のX座標(0 から 幅-1 まで)
00456      *  @param y2 四角形の右下の点のY座標(0 から 高さ-1 まで)
00457      *  @param mode 表示モード
00458      *
00459      *  @note modeの一覧:
00460      *   SHMLCD_J_BLACK (0): 黒く表示する
00461      *   SHMLCD_J_ERASE (1): 白く表示する
00462      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00463      *
00464      *  @param immidiate 即時描画させる
00465      */
00466     void fill2Point(unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00467 
00468     /** メモリ液晶に円を表示する
00469      *
00470      *  @param centerX 円の中心のX座標(0 から 幅-1 まで)
00471      *  @param centerY 円の中心のY座標(0 から 高さ-1 まで)
00472      *  @param r 円の半径
00473      *  @param mode 表示モード
00474      *
00475      *  @note modeの一覧:
00476      *   SHMLCD_J_BLACK (0): 黒く表示する
00477      *   SHMLCD_J_ERASE (1): 白く表示する
00478      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00479      *
00480      *  @param immidiate 即時描画させる
00481      */
00482     void drawCircle(unsigned short centerX, unsigned short centerY, unsigned short r, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00483 
00484     /** メモリ液晶に塗りつぶされた円を表示する
00485      *
00486      *  @param centerX 円の中心のX座標(0 から 幅-1 まで)
00487      *  @param centerY 円の中心のY座標(0 から 高さ-1 まで)
00488      *  @param r 円の半径
00489      *  @param mode 表示モード
00490      *
00491      *  @note modeの一覧:
00492      *   SHMLCD_J_BLACK (0): 黒く表示する
00493      *   SHMLCD_J_ERASE (1): 白く表示する
00494      *   SHMLCD_J_INVERT (-1): fillCircleは描画方法が特殊なためうまく描画できません
00495      *
00496      *  @param immidiate 即時描画させる
00497      */
00498     void fillCircle(unsigned short centerX, unsigned short centerY, unsigned short r, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00499 
00500     /** メモリ液晶に文字を表示する
00501      *
00502      *  @param s 表示する文字
00503      *  @param x テキストを囲う四角形の左上のX座標
00504      *  @param y テキストを囲う四角形の左上のY座標
00505      *  @param zoom 拡大倍率
00506      *  @param mode 表示モード
00507      *
00508      *  @note modeの一覧:
00509      *   SHMLCD_J_BLACK (0): 黒く表示する
00510      *   SHMLCD_J_ERASE (1): 白く表示する
00511      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00512      *
00513      *  @param immidiate 即時描画させる
00514      *
00515      *  @retval -1 表示できなかった
00516      *  @retval 0以上 文字のバイトサイズ
00517      */
00518     signed char drawChar(const char *s, unsigned short x, unsigned short y, unsigned char zoom, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00519 
00520     /** メモリ液晶に文字列を表示する
00521      *
00522      *  @param str 表示する文字列
00523      *  @param x テキストを囲う四角形の左上のX座標
00524      *  @param y テキストを囲う四角形の左上のY座標
00525      *  @param zoom 拡大倍率
00526      *  @param mode 表示モード
00527      *
00528      *  @note modeの一覧:
00529      *   SHMLCD_J_BLACK (0): 黒く表示する
00530      *   SHMLCD_J_ERASE (1): 白く表示する
00531      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00532      *
00533      *  @param immidiate 即時描画させる
00534      *
00535      *  @retval -1 表示できなかった
00536      *  @retval 1 表示できた
00537      */
00538     signed char writeString(const char *str, unsigned short x, unsigned short y, unsigned char zoom, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00539 
00540     /** メモリ液晶に文字列を表示する
00541      *
00542      *  @param str 表示する文字列
00543      *  @param x テキストを囲う四角形の左上のX座標
00544      *  @param y テキストを囲う四角形の左上のY座標
00545      *  @param mode 表示モード
00546      *
00547      *  @note modeの一覧:
00548      *   SHMLCD_J_BLACK (0): 黒く表示する
00549      *   SHMLCD_J_ERASE (1): 白く表示する
00550      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00551      *
00552      *  @param immidiate 即時描画させる
00553      *
00554      *  @retval -1 表示できなかった
00555      *  @retval 1 表示できた
00556      */
00557     signed char writeString(const char *str, unsigned short x, unsigned short y, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00558 
00559     /** メモリ液晶に文字列を表示する(writeStringのエイリアス)
00560      *
00561      *  @param str 表示する文字列
00562      *  @param x テキストを囲う四角形の左上のX座標
00563      *  @param y テキストを囲う四角形の左上のY座標
00564      *  @param zoom 拡大倍率
00565      *  @param mode 表示モード
00566      *
00567      *  @note modeの一覧:
00568      *   SHMLCD_J_BLACK (0): 黒く表示する
00569      *   SHMLCD_J_ERASE (1): 白く表示する
00570      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00571      *
00572      *  @param immidiate 即時描画させる
00573      *
00574      *  @retval -1 表示できなかった
00575      *  @retval 1 表示できた
00576      */
00577     signed char ws(const char *str, unsigned short x, unsigned short y, unsigned char zoom, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00578 
00579     /** メモリ液晶に文字列を表示する(writeStringのエイリアス)
00580      *
00581      *  @param str 表示する文字列
00582      *  @param x テキストを囲う四角形の左上のX座標
00583      *  @param y テキストを囲う四角形の左上のY座標
00584      *  @param mode 表示モード
00585      *
00586      *  @note modeの一覧:
00587      *   SHMLCD_J_BLACK (0): 黒く表示する
00588      *   SHMLCD_J_ERASE (1): 白く表示する
00589      *   SHMLCD_J_INVERT (-1): 画素を逆転させる(黒なら白、白なら黒)
00590      *
00591      *  @param immidiate 即時描画させる
00592      *
00593      *  @retval -1 表示できなかった
00594      *  @retval 1 表示できた
00595      */
00596     signed char ws(const char *str, unsigned short x, unsigned short y, signed char mode=SHMLCD_J_BLACK, bool immidiate=true);
00597 };
00598 
00599 #endif