"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ビットは読み出せません。
|