• I2C/SPI制御のLCD、スイッチ、LED
  • ホスト(マスタ)から文字データ、コマンドを送ってLCDへ文字を表示させたり、LEDをON/OFF制御します。ホストからスイッチの状態を読み出すこともできます。
  • 画面クリアやカーソル位置指定、カーソル点滅/OFFなどをI2Cコマンドで操作できます。

I2C/SPIシリーズ

【主な仕様】

【関連、類似品】

【ドキュメント】

基板レイアウト(Rev.A)
LCDの下には抵抗アレーなどがついています。その分少し基板からLCDを浮かせるようにして取り付けますが、LCDを基板にできるだけ密着させたい場合は、抵抗アレーをはんだ付け面に実装します。

写真の製作例では、M4x11の2本のスペーサでLCDを取り付けています。

デフォルトのI2Cベース・アドレスは0x18です。

JP1、JP2により、0x18〜0x1Bまで変更できます(ベース・アドレス0x18の場合)。 次表はジャンパの設定一覧です。Oはオープン、Sはショートを示します。

JP2
JP1
I2Cアドレス
O
O
0x18
O
S
0x19
S
O
0x1A
S
S
0x1B

LCDのバックライトは4番目のLED(#3)として扱います。

C言語プログラム ホスト(マスタ)例 プログラム例

"I2CStart()"、"I2CStop"は順にスタート・コンディション、ストップ・コンディションを発行する関数、"I2CWrite()"は1バイト マスタ送信する関数とします。初期化などは省略しています。

#143のI2CアドレスはジャンパJP1〜JP2をすべてオープンで0x18に設定しているものとします。この場合、コントロール・バイト (R/W = "W") の値は0x30となります。

ストップ・コンディションをコマンド入力の完了とみなしていますので、スタート・コンディション〜ストップ・コンディション間には1つのコマンドしか送信することができません。

文字列表示コマンドのパラメータ部(文字列部分)は可変長ですが、バッファの関係で最大16文字に制限されています。それ以上送信してもACKが返りますが、16文字を超えた部分は無視されます。


  // LCDをクリア
  I2CStart(0);      // スタート・コンディション発行
  I2CWrite(0x30);     // CB(W) adrs=0x18
  I2CWrite(0x01);     // LCDクリアコマンド
  I2CStop();       // ストップ・コンディション発行

  // "AB01"と表示
  I2CStart(0);      // スタート・コンディション発行
  I2CWrite(0x30);    // CB(W) adrs=0x18
  I2CWrite(0x07);    // 文字列表示コマンド(1回に送信できる文字数は最大16文字
  I2CWrite('A');     // 'A'
  I2CWrite('B');     // 'B'
  I2CWrite('0');     // '0'
  I2CWrite('1');     // '1'
  I2CStop();       // ストップ・コンディション発行

  // カーソル位置を指定
  I2CStart(0);      // スタート・コンディション発行
  I2CWrite(0x30);    // CB(W) adrs=0x18
  I2CWrite(0x04);    // カーソル設定コマンド
  I2CWrite(10);      // X座標設定値 10
  I2CWrite(1);       // Y座標設定値(2行目)
  I2CStop();       // ストップ・コンディション発行

  // 'A'と表示
  I2CStart(0);      // スタート・コンディション発行
  I2CWrite(0x30);    // CB(W) adrs=0x18
  I2CWrite(0x06);    // 1文字表示コマンド
  I2CWrite(0x41);    // 'A'
  I2CStop();       // ストップ・コンディション発行

  // カーソルを点滅表示
  I2CStart(0);      // スタート・コンディション発行
  I2CWrite(0x30);    // CB(W) adrs=0x18
  I2CWrite(0x4D);    // レジスタ書き込みコマンド
  I2CStop();       // ストップ・コンディション発行

  // キーコードの入力
  I2CStart(0);      // スタート・コンディション発行
  I2CWrite(0x31);    // CB(R) adrs=0x18
  key = I2CRead(1);  // 1バイト入力(NOACK応答)
  I2CStop();       // ストップ・コンディション発行
  key &= 0x7F;     // BUSYビットをマスク

その他のコマンドに関しては、#143制御 I2C コマンド を参照してください。

※現在のファーム・ウェアでは、キー・データの読み出し時、LCDのBUSYビットは読み出せません。

【使用例】

【ご注意】

【プリント基板、部品販売】

・C018:スペーサ・セット
<セット内容> ジュラコン両メス スペーサ(M4×11) 2個、 ビス(M4×6) 4個