PIC16F84電子遊戯(13)
最終更新日:2001年2月27日
湿度計(1ページ)へ (2ページ) (3ページ)へ

湿度計のポート割付
回路図に従ってマイコンのポートを割り付けましょう。
温度計の時とほぼ同じ割付になります。
ポート名 入出力 機能
RA0 OUT 7セグ1%選択
RA1 OUT 7セグ10%選択
RA2 OUT −−−−
RA3 OUT A/Dコンバータ CS
RA4 OUT A/Dコンバータ WR/RDY
ポート名 入出力 機能 入出力 機能
RB0 OUT 7セグ駆動 IN A/DコンバータDATA
RB1 OUT 7セグ駆動 IN A/DコンバータDATA
RB2 OUT 7セグ駆動 IN A/DコンバータDATA
RB3 OUT 7セグ駆動 IN A/DコンバータDATA
RB4 OUT −−−− IN A/DコンバータDATA
RB5 OUT −−−− IN A/DコンバータDATA
RB5 OUT −−−− IN A/DコンバータDATA
RB7 OUT −−−− IN A/DコンバータDATA
(湿度計のポート設定)
湿度計のポートの方向設定
ソフト上でのポートの方向をレジスタに設定します。入力は「1」、出力は「0」です。
ポートの方向は温度計と全く同じです。
--- --- --- PA4 PA3 PA2 PA1 PA0
--- --- ---

0

0

0

0

0

(TRISA)
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0

0/1

0/1

0/1

0/1

0/1

0/1

0/1

0/1

(TRISB)
湿度計のタイマー割り込みの設定
今回のタイマー割り込みはLEDの表示変更をするタイミングに使用します。
温度計と同じく、約0.5秒ごとに表示を変更します。
RBPU INTEDG TOCS TOSE PSA PS2-0

1

0

0

0

0

1

1

0

(OPTION_REG)
0.5秒を作る方法も温度計の時と全く同じです。
設定値の結果のみを記します。
tm0_setdata
63H
(tm0_setdata)
次に0.5秒を刻むための初期値データです。25 = 19Hです。
cnt_setdata
19H
(cnt_setdata)
タイマー割り込み処理で使用する作業RAMを設定します。
count_data
0.5秒カウントまでの残り
(count_data)
湿度計のポート初期設定
マイコンが動作してからのポートの初期状態を設定します。
これも温度計と全く同じです。
PORTA PORTB
0FFH 00H
(ポート初期設定)
湿度計の7セグメントLED表示
7セグメントLED表示は今までと同じくダイナミック点灯方式です。
簡単な動作の手順を説明します。
割り込みを禁止する
PORTBを出力ポートに設定する
割り込みを許可する
1%のデータをRB3-0に出力する RA0を「L」にする 時間待ち RA0を「H」にする
10%のデータをRB3-0に出力する RA1を「L」にする 時間待ち RA1を「H」にする
これをメインルーチンで繰り返すことによりLEDを点灯させます。
PORTBを出力ポートに設定する間は割り込みを禁止しています。
表示するためのデータは次のRAMに格納しています。
shitu1_data shitu2_data
1%のデータ 10%のデータ
7セグの表示の時間待ちで使用するRAMです。
ここに初期値を入れてひとつずつ減算しながら0になるまで時間を待ちます。
前回の製作と同じく約770usecの時間を待ちます。
wait_data
時間待ち
湿度計のA/D変換
A/D変換はAD7820を制御して行います。WRポートをLからHにした後、データバスに変換値がパラレル出力されます。
割り込みを禁止する
PORTBを入力ポートに設定する
CSをLにする
WRをLにする
WRをHにする
PORTBをデータをadin_dataに入力する
CSをHにする
割り込みを許可する
このA/D変換はメインルーチンで繰り返し行われます。
この辺の処理も温度計と全く同じです。
以上のようにほとんどの処理が温度計の場合と同じになります。
7セグメントの表示が3ケタから2ケタになったところのみ違います。
ということで、次回は湿度計のソフト処理について説明します。
(これも温度計の場合とほとんど変わらなかったりして・・・)
この続きは(3ページ)へ

不明点などあればメールお願いいたします。nonchansoft@nifty.com

Copyright(c)2000-2001 nonchansoft