無断転載および再配布を禁じる。
Copyright (c) 2012 All rights reserved.
これは、PicBasic Proで作ったプログラムにより、I2C接続液晶表示器「SB1602B」に「温度」を表示させたときの詳細説明です。
注意1: | この文書の記載内容については、いっさいの責任を負いません。 各製品添付の資料で確認のうえ、自己責任でご利用ください。 |
注意2: | この文書の内容に関して、各製品の販売元およびメーカーはまったく無関係であり、いっさいの責任がありません。 この文書に関して、販売元やメーカーへの問い合わせなどは固く禁じます。 |
(1)A/Dコンバータの動作条件を設定する
(2)ポートを設定する
(3)変数を設定する
(4)液晶表示器「SB1602B」を初期化する
(1)A/Dコンバータで温度を取り込む
(2)数値を文字に変換して表示する
使用した実験基板は、次の3種類です。
・入会時に製作したマイコン基板 参考:PIC16F877のテスト基板の作製 | |
・左:I2C液晶「SB1602B」基板 参考:I2C接続液晶表示器「SB1602B」 ・右:温度センサ「LM35」基板 「AD変換基板の作製」にOPアンプ「LM358」を加え、5倍(50mV/℃)に増幅して、10ピンコネクタの3番ピン(ポートのビット2)に出力 |
添付のPDFは、I2Cの液晶表示器(LCD)「SB1602B」に温度センサ基板で測定した気温を次の写真のように表示させるPicBasic Proのソースプログラムです。
「SB1602B」は、資料「I2C接続液晶表示器”SB1602B”を、PicBasic Proで動かす」で「文字」表示をしましたが、ここではより広い用途のために、温度センサ「LM35」から与えられる電圧の「数値」表示を試行しました。
以下に、そのプログラムを解説します。
「SB1602B」をPicBasicで使う場合はもちろん、PIC内蔵A/Dコンバータを使う場合などにも、プログラムの各部分をモジュールとしてお使いください。
●6-10行目
ほぼマニュアルどおりの、標準的なA/Dコンバータの設定です。
●18-19行目
A/D関係のレジスタを設定します。
ちなみに、17行目は、A/Dコンバータを使わないときの設定ですが、ここではコメントアウトして無効化しています。
●12-16行目
ポートの設定です。
12行目でポートAのビット2をA/Dコンバータの入力端子に設定しています。
14行目で、ポートCをI2Cによる液晶表示器「SB1602B」を動かすための出力に設定します。
さらに、37-38行目で具体的にI2Cのクロック端子、データ端子を設定します。
特に使わないポートは、入力に設定すると高インピーダンスになって静電気放電に弱いので、原則として出力に設定して低インピーダンスにしておきます。
●21-34行目
ここで数値の演算や表示に使う変数をひとまとめに設定します。
注意点は、「SB1602B」に表示する文字のための変数は、「WORD」に設定すると文字の左に1文字分のスペースが付きますから、通常「BYTE」に設定します。
●40-76行目
詳細は、「I2C接続液晶表示器”SB1602B”を、PicBasic Proで動かす」を参照してください。
●79-90行目
温度センサの出力をOPアンプで5倍増幅し、50mV/℃にした電圧をポートAビット2からA/Dコンバータに入力します。
A/D変換した後、変換値を資料「PicBasic Proで、温度の位ごとの数値を求める」の方法にしたがって演算し、温度の10の位、1の位、小数第1位の値をそれぞれ求めます。
「B00]が10の位、「B01]が1の位、「B03]が小数第1位です。
●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行目
数値を液晶表示用の数字に置き換えるサブルーチンです。