PIC16F84電子遊戯(92) |
最終更新日:2003年1月1日 |
マップメータJr.「一万分の一」 (1ページ)へ (2ページ) (3ページ)へ |
|
マップメータJr.「一万分の一」の基本仕様 |
1)エンコーダーの回転を距離数に換算してデジタル表示します。表示最小単位は「0.1km」とします。(誤差はそれなりにあると思います。)
2)距離を測定する地図は「一万分の一」の縮尺のものとします。
3)計測表示距離は「65.5km」maxとします。それ以上はゼロに戻ります。
4)SW1を押せば表示は「0.0km」に初期化されます。
難しいところはありませんね。 |
マップメータJr.「一万分の一」のエンコーダー詳細 |
さてエンコーダーについて詳しく調べてみましょう。今回マウスから取り出したエンコーダーは1回転に18回のクリックを持っていて、クリックごとにエンコーダー内部のスイッチがON/OFFを繰り返しています。前回記載の回路図に照らし合わせて入力波形を考えると次のようになります。 |
|
(クリックポイントと入力波形) |
クリックがあるたびごとに入力信号が変化することになります。
この変化の数を捉えて、距離に換算します。
では1クリックがどれほどの距離になるか計算しましょう。
このエンコーダーのローラー直径は約22.5mmでしたので、円周は22.5x3.14159=70.6858mmとなります。
この長さの中に18クリックありますから1クリックについて約3.9mmとなります。
地図上では一万倍して39mとなります。
従って、距離測定は入力信号が変化するごとに39mずつ加算していけば良いことになります。
案外簡単でしたね。 |
マップメータJr.「一万分の一」の距離表示 |
クリックごとに39m(16進では27h)加算したデータは10進に変換してから表示します。
最小表示が0.1km(100m)ですので10進変換した5桁の内、上位から3桁分のみ表示します。加算するデータ長は16ビットしかありませんので、10進にすると65.5kmまでの表示となります。 |
|
(上位3桁を表示) |
マップメータJr.「一万分の一」のポート割付 |
ポート名 |
入出力 |
機能 |
RA0 |
OUT |
NC |
RA1 |
OUT |
NC |
RA2 |
OUT |
NC |
RA3 |
IN |
SW1 |
RA4 |
IN |
エンコーダー入力 |
RB0 |
OUT |
7セグ駆動 |
RB1 |
OUT |
7セグ駆動 |
RB2 |
OUT |
7セグ駆動 |
RB3 |
OUT |
7セグ駆動 |
RB4 |
OUT |
0.1km選択 |
RB5 |
OUT |
1km選択 |
RB5 |
OUT |
100km選択 |
RB7 |
OUT |
NC |
|
マップメータJr.「一万分の一」のメインルーチンのフロー |
入力信号の変化を読み取り、距離表示する部分の概要フローチャートです。
簡単ですので、すぐ理解可能ですね。 |
|
(概要フローチャートです) |
マップメータJr.「一万分の一」の主要RAM説明 |
内容的には簡単ですが、主要RAMの説明です。 |
in_check |
入力判定用 |
kyori_l |
入力加算用(下位) |
kyori_h |
入力加算用(上位) |
|
入力の変化があるたびに入力加算用(kyori_l,kyori_h)に27hを加算して行きます。
入力判定用(in_check)は今の入力ポートの状態を保存して、前回と状態が変わったことを判定するのに使用します。詳しくは後ページのソースを参照下さい。 |
data_s1 |
データ変換用(上位) |
data_s0 |
データ変換用(下位) |
|
入力加算用(kyori_l,kyori_h)データを10進に変換するために、一度データ変換用(data_s1,data_s0)にデータを入れ直します。 |
hen_5〜hen_1 |
変換後の10進データ |
sub_count |
変換時のカウンタ |
sub_amari |
変換時の余り |
|
16進>10進変換に使用するRAMです。 |
n1_data |
1桁目の表示データ |
n2_data |
2桁目の表示データ |
n3_data |
3桁目の表示データ |
|
10進に変換したデータは一度表示用RAMに移動します。
7セグメントの表示ルーチンではこのRAMの内容を常時表示しています。 |
いかがでしたか、今回の製作は全体的に簡単ですね。ということで、今回はここまでとしておきましょう。 |
これからも益々面白くなる「PIC16F84電子遊戯」をよろしくお願いいたします。 |
|
不明点などあればメールお願いいたします。nonchansoft@nifty.com |
|
|