PIC16F87x用液晶表示器Cライブラリ

【概要】

PIC16F87xシリーズに液晶表示器を接続し、C言語でこれを扱う場合に必要
となる、液晶表示器制御ライブラリの説明です。

ここで扱う液晶表示器はSEIKO製の SC1602BSLB か SC1602BS*Bです。
良く使われるシリーズで、16文字×2行の英数字、カナ文字が表示できます。
消費電流も非常に少ないので(ただしバックライト無し)PICの表示器としては
持ってこいのものです。

詳細については、別ページ を参照して下さい。


【制御回路】

ここで紹介する液晶表示器とPICとの接続回路は下図とします。下図では余分
な回路を含まれていますが、D2の液晶表示器とPICとは、ポートDを通して接続
しています。
これ以外の接続の場合には、プログラム中でピンの指定変更が必要です。



【制御ライブラリ】

液晶表示器制御用ライブラリ(lcd_lib.c)には、下記の関数を含んでいます。

(1) 初期化関数 lcd_init()
   PICの電源投入後に実行するべき初期化の関数です。パラメータはあり
   ません。
(2) コマンド出力関数 lcd_cmd(cmd)
   液晶表示器の制御を行うための1バイトのコマンドを出力する関数
   パラメータとして下記制御コマンドを使います。

【Control Commandの一覧表】
 Commnad     DB7 6 5 4 3 2 1 0    説    明   
Clear Display     0 0 0 0 0 0 0 1  全消去、CursorはHomeへ
Cursor At Home    0 0 0 0 0 0 1 *  表示内容は変化なし。
Entry Mode Set    0 0 0 0 0 1 I/D S  I/D=Increment/Decrement
                        S=With Display Shift
Display On/Off    0 0 0 0 1 D C B  D=Display C=Cursor B=Blink
Cursor/Dislay Shift 0 0 0 1 S/C R/L * *  S/C=Display/Cursor
                        R/L=Right/Left
Function Set     0 0 1 DL N F * *  DL=8/4Bit N=2/1Line
                        F=Large/Small
CGRAM Address Set  0 1  CCRAM Address   Character Generator RAM
DDRAM Address Set  1 L  DDRAM Address   Display RAM L=Line
Busy Flag/Adrs Read BF  Address       BF=Busy Flag

(3) 文字表示関数 lcd_data(string)
   stringとして渡す文字列を表示します。表示位置は現在位置からとなります
   ので、位置を変更する場合には、上記コマンドで制御します。

(4) 画面消去関数 lcd_clear()
   単純に全画面を消去しカーソル位置を左上端とします。


  ★ 液晶表示制御用ライブラリ3(ダウンロードしてお使い下さい)

【ライブラリの使い方】

(1) 基本的な使い方
 使い方は、プログラムの最初で、#include関数でlcd_lib.cをインクルードしてリンク
 します。
 その後は最初にlcd_init()関数を使って初期化をすれば、あとは自由に使えます。

 実際の使用例でのmain関数内での定義設定例です。

   //////// link LCD library
   #include <lcd_lib3.c>


(2) ピンの定義指定方法

 液晶表示器用として使う入出力ポートをライブラリの最初で定義しています。
 使うポートを変更するときにはここを書き換えます。下記が定義部分です。

////// port define to port D
#byte port = 8   //port D
#define set_tris_x set_tris_d
#define rs  PIN_D0
#define rw  PIN_D1
#define stb PIN_D2

 (a) データバス port
   いずれかの入出力ポートの上位4ビットを使います。上位に固定となって
   います。(標準はポートDです)
 (b) 制御信号
   3本の制御信号が必要ですが、それぞれを#define関数で指定します。
   必要な3つの信号は rs、rw、stb の3種です。 入出力ポートはデータ
   バスと同じポートを使います。
 (c) TRISレジスタの指定
   set_tris_x のxを書き換えます。

【便利な使い方】

(1) 液晶表示器に文字列を表示する場合
  lcd_data(string)関数の「string」には文字列を直接指定することが出来ます
 
   lcd_data("abcdefghijklmnop");
   lcd_data("MESSAGE002");

(2) 液晶表示器データ表示関数”lcd_data( )”をprint文の対象とすることが出来ます。
  これを使うと、数値などの出力フォーマットが自由にできますので、表示の
  部分のプログラムを非常に楽に組むことが出来ます。
  液晶表示器を出力対象とする基本的なprintf文のフォーマットは下記とします。

    printf( lcd_data, string, [value] );
  
  具体的な例では、下記のように使います。
   ≪例1≫
    long  data;
    int   ch;
    printf(lcd_data,"CH=%1U %4LX",ch,data);
  
   
≪例2≫
    float analog;
    int  ch;
    printf(lcd_data,"CH=%1U %1.3f Volt",ch,analog/512);


  目次ページに戻る