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