LCDモジュール AQM0802 を制御するクラス
LcdAqm0802.h@0:ea6cbd4e50ce, 2016-12-18 (annotated)
- Committer:
- orivant
- Date:
- Sun Dec 18 08:12:40 2016 +0000
- Revision:
- 0:ea6cbd4e50ce
- Child:
- 1:9ac3c6f45e84
LCD?????AQM0802?????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
orivant | 0:ea6cbd4e50ce | 1 | /** |
orivant | 0:ea6cbd4e50ce | 2 | * @file LCDモジュール AQM0802 を制御するクラスの宣言 |
orivant | 0:ea6cbd4e50ce | 3 | */ |
orivant | 0:ea6cbd4e50ce | 4 | #if !defined(LCD_AQM0802_H) |
orivant | 0:ea6cbd4e50ce | 5 | |
orivant | 0:ea6cbd4e50ce | 6 | #include "mbed.h" |
orivant | 0:ea6cbd4e50ce | 7 | |
orivant | 0:ea6cbd4e50ce | 8 | #define LCD_AQM0802_H |
orivant | 0:ea6cbd4e50ce | 9 | |
orivant | 0:ea6cbd4e50ce | 10 | |
orivant | 0:ea6cbd4e50ce | 11 | /** LCDモジュール AQM0802 制御クラス |
orivant | 0:ea6cbd4e50ce | 12 | * @brief LCDモジュール AQM0802 をI2C通信で制御するクラス |
orivant | 0:ea6cbd4e50ce | 13 | * @date 2016/12/18 |
orivant | 0:ea6cbd4e50ce | 14 | * @code |
orivant | 0:ea6cbd4e50ce | 15 | * #include "mbed.h" |
orivant | 0:ea6cbd4e50ce | 16 | * #include "LcdAqm0802.h" |
orivant | 0:ea6cbd4e50ce | 17 | * |
orivant | 0:ea6cbd4e50ce | 18 | * LcdAqm0802 lcd(p8, p9, p10); |
orivant | 0:ea6cbd4e50ce | 19 | * |
orivant | 0:ea6cbd4e50ce | 20 | * int main() { |
orivant | 0:ea6cbd4e50ce | 21 | * wait_ms(40); //!< LCD動作が安定するまで電源投入後40ms以上待つ必要がある |
orivant | 0:ea6cbd4e50ce | 22 | * lcd.initialize(); |
orivant | 0:ea6cbd4e50ce | 23 | * |
orivant | 0:ea6cbd4e50ce | 24 | * lcd.puts("Hallow\r\nWorld!"); |
orivant | 0:ea6cbd4e50ce | 25 | * |
orivant | 0:ea6cbd4e50ce | 26 | * wait(1) { |
orivant | 0:ea6cbd4e50ce | 27 | * } |
orivant | 0:ea6cbd4e50ce | 28 | * } |
orivant | 0:ea6cbd4e50ce | 29 | * @endcode |
orivant | 0:ea6cbd4e50ce | 30 | */ |
orivant | 0:ea6cbd4e50ce | 31 | class LcdAqm0802 { |
orivant | 0:ea6cbd4e50ce | 32 | public: |
orivant | 0:ea6cbd4e50ce | 33 | static const uint8_t SLAVE_ADDR = 0x7c; //!< LCDのスレーブアドレス |
orivant | 0:ea6cbd4e50ce | 34 | static const uint8_t LINE_COUNT = 2; //!< 行数 |
orivant | 0:ea6cbd4e50ce | 35 | static const uint8_t LINE_CHARA_COUNT = 8; //!< 行の文字数 |
orivant | 0:ea6cbd4e50ce | 36 | |
orivant | 0:ea6cbd4e50ce | 37 | static const uint8_t MAX_CONTRAST = 63; //!< コントラスト最大値 |
orivant | 0:ea6cbd4e50ce | 38 | static const uint8_t DEFAULT_CONTRAST = 32; //!< コントラスト初期値 |
orivant | 0:ea6cbd4e50ce | 39 | |
orivant | 0:ea6cbd4e50ce | 40 | private: |
orivant | 0:ea6cbd4e50ce | 41 | static const int32_t I2C_MAX_FREQUENCY = 400 * 1000; //!< I2C通信の最高周波数 |
orivant | 0:ea6cbd4e50ce | 42 | static const uint8_t LINE_HEAD_ADDR_TBL[LINE_COUNT]; //!< 行先頭アドレス |
orivant | 0:ea6cbd4e50ce | 43 | |
orivant | 0:ea6cbd4e50ce | 44 | static const uint8_t CTRL_BYTE_RS_COMMAND = 0x00; //!< 制御指定用bit_RS:コマンド送信 |
orivant | 0:ea6cbd4e50ce | 45 | static const uint8_t CTRL_BYTE_RS_DATA = 0x40; //!< 制御指定用bit_RS:データ送信 |
orivant | 0:ea6cbd4e50ce | 46 | static const uint8_t CTRL_BYTE_CO_SINGLE = 0x80; //!< 制御指定用bit_Co:単発 |
orivant | 0:ea6cbd4e50ce | 47 | static const uint8_t CTRL_BYTE_CO_CHAIN = 0x00; //!< 制御指定用bit_Co:連続 |
orivant | 0:ea6cbd4e50ce | 48 | |
orivant | 0:ea6cbd4e50ce | 49 | static const uint8_t ADDR_BYTE_WRITE = SLAVE_ADDR; //!< アドレス指定用バイトデータ:書き込み |
orivant | 0:ea6cbd4e50ce | 50 | static const uint8_t ADDR_BYTE_READ = SLAVE_ADDR | 0x01; //!< アドレス指定用バイトデータ:読み込み |
orivant | 0:ea6cbd4e50ce | 51 | static const uint8_t CTRL_BYTE_SINGLE_COMMAND = CTRL_BYTE_RS_COMMAND | CTRL_BYTE_CO_SINGLE; //!< 制御指定用バイトデータ:単発コマンド |
orivant | 0:ea6cbd4e50ce | 52 | static const uint8_t CTRL_BYTE_CHAIN_COMMAND = CTRL_BYTE_RS_COMMAND | CTRL_BYTE_CO_CHAIN; //!< 制御指定用バイトデータ:連続コマンド |
orivant | 0:ea6cbd4e50ce | 53 | static const uint8_t CTRL_BYTE_SINGLE_DATA = CTRL_BYTE_RS_DATA | CTRL_BYTE_CO_SINGLE; //!< 制御指定用バイトデータ:単発データ |
orivant | 0:ea6cbd4e50ce | 54 | static const uint8_t CTRL_BYTE_CHAIN_DATA = CTRL_BYTE_RS_DATA | CTRL_BYTE_CO_CHAIN; //!< 制御指定用バイトデータ:連続データ |
orivant | 0:ea6cbd4e50ce | 55 | |
orivant | 0:ea6cbd4e50ce | 56 | static const uint8_t FUNC_SET_BYTE_EX = 0x39; //!< ファンクションセット用バイト:拡張設定 |
orivant | 0:ea6cbd4e50ce | 57 | static const uint8_t FUNC_SET_BYTE_NRM = 0x38; //!< ファンクションセット用バイト:通常設定 |
orivant | 0:ea6cbd4e50ce | 58 | |
orivant | 0:ea6cbd4e50ce | 59 | private: |
orivant | 0:ea6cbd4e50ce | 60 | PinName m_pinReset; //!< リセットピン |
orivant | 0:ea6cbd4e50ce | 61 | PinName m_pinSDA; //!< SDAピン |
orivant | 0:ea6cbd4e50ce | 62 | PinName m_pinSCL; //!< SCLピン |
orivant | 0:ea6cbd4e50ce | 63 | DigitalOut m_resetOut; //!< リセット制御 |
orivant | 0:ea6cbd4e50ce | 64 | I2C m_i2c; //!< I2C制御 |
orivant | 0:ea6cbd4e50ce | 65 | |
orivant | 0:ea6cbd4e50ce | 66 | bool m_displayVisible; //!< ディスプレイ表示フラグ |
orivant | 0:ea6cbd4e50ce | 67 | bool m_cursorVisible; //!< カーソル表示フラグ |
orivant | 0:ea6cbd4e50ce | 68 | bool m_blinkEnable; //!< カーソル点滅フラグ |
orivant | 0:ea6cbd4e50ce | 69 | |
orivant | 0:ea6cbd4e50ce | 70 | uint8_t m_contrast; //!< コントラスト |
orivant | 0:ea6cbd4e50ce | 71 | uint8_t m_currentLineNo; //!< 現在位置:行 |
orivant | 0:ea6cbd4e50ce | 72 | uint8_t m_currentCharaNo; //!< 現在位置:文字 |
orivant | 0:ea6cbd4e50ce | 73 | public: |
orivant | 0:ea6cbd4e50ce | 74 | /** コンストラクタ |
orivant | 0:ea6cbd4e50ce | 75 | * @brief クラス内のI2Cインスタンスを使用する場合のコンストラクタ |
orivant | 0:ea6cbd4e50ce | 76 | * @param pinReset リセットピン指定 |
orivant | 0:ea6cbd4e50ce | 77 | * @param pinSDA SDAピン指定 |
orivant | 0:ea6cbd4e50ce | 78 | * @param pinSCL SCLピン指定 |
orivant | 0:ea6cbd4e50ce | 79 | */ |
orivant | 0:ea6cbd4e50ce | 80 | LcdAqm0802(PinName pinReset, PinName pinSDA, PinName pinSCL); |
orivant | 0:ea6cbd4e50ce | 81 | /** コンストラクタ |
orivant | 0:ea6cbd4e50ce | 82 | * @brief クラス外のI2Cインスタンスを使用する場合のコンストラクタ |
orivant | 0:ea6cbd4e50ce | 83 | * @param pinReset リセットピン指定 |
orivant | 0:ea6cbd4e50ce | 84 | * @param i2c I2Cインスタンス |
orivant | 0:ea6cbd4e50ce | 85 | */ |
orivant | 0:ea6cbd4e50ce | 86 | LcdAqm0802(PinName pinReset, I2C& i2c); |
orivant | 0:ea6cbd4e50ce | 87 | /** デストラクタ |
orivant | 0:ea6cbd4e50ce | 88 | */ |
orivant | 0:ea6cbd4e50ce | 89 | ~LcdAqm0802(); |
orivant | 0:ea6cbd4e50ce | 90 | |
orivant | 0:ea6cbd4e50ce | 91 | |
orivant | 0:ea6cbd4e50ce | 92 | /** 初期化 |
orivant | 0:ea6cbd4e50ce | 93 | * @brief LCDの表示に必要な各種初期化を行います。 |
orivant | 0:ea6cbd4e50ce | 94 | * これを行わないと表示されません。 |
orivant | 0:ea6cbd4e50ce | 95 | * ※LCDに電源投入後(もしくはリセット後)、必ず40ms以上経過後に呼び出してください。 |
orivant | 0:ea6cbd4e50ce | 96 | */ |
orivant | 0:ea6cbd4e50ce | 97 | void initialize(); |
orivant | 0:ea6cbd4e50ce | 98 | /** リセット |
orivant | 0:ea6cbd4e50ce | 99 | * @brief LCDを初期化前の状態に戻します。 |
orivant | 0:ea6cbd4e50ce | 100 | */ |
orivant | 0:ea6cbd4e50ce | 101 | void reset(); |
orivant | 0:ea6cbd4e50ce | 102 | |
orivant | 0:ea6cbd4e50ce | 103 | |
orivant | 0:ea6cbd4e50ce | 104 | /** 1文字描画 |
orivant | 0:ea6cbd4e50ce | 105 | * @brief 1文字描画します。 |
orivant | 0:ea6cbd4e50ce | 106 | * カーソル位置は一つ進みます。 |
orivant | 0:ea6cbd4e50ce | 107 | * 行端まで来た場合は自動で復帰・改行します。 |
orivant | 0:ea6cbd4e50ce | 108 | * @param c 文字コード |
orivant | 0:ea6cbd4e50ce | 109 | */ |
orivant | 0:ea6cbd4e50ce | 110 | void putc(char c); |
orivant | 0:ea6cbd4e50ce | 111 | /** 文字列描画 |
orivant | 0:ea6cbd4e50ce | 112 | * @brief 文字列の終端まで描画します。 |
orivant | 0:ea6cbd4e50ce | 113 | * カーソル位置は文字数分進みます。 |
orivant | 0:ea6cbd4e50ce | 114 | * 行端まで来た場合は自動で復帰・改行します。 |
orivant | 0:ea6cbd4e50ce | 115 | * @param pStr 文字列 |
orivant | 0:ea6cbd4e50ce | 116 | */ |
orivant | 0:ea6cbd4e50ce | 117 | void puts(const char* pStr); |
orivant | 0:ea6cbd4e50ce | 118 | /** フォーマット指定描画 |
orivant | 0:ea6cbd4e50ce | 119 | * @brief フォーマットと可変長引数から生成した文字列を描画します。 |
orivant | 0:ea6cbd4e50ce | 120 | * 文字列生成後、puts()を内部で呼び出しています。 |
orivant | 0:ea6cbd4e50ce | 121 | * @param pFormat フォーマット |
orivant | 0:ea6cbd4e50ce | 122 | * @param ... 可変長引数 |
orivant | 0:ea6cbd4e50ce | 123 | */ |
orivant | 0:ea6cbd4e50ce | 124 | void printf(const char* pFormat, ...); |
orivant | 0:ea6cbd4e50ce | 125 | |
orivant | 0:ea6cbd4e50ce | 126 | |
orivant | 0:ea6cbd4e50ce | 127 | /** カーソル位置変更 |
orivant | 0:ea6cbd4e50ce | 128 | * @brief 指定位置までカーソルを移動させます。 |
orivant | 0:ea6cbd4e50ce | 129 | * @param lineNo 行番号(0~LINE_COUNT) |
orivant | 0:ea6cbd4e50ce | 130 | * @param charaNo 文字番号(0~LINE_CHARA_COUNT) |
orivant | 0:ea6cbd4e50ce | 131 | */ |
orivant | 0:ea6cbd4e50ce | 132 | void locate(uint8_t lineNo, uint8_t charaNo); |
orivant | 0:ea6cbd4e50ce | 133 | /** カーソル位置取得:行番号 |
orivant | 0:ea6cbd4e50ce | 134 | * @return カーソルのある行番号 |
orivant | 0:ea6cbd4e50ce | 135 | */ |
orivant | 0:ea6cbd4e50ce | 136 | uint8_t getCurrentLineNo() const; |
orivant | 0:ea6cbd4e50ce | 137 | /** カーソル位置取得:文字番号 |
orivant | 0:ea6cbd4e50ce | 138 | * @return カーソルのある文字番号 |
orivant | 0:ea6cbd4e50ce | 139 | */ |
orivant | 0:ea6cbd4e50ce | 140 | uint8_t getCurrentCharaNo() const; |
orivant | 0:ea6cbd4e50ce | 141 | |
orivant | 0:ea6cbd4e50ce | 142 | |
orivant | 0:ea6cbd4e50ce | 143 | /** 画面クリア |
orivant | 0:ea6cbd4e50ce | 144 | * @brief 画面全域をクリアし、カーソル位置を先頭に移動させます。 |
orivant | 0:ea6cbd4e50ce | 145 | */ |
orivant | 0:ea6cbd4e50ce | 146 | void clearDisplay(); |
orivant | 0:ea6cbd4e50ce | 147 | /** 行クリア |
orivant | 0:ea6cbd4e50ce | 148 | * @brief 指定行をクリアし、カーソルを指定行の先頭に移動させます。 |
orivant | 0:ea6cbd4e50ce | 149 | * @param lineNo 行番号 |
orivant | 0:ea6cbd4e50ce | 150 | */ |
orivant | 0:ea6cbd4e50ce | 151 | void clearLine(uint8_t lineNo); |
orivant | 0:ea6cbd4e50ce | 152 | /** 範囲クリア |
orivant | 0:ea6cbd4e50ce | 153 | * @brief 指定範囲をクリアし、カーソルを指定範囲の開始位置に移動させます。 |
orivant | 0:ea6cbd4e50ce | 154 | * @param startLineNo 開始行番号 |
orivant | 0:ea6cbd4e50ce | 155 | * @param startCharaNo 開始文字番号 |
orivant | 0:ea6cbd4e50ce | 156 | * @param endLineNo; 終了行番号 |
orivant | 0:ea6cbd4e50ce | 157 | * @param endCharaNo 終了文字番号 |
orivant | 0:ea6cbd4e50ce | 158 | */ |
orivant | 0:ea6cbd4e50ce | 159 | void clearRange(uint8_t startLineNo, uint8_t startCharaNo, uint8_t endLineNo, uint8_t endCharaNo); |
orivant | 0:ea6cbd4e50ce | 160 | |
orivant | 0:ea6cbd4e50ce | 161 | |
orivant | 0:ea6cbd4e50ce | 162 | /** 画面の表示設定 |
orivant | 0:ea6cbd4e50ce | 163 | * @param visible 表示フラグ |
orivant | 0:ea6cbd4e50ce | 164 | */ |
orivant | 0:ea6cbd4e50ce | 165 | void setDisplayVisible(bool visible); |
orivant | 0:ea6cbd4e50ce | 166 | /** 画面の表示設定取得 |
orivant | 0:ea6cbd4e50ce | 167 | * @return 表示フラグ |
orivant | 0:ea6cbd4e50ce | 168 | */ |
orivant | 0:ea6cbd4e50ce | 169 | bool getDisplayVisible() const; |
orivant | 0:ea6cbd4e50ce | 170 | /** カーソルの表示設定 |
orivant | 0:ea6cbd4e50ce | 171 | * @param visible 表示フラグ |
orivant | 0:ea6cbd4e50ce | 172 | */ |
orivant | 0:ea6cbd4e50ce | 173 | void setCursorVisible(bool visible); |
orivant | 0:ea6cbd4e50ce | 174 | /** カーソルの表示設定取得 |
orivant | 0:ea6cbd4e50ce | 175 | * @return 表示フラグ |
orivant | 0:ea6cbd4e50ce | 176 | */ |
orivant | 0:ea6cbd4e50ce | 177 | bool getCursorVisible() const; |
orivant | 0:ea6cbd4e50ce | 178 | /** カーソルの点滅設定 |
orivant | 0:ea6cbd4e50ce | 179 | * @param enable 点滅フラグ |
orivant | 0:ea6cbd4e50ce | 180 | */ |
orivant | 0:ea6cbd4e50ce | 181 | void setBlinkEnable(bool enable); |
orivant | 0:ea6cbd4e50ce | 182 | /** カーソルの点滅設定取得 |
orivant | 0:ea6cbd4e50ce | 183 | * @return 点滅フラグ |
orivant | 0:ea6cbd4e50ce | 184 | */ |
orivant | 0:ea6cbd4e50ce | 185 | bool getBlinkEnable() const; |
orivant | 0:ea6cbd4e50ce | 186 | |
orivant | 0:ea6cbd4e50ce | 187 | |
orivant | 0:ea6cbd4e50ce | 188 | /** コントラスト設定 |
orivant | 0:ea6cbd4e50ce | 189 | * @param val コントラスト値(0~MAX_CONTRAST) |
orivant | 0:ea6cbd4e50ce | 190 | */ |
orivant | 0:ea6cbd4e50ce | 191 | void setContrast(uint8_t val); |
orivant | 0:ea6cbd4e50ce | 192 | /** コントラスト取得 |
orivant | 0:ea6cbd4e50ce | 193 | * @return コントラスト値 |
orivant | 0:ea6cbd4e50ce | 194 | */ |
orivant | 0:ea6cbd4e50ce | 195 | uint8_t getContrast() const; |
orivant | 0:ea6cbd4e50ce | 196 | private: |
orivant | 0:ea6cbd4e50ce | 197 | /** LCDコマンド単発書き込み |
orivant | 0:ea6cbd4e50ce | 198 | * @brief LCDのコマンドを一つ書き込み(実行し)ます。 |
orivant | 0:ea6cbd4e50ce | 199 | * @param commandByte コマンド指定バイトデータ |
orivant | 0:ea6cbd4e50ce | 200 | */ |
orivant | 0:ea6cbd4e50ce | 201 | void writeCommand(uint8_t commandByte); |
orivant | 0:ea6cbd4e50ce | 202 | /** LCDコマンド連続書き込み |
orivant | 0:ea6cbd4e50ce | 203 | * @brief LCDのコマンドを複数書き込み(実行し)ます。 |
orivant | 0:ea6cbd4e50ce | 204 | * @param commandBytes コマンド指定バイトデータ配列 |
orivant | 0:ea6cbd4e50ce | 205 | * @param commandCount コマンド指定バイトデータ数 |
orivant | 0:ea6cbd4e50ce | 206 | */ |
orivant | 0:ea6cbd4e50ce | 207 | void writeCommand(uint8_t commandBytes[], uint8_t commandCount); |
orivant | 0:ea6cbd4e50ce | 208 | /** LCDデータ単発書き込み |
orivant | 0:ea6cbd4e50ce | 209 | * @brief LCDのデータを一つ書き込み(実行し)ます。 |
orivant | 0:ea6cbd4e50ce | 210 | * @param dataByte データ指定バイトデータ |
orivant | 0:ea6cbd4e50ce | 211 | */ |
orivant | 0:ea6cbd4e50ce | 212 | void writeData(uint8_t dataByte); |
orivant | 0:ea6cbd4e50ce | 213 | /** LCDデータ連続書き込み |
orivant | 0:ea6cbd4e50ce | 214 | * @brief LCDのデータを複数書き込み(実行し)ます。 |
orivant | 0:ea6cbd4e50ce | 215 | * @param dataBytes データ指定バイトデータ配列 |
orivant | 0:ea6cbd4e50ce | 216 | * @param dataCount データ指定バイトデータ数 |
orivant | 0:ea6cbd4e50ce | 217 | */ |
orivant | 0:ea6cbd4e50ce | 218 | void writeData(uint8_t dataBytes[], uint8_t dataCount); |
orivant | 0:ea6cbd4e50ce | 219 | |
orivant | 0:ea6cbd4e50ce | 220 | |
orivant | 0:ea6cbd4e50ce | 221 | /** コントラスト設定用バイトデータ生成(上位ビット) |
orivant | 0:ea6cbd4e50ce | 222 | * @return コントラスト設定用バイトデータ(上位ビット) |
orivant | 0:ea6cbd4e50ce | 223 | */ |
orivant | 0:ea6cbd4e50ce | 224 | uint8_t calcContrastSettingByteUpper() const; |
orivant | 0:ea6cbd4e50ce | 225 | /** コントラスト設定用バイトデータ生成(下位ビット) |
orivant | 0:ea6cbd4e50ce | 226 | * @return コントラスト設定用バイトデータ(下位ビット) |
orivant | 0:ea6cbd4e50ce | 227 | */ |
orivant | 0:ea6cbd4e50ce | 228 | uint8_t calcContrastSettingByteLowwer() const; |
orivant | 0:ea6cbd4e50ce | 229 | |
orivant | 0:ea6cbd4e50ce | 230 | |
orivant | 0:ea6cbd4e50ce | 231 | /** ディスプレイ制御コマンド指定バイトデータの生成 |
orivant | 0:ea6cbd4e50ce | 232 | * @param displayVisible ディスプレイ表示設定 |
orivant | 0:ea6cbd4e50ce | 233 | * @param cursorVisible カーソル表示設定 |
orivant | 0:ea6cbd4e50ce | 234 | * @param blinkEnable カーソル点滅設定 |
orivant | 0:ea6cbd4e50ce | 235 | * @return コマンド指定バイトデータ |
orivant | 0:ea6cbd4e50ce | 236 | */ |
orivant | 0:ea6cbd4e50ce | 237 | uint8_t calcDisplayControlByteData(bool displayVisible, bool cursorVisible, bool blinkEnable) const; |
orivant | 0:ea6cbd4e50ce | 238 | uint8_t calcDisplayControlByteData() const { |
orivant | 0:ea6cbd4e50ce | 239 | return calcDisplayControlByteData(m_displayVisible, m_cursorVisible, m_blinkEnable); |
orivant | 0:ea6cbd4e50ce | 240 | } |
orivant | 0:ea6cbd4e50ce | 241 | |
orivant | 0:ea6cbd4e50ce | 242 | |
orivant | 0:ea6cbd4e50ce | 243 | /** カーソル位置移動管理 |
orivant | 0:ea6cbd4e50ce | 244 | * @brief カーソル位置を一つ進め、改行が発生するかを調べる |
orivant | 0:ea6cbd4e50ce | 245 | * @return 改行が発生する場合はtrue |
orivant | 0:ea6cbd4e50ce | 246 | */ |
orivant | 0:ea6cbd4e50ce | 247 | bool incCursorPos(); |
orivant | 0:ea6cbd4e50ce | 248 | |
orivant | 0:ea6cbd4e50ce | 249 | |
orivant | 0:ea6cbd4e50ce | 250 | /** カーソル位置のアドレス計算 |
orivant | 0:ea6cbd4e50ce | 251 | * @param lineNo 行番号 |
orivant | 0:ea6cbd4e50ce | 252 | * @param charaNo 文字番号 |
orivant | 0:ea6cbd4e50ce | 253 | * @return アドレス |
orivant | 0:ea6cbd4e50ce | 254 | */ |
orivant | 0:ea6cbd4e50ce | 255 | uint8_t calcCursorAddr(uint8_t lineNo, uint8_t charaNo); |
orivant | 0:ea6cbd4e50ce | 256 | }; |
orivant | 0:ea6cbd4e50ce | 257 | |
orivant | 0:ea6cbd4e50ce | 258 | #endif //!defined(LCD_AQM0802_H) |