PicBasicでI2C接続液晶「SB1602B」に温度を表示する

無断転載および再配布を禁じる。
Copyright (c) 2012 All rights reserved.


これは、PicBasic Proで作ったプログラムにより、I2C接続液晶表示器「SB1602B」に「温度」を表示させたときの詳細説明です。

注意1:この文書の記載内容については、いっさいの責任を負いません。
各製品添付の資料で確認のうえ、自己責任でご利用ください。
注意2:この文書の内容に関して、各製品の販売元およびメーカーはまったく無関係であり、いっさいの責任がありません。
この文書に関して、販売元やメーカーへの問い合わせなどは固く禁じます。

ホームページのトップ     「資料」最初に戻る


1.使用した実験基板

2.プログラムの内容

3.動作条件を設定する

 (1)A/Dコンバータの動作条件を設定する
 (2)ポートを設定する
 (3)変数を設定する
 (4)液晶表示器「SB1602B」を初期化する

4.温度を表示する

 (1)A/Dコンバータで温度を取り込む
 (2)数値を文字に変換して表示する

参照資料


1.使用した実験基板

使用した実験基板は、次の3種類です。

PIC16F877実験基板・入会時に製作したマイコン基板
  参考:PIC16F877のテスト基板の作製
左:SB1602B、右:温度センサ・左:I2C液晶「SB1602B」基板
  参考:I2C接続液晶表示器「SB1602B」

・右:温度センサ「LM35」基板
  「AD変換基板の作製」にOPアンプ「LM358」を加え、5倍(50mV/℃)に増幅して、10ピンコネクタの3番ピン(ポートのビット2)に出力

2.プログラムの内容

添付のPDFは、I2Cの液晶表示器(LCD)「SB1602B」に温度センサ基板で測定した気温を次の写真のように表示させるPicBasic Proのソースプログラムです。

表示の様子

「SB1602B」は、資料「I2C接続液晶表示器”SB1602B”を、PicBasic Proで動かす」で「文字」表示をしましたが、ここではより広い用途のために、温度センサ「LM35」から与えられる電圧の「数値」表示を試行しました。

以下に、そのプログラムを解説します。
「SB1602B」をPicBasicで使う場合はもちろん、PIC内蔵A/Dコンバータを使う場合などにも、プログラムの各部分をモジュールとしてお使いください。


3.動作条件を設定する

(1)A/Dコンバータの動作条件を設定する

●6-10行目
ほぼマニュアルどおりの、標準的なA/Dコンバータの設定です。

●18-19行目
A/D関係のレジスタを設定します。

ちなみに、17行目は、A/Dコンバータを使わないときの設定ですが、ここではコメントアウトして無効化しています。

(2)ポートを設定する

●12-16行目
ポートの設定です。
12行目でポートAのビット2をA/Dコンバータの入力端子に設定しています。
14行目で、ポートCをI2Cによる液晶表示器「SB1602B」を動かすための出力に設定します。
さらに、37-38行目で具体的にI2Cのクロック端子、データ端子を設定します。

特に使わないポートは、入力に設定すると高インピーダンスになって静電気放電に弱いので、原則として出力に設定して低インピーダンスにしておきます。

(3)変数を設定する

●21-34行目
ここで数値の演算や表示に使う変数をひとまとめに設定します。

注意点は、「SB1602B」に表示する文字のための変数は、「WORD」に設定すると文字の左に1文字分のスペースが付きますから、通常「BYTE」に設定します。

(4)液晶表示器「SB1602B」を初期化する

●40-76行目
詳細は、「I2C接続液晶表示器”SB1602B”を、PicBasic Proで動かす」を参照してください。


4.温度を表示する

(1)A/Dコンバータで温度を取り込む

●79-90行目
温度センサの出力をOPアンプで5倍増幅し、50mV/℃にした電圧をポートAビット2からA/Dコンバータに入力します。
A/D変換した後、変換値を資料「PicBasic Proで、温度の位ごとの数値を求める」の方法にしたがって演算し、温度の10の位、1の位、小数第1位の値をそれぞれ求めます。
「B00]が10の位、「B01]が1の位、「B03]が小数第1位です。

(2)数値を文字に変換して表示する

●92-100行目
93行目で液晶画面を2行表示に設定し、95行目で画面をクリアし、プロンプトを1行目の左端に置きます。
97行目で画面の1行目に文字列「TEMPERATURE:」を表示し、99行目でプロンプトを2行目の左端に置きます。

●101-106行目
101行目から、116-130行目のサブルーチン「DISP_FIG」に行って10の位の数値を対応する表示数字に置き換えます。
その後、もしも数字が「0」、つまりDNUMが「$30」であると102行目で「$20」、つまり「スペース」に置き換えます。
ここは「IF文」を使いましたが、どういうわけか、PicBasic Proコンパイラは「IF文」の書き方に厳しくて、改行などがマニュアル見本どおりでないとエラーが出ます。
もしもコンパイル・エラーとか、期待した動作でない場合は、マニュアルを良く見て、書き方を変えてみてください。

103-104行目も同様に、1の位と小数第1位の数値を数字に置き換え、これらを105行目で液晶の2行目に表示します。
ただし、1の位と小数第1位は「0」もそのまま表示します。

●107-112行目
107行目で液晶画面を「縦倍角」1行表示に設定します。
109行目で画面をクリアし、プロンプトを1行目の左端に置きます。
111行目で105行目と同じ内容を書き込むと、それが液晶に「縦倍角」で表示されます。

●116-130行目
数値を液晶表示用の数字に置き換えるサブルーチンです。


ホームページのトップ     「資料」最初に戻る