I2C接続の液晶表示器の制御


【概要】

I2Cで接続できる液晶表示器を使ってみました。I2Cなので2本の線で接続可能
なので8ピンのPICでも十分使うことができます。
使った液晶表示器はストロベリーリナックス社で販売している下記液晶表示器
です。
   「小型I2C低電圧キャラクタ液晶モジュール」
   「大型I2C低電圧キャラクタ液晶モジュール」

いずれも16文字×2行表示が可能で、2.7V〜3.6Vという低電圧で動作します。
さらに小型の方には特殊なアイコン表示も可能となっています。

【構成と回路図】

 ここではPIC12F683の8ピンのPICマイコンを使って制御しています。
試した回路は下記のようなもので、液晶表示器とLEDだけの構成となって
います。
 電源を3.3Vで統一し、PICを内蔵クロックの8MHzで動作させることにします。
I2Cの接続は、ICSPと異なるピンにするためGP4とGP5とすることにしました。
液晶表示器のRSTピンは抵抗でプルアップしておきます。これで電源オンで
自動的に内部でリセットされます。




【プログラム製作】

 この液晶表示器用のライブラリとして作成しました。使用したコンパイラは
HI-TECH Cコンパイラです。
通常の8ビットパラレルの液晶表示器と同じ関数を用意しました。
ライブラリは下記2つのファイルで構成されています。これらをプロジェクトにコピー
すればすぐ使えるようになります。

    lcd_i2c_lib.h  : ヘッダファイル
    lcd_i2c_lib.c  : ライブラリ本体

関数名 機能内容
lcd_init 液晶表示器の初期化処理を行う
  lcd_init();
パラメータなし
lcd_cmd 液晶表示器に対する制御コマンドを出力する
  lcd_cmd(unsigned char cmd);
    cmd:8ビットの制御コマンド
《例》
  lcd_cmd(0xC0);
    2行目にカーソルを移動する
lcd_data 液晶表示器に表示データを出力する
  lcd_data(unsigned char asci);
    asci:ASCIIコードの文字データ
《例》
  lcd_data(0x30);
lcd_clear 液晶表示器の表示を消去しカーソルをHomeに戻す
   lcd_clear(void);
     パラメータなし
     lcd_cmd(0x01);と同じ機能
lcd_str ポインタptrで指定された文字列を出力する
  lcd_str(unsigned char* ptr);
     ptr:文字配列のポインタ、文字列直接記述も可能だが
        コンパイルでWarningが出る
《例》
   StMsg[]="Start!!";   //文字列の定義
   lcd_str(StMsg);
lcd_icon 指定アイコンの表示をオンオフする
  void lcd_icon(unsigned char num, unsigned char onoff);
    num:アイコンの番号(0〜13)
    onoff:1=表示オン  0=表示オフ
《例》
  lcd_icon(5, 1);


 テストプログラムを作成しました。
 このテストでは、0.5秒間隔で、LEDを点滅させながら、液晶表示器に下記の
2行を表示します。
12345の部分は表示更新ごとにカウントアップするカウンタ表示となっています。

   Hello! LCD Test!
   Counter = 12345

さらに、小型の液晶表示器の場合には、表示更新ごとに、アイコン部の表示を
順番に点灯させ、全部点灯したら今度は順番に消灯させます。
上記を永久に繰り返します。
このテストプログラムと、ライブラリを含めたプロジェクト1式として下記から
ダウンロードできます。
ただしPIC12F683でHI-TECH Cコンパイラで作成しています。

  ★★★ I2C接続の液晶表示器テストプログラム





  目次ページに戻る