2013年9月21日土曜日

I2CLCDをつかってみた


秋月電子通商で販売されているI2C接続小型LCDモジュールを試食しました。
ピッチ変換基板の大きさは35mm×22mmと超小型なLCDです。
電源電圧3.3Vとなっておりますので注意が必要です。
LCDのコントローラーはST7032iが使用されてます。

PSoC Creator にはI2CLCDのコンポーネントがあり、
デフォルトではNXP PCF2119xに。。(汗
そこでお気軽に使えるようにしてみました。



【用意するもの】
I2C接続小型LCDモジュールピッチ変換キット
PSoC 5LP テストボード[QFN68][Rev.B]
MiniProg3[Rev. B]

PSoC Creator Version 2.2 SP1 CP6
PSoC Programmer


【調理のしかた】

1.PSoC Creatorで新規プロジェクトを作成し  I2C_Master と I2C_LCD を配置します。


 2.I2C_Master と I2C_LCDの各種設定をします。


I2C_LCDの『CustomCommands』は10個ほと追加します。

















3.[main.c] を書き換えます。
#include 

void I2C_LCD_Position(uint8 row, uint8 column) {

  if(row == 0){
    I2C_LCD_1_SetDDRAM(0x80u + column);
  }else{
    I2C_LCD_1_SetDDRAM(0xC0u + column);
  }
}

void I2C_LCD_Init(void) {
  CyDelay(40u);     //40mS 待機
  I2C_LCD_1_FunctionSetNormal();
  I2C_LCD_1_ReturnHome();
  I2C_LCD_1_FunctionSetExtended();
  I2C_LCD_1_InternalOscFrequency();
  I2C_LCD_1_ContrastSet();
  I2C_LCD_1_PwrIconContrast();
  I2C_LCD_1_FollowerCtrl();
  CyDelay(200u);     //200mS 待機
  I2C_LCD_1_FunctionSetNormal();
  I2C_LCD_1_DisplayOn();
  I2C_LCD_1_Clear();
  I2C_LCD_1_EntryModeSet();
//I2C_LCD_1_WriteControl(0x0fu); //Disp:On Cursor:On Position:On
}




void main() {
  CyGlobalIntEnable;
  I2C_1_Start();
  I2C_LCD_1_Start();
  I2C_LCD_Init();
  CyDelay(100u);

  while(1){
    I2C_LCD_Position(0u,0u);
    I2C_LCD_1_PrintString("Hello,");
    CyDelay(1000u);
    I2C_LCD_Position(1u,0u);
    I2C_LCD_1_PrintString("PSoC5LP!");
    CyDelay(1000u);
    I2C_LCD_1_ClearDisplay();
    CyDelay(1000u);
  }
}

/* [] END OF FILE */

4.PSoC 5LP テストボードとLCDモジュールを接続します。
P12[0] --- SCL
P12[1] --- SDA
+3.3V  --- VDD -- RESET
  GND --- GND
LCDモジュールのプルアップは忘れないでください。

5.MiniProg3 を接続して、書き込みます。

    上手く書き込みはできましたか?

    プロジェクトファイル一式


2 件のコメント:

  1. PSoC4でもうまく行きました。
    ありがとうございます。

    返信削除
    返信
    1. PSoC4での動作確認ありがとうございます~。

      削除