I2C 接続の LCD AQM1602XA-RN-GBW 用のライブラリ. Library for LCD 1602XA-RN-GBW connected using I2C interface.

Dependents:   UIT2_MovingAv_Intr UIT2_VariableFIR UIT2_VowelSynthesizer UIT2_ALE_LeakyLMS ... more

Committer:
MikamiUitOpen
Date:
Thu Apr 16 04:22:48 2020 +0000
Revision:
15:64250b58f933
Parent:
13:4975e1c1d743
16

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 10:6e6c0f24e81f 1 //---------------------------------------------------------------
MikamiUitOpen 15:64250b58f933 2 // 液晶表示器 AQM1602XA-RN-GBW 用クラス,ヘッダ
MikamiUitOpen 0:f177013dc4fc 3 //
MikamiUitOpen 13:4975e1c1d743 4 // Nucleo の場合のデフォルトのピン
MikamiUitOpen 13:4975e1c1d743 5 // D14 ---- 液晶モジュールの SDA ピン
MikamiUitOpen 13:4975e1c1d743 6 // D15 ---- 液晶モジュールの SCL ピン
MikamiUitOpen 11:f650f1e809a9 7 //
MikamiUitOpen 15:64250b58f933 8 // 割込みサービス・ルーチン内に記述した場合でも動作する
MikamiUitOpen 15:64250b58f933 9 // このプログラムを作った際の mbed のリビジョン:Rev.172
MikamiUitOpen 15:64250b58f933 10 //
MikamiUitOpen 15:64250b58f933 11 // 2020/04/16, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 10:6e6c0f24e81f 12 //---------------------------------------------------------------
MikamiUitOpen 0:f177013dc4fc 13
MikamiUitOpen 13:4975e1c1d743 14 #include "mbed.h"
MikamiUitOpen 13:4975e1c1d743 15 #include <string>
MikamiUitOpen 13:4975e1c1d743 16
MikamiUitOpen 0:f177013dc4fc 17 #ifndef AQM1602I2C_HPP
MikamiUitOpen 0:f177013dc4fc 18 #define AQM1602I2C_HPP
MikamiUitOpen 0:f177013dc4fc 19
MikamiUitOpen 0:f177013dc4fc 20 namespace Mikami
MikamiUitOpen 0:f177013dc4fc 21 {
MikamiUitOpen 0:f177013dc4fc 22 class Aqm1602
MikamiUitOpen 0:f177013dc4fc 23 {
MikamiUitOpen 0:f177013dc4fc 24 public:
MikamiUitOpen 13:4975e1c1d743 25 // コンストラクタ
MikamiUitOpen 13:4975e1c1d743 26 // SDA, SCA のデフォルト値は Nucleo に対応
MikamiUitOpen 0:f177013dc4fc 27 Aqm1602(PinName sda = D14, // SDA
MikamiUitOpen 0:f177013dc4fc 28 PinName scl = D15, // SCL
MikamiUitOpen 13:4975e1c1d743 29 uint32_t clock = 100000, // クロック: 100 kHz
MikamiUitOpen 13:4975e1c1d743 30 bool cursor = false, // カーソル: off
MikamiUitOpen 15:64250b58f933 31 bool blink = false); // 点滅: off
MikamiUitOpen 12:21830002e12d 32
MikamiUitOpen 13:4975e1c1d743 33 Aqm1602(I2C &i2c, // I2C オブジェクトの参照
MikamiUitOpen 13:4975e1c1d743 34 uint32_t clock = 100000, // クロック: 100 kHz
MikamiUitOpen 13:4975e1c1d743 35 bool cursor = false, // カーソル: off
MikamiUitOpen 15:64250b58f933 36 bool blink = false); // 点滅: off
MikamiUitOpen 8:854c244a7863 37
MikamiUitOpen 10:6e6c0f24e81f 38 virtual ~Aqm1602()
MikamiUitOpen 8:854c244a7863 39 { if (NULL != i2cPtr_) delete i2cPtr_; }
MikamiUitOpen 8:854c244a7863 40
MikamiUitOpen 13:4975e1c1d743 41 // 液晶表示器が接続されていない場合 false を返す
MikamiUitOpen 15:64250b58f933 42 bool IsConnected() const { return connected_; }
MikamiUitOpen 3:414f98234c94 43
MikamiUitOpen 13:4975e1c1d743 44 // 表示のクリア
MikamiUitOpen 15:64250b58f933 45 void Clear() const;
MikamiUitOpen 1:18cd1c4212c3 46
MikamiUitOpen 13:4975e1c1d743 47 // コマンドの送信
MikamiUitOpen 15:64250b58f933 48 bool WriteCmd(uint8_t cmd) const { return LcdTx(0x00, cmd); }
MikamiUitOpen 1:18cd1c4212c3 49
MikamiUitOpen 13:4975e1c1d743 50 // 1文字の書込み
MikamiUitOpen 15:64250b58f933 51 bool WriteChar(char data) const { return LcdTx(0x40, data); }
MikamiUitOpen 1:18cd1c4212c3 52
MikamiUitOpen 13:4975e1c1d743 53 // 表示位置の設定, x: 0 ~ 15, y: 0, 1
MikamiUitOpen 15:64250b58f933 54 void SetXY(uint8_t x = 0, uint8_t y = 0) const
MikamiUitOpen 0:f177013dc4fc 55 { WriteCmd(x + y*0x40 | 0x80);}
MikamiUitOpen 1:18cd1c4212c3 56
MikamiUitOpen 13:4975e1c1d743 57 // 文字列の書込み
MikamiUitOpen 15:64250b58f933 58 void WriteString(const string str) const;
MikamiUitOpen 1:18cd1c4212c3 59
MikamiUitOpen 13:4975e1c1d743 60 // 指定した位置から文字列の書込み
MikamiUitOpen 15:64250b58f933 61 void WriteStringXY(const string str, uint8_t x, uint8_t y) const;
MikamiUitOpen 1:18cd1c4212c3 62
MikamiUitOpen 13:4975e1c1d743 63 // 数値の書込み
MikamiUitOpen 15:64250b58f933 64 template <typename T>
MikamiUitOpen 15:64250b58f933 65 void WriteValue(const char fmt[], T value) const
MikamiUitOpen 9:74a845df6e7a 66 {
MikamiUitOpen 12:21830002e12d 67 char str[N_CHR+1];
MikamiUitOpen 9:74a845df6e7a 68 sprintf(str, fmt, value);
MikamiUitOpen 9:74a845df6e7a 69 WriteString(str);
MikamiUitOpen 9:74a845df6e7a 70 }
MikamiUitOpen 9:74a845df6e7a 71
MikamiUitOpen 13:4975e1c1d743 72 // 指定した位置から数値の書込み
MikamiUitOpen 9:74a845df6e7a 73 template <typename T>
MikamiUitOpen 15:64250b58f933 74 void WriteValueXY(const char fmt[], T value,
MikamiUitOpen 15:64250b58f933 75 uint8_t x, uint8_t y) const
MikamiUitOpen 9:74a845df6e7a 76 {
MikamiUitOpen 9:74a845df6e7a 77 SetXY(x, y);
MikamiUitOpen 9:74a845df6e7a 78 WriteValue(fmt, value);
MikamiUitOpen 9:74a845df6e7a 79 }
MikamiUitOpen 9:74a845df6e7a 80
MikamiUitOpen 13:4975e1c1d743 81 // 指定した行のクリア
MikamiUitOpen 15:64250b58f933 82 void ClearLine(uint8_t line) const;
MikamiUitOpen 1:18cd1c4212c3 83
MikamiUitOpen 13:4975e1c1d743 84 // コントラストの設定
MikamiUitOpen 15:64250b58f933 85 void SetContrast(uint8_t c) const;
MikamiUitOpen 0:f177013dc4fc 86
MikamiUitOpen 0:f177013dc4fc 87 private:
MikamiUitOpen 13:4975e1c1d743 88 // AQM1602A のアドレス
MikamiUitOpen 13:4975e1c1d743 89 // 左詰め 7-bit アドレス
MikamiUitOpen 0:f177013dc4fc 90 static const uint8_t LCD_ADDRESS_ = 0x7C;
MikamiUitOpen 0:f177013dc4fc 91 static const uint8_t N_CHR = 16;
MikamiUitOpen 0:f177013dc4fc 92
MikamiUitOpen 15:64250b58f933 93 I2C *const i2cPtr_; // I2C オブジェクトのポインタ
MikamiUitOpen 13:4975e1c1d743 94 I2C &i2c_; // I2C オブジェクトの参照
MikamiUitOpen 15:64250b58f933 95 bool connected_; // false: 液晶表示器は接続されていない
MikamiUitOpen 0:f177013dc4fc 96
MikamiUitOpen 13:4975e1c1d743 97 // 初期化
MikamiUitOpen 8:854c244a7863 98 void Init(uint32_t clock, bool cursor, bool blink);
MikamiUitOpen 8:854c244a7863 99
MikamiUitOpen 13:4975e1c1d743 100 // コマンドとデータの送信
MikamiUitOpen 15:64250b58f933 101 bool LcdTx(uint8_t cmdData, uint8_t data) const;
MikamiUitOpen 0:f177013dc4fc 102
MikamiUitOpen 13:4975e1c1d743 103 // コピー・コンストラクタと代入演算子関数の禁止
MikamiUitOpen 0:f177013dc4fc 104 Aqm1602(const Aqm1602&);
MikamiUitOpen 0:f177013dc4fc 105 Aqm1602& operator=(const Aqm1602&);
MikamiUitOpen 0:f177013dc4fc 106 };
MikamiUitOpen 0:f177013dc4fc 107 }
MikamiUitOpen 13:4975e1c1d743 108 #endif // AQM1602I2C_HPP