PIC16F84Aを使用してスピードメーターを自作することを目指しているのですが、
まだ初心者なのでどういったプログラムを組めばよいのかが分からないのですが自分なりに方法を考えてみました。
それは、
車速パルス間の時間をタイマーで計測し、その結果に応じてあらかじめ用意した表示用のデータを出力する。
データを出力したら次のパルス間の計測結果が出るまで表示を続け、次の計測結果が出たらそれを新たに出力する。
というものです。
一般的なメーターもこういう原理なのかも知れませんが・・・。
「Timer0」「プリスケーラ」「割り込み」というものを使用したりするようですが、
正直言ってこれらの具体的な使用方法が分かりませんのでとりあえずスピードメーターを簡素化?したものを学習用として作ることにしました。
それは
PICのピンにタクトスイッチを取り付け(チャタリング対策もする)、入力用にする(割り込みが出来るRA4でいいのかな?)。
RBのポートを7セグ表示用のICへ繋ぐ。
という回路で、
電源を入れるとタイマーが計測をはじめ、タクトスイッチを押すと押すまでの時間に応じて結果をポートBに出力する。
電源ON→スイッチ1回目→結果を出力すると同時に2回目までの計測を開始→スイッチ2回目→結果を出力すると同時に3回目までの計測を開始・・・と続く。
この回路での計測結果と出力データの関係は以下のようにします。(適当に考えたものですが)
計測結果が
10秒以上・・・00を表示(2桁はダイナミック点灯で表示)
9~10秒・・・01を表示(厳密には9秒以上10秒未満)
8~9秒・・・・02を表示(厳密には8秒以上9秒未満、以下同じ)
7~8秒・・・・03を表示
6~7秒・・・・04を表示
5~6秒・・・・05を表示
4~5秒・・・・06を表示
3~4秒・・・・07を表示
2~3秒・・・・08を表示
1~2秒・・・・09を表示
0~1秒・・・・10を表示
というものを試しに作ってみようと思います。
アセンブリ言語を使ってプログラムを作るのですが、
Timer0やプリスケーラ、割り込みをプログラムの流れの中でどのように利用すればよいでしょうか?
出来たらソースを作って頂いてそれで詳しく説明を書いていただけると非常に助かります。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
アセンブラは書けないので考え方だけ。
スイッチを押したときだけ更新入れるのなら、とりあえずRA4の割り込みで
・時間取得
・前回時間との比較
・比較結果に応じた出力
を処理するだけです。Timer不要。
なんとなく、パルスを使うなら「一定時間で入力回数を使って速度算出・更新」の方がいいのかなという気はします。でないと例えば完全停止してるにも関わらずパルスが入らないため表示が0にならないなんて結果になってしまいますし。
そんな訳で、RA4割り込みでは入力回数のみカウントしてTimer割り込みで
・入力回数からの速度算出
・算出した速度の表示
・入力回数リセット
とやると多少それらしくなるかと思います。
Prescalerは?と思われるかもしれませんが、これはTimerのカウンタとソースクロックの関係を決定するためのもので、1クロックごとにTimerをカウントするのでは短すぎる場合に何クロックごとにTimerをカウントするかを設定します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 三菱製PLC Qシリーズで技術的なことをご教示いただければ幸いです。使ってるソフトはGXWorks2 1 2023/02/28 12:07
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- その他(プログラミング・Web制作) プログラムが書けません。 6 2023/01/22 22:58
- 食器・キッチン用品 温度計について 温度計を買う予定で、欲しい機能としては、温度が300度以上、制度1度以下が1度、測定 2 2022/05/06 16:02
- Excel(エクセル) 文字列を数式として変換する事はできますか? 6 2022/06/23 10:38
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- デスクトップパソコン パソコンの起動に5秒~10秒かかります。 5 2022/09/16 07:05
- Excel(エクセル) excelvbaでスライドショーを作りたい 2 2023/04/20 14:32
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PICでパルス数をカウントする方法
-
入力回数のカウントをする方法
-
エクセルVBAのIf,Then 構...
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ライン数とステップ数の違いは?
-
ビットシフトってどんな時使うの?
-
ものづくりに向いているプログ...
-
2の補数
-
実行ファイルからソースはみれる?
-
verilog 符号付加減算(最上位...
-
素数を求めるプログラム(アセン...
-
シーケンス制御についての質問...
-
Windowsはオープンソースですか?
-
visualbasic のコード中で 100...
-
OSはどんなコンピューター言語...
-
アセンブラ skipzの意味
-
小数点の引き算が不正確
-
文字参照は10進数と16進数では...
-
アセンブリ言語からC言語への変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PICでパルス数をカウントする方法
-
PICでパルス数をカウントし、カ...
-
PICの入出力切り替えの時間がプ...
-
H8を利用したPWMのパルス生成に...
-
C言語による赤外線受信
-
RTCの通信方法(I2C、S...
-
H8マイコンのDA変換機能について
-
H8マイコンでのカウントタイマ...
-
入力回数のカウントをする方法
-
シリアル通信のデータ受信につ...
-
0xffffとは?
-
エクセルVBAのIf,Then 構...
-
8ビットのデータの、先頭ビット...
-
ビットシフトってどんな時使うの?
-
ライン数とステップ数の違いは?
-
アセンブラからC言語に変換する...
-
ものづくりに向いているプログ...
-
レジストってなんですか?
-
verilog 符号付加減算(最上位...
-
一般のソフトで画像を扱う場合...
おすすめ情報