• 締切済み

PIC16F873を利用して

スリットの空いた円盤を回転させフォトカプラで計測し、パルスデータをPICで計測するいわゆる回転計を製作しているのですが、入力のプログラムをどのように作成すればよいのかまったく分かりません。出力のほうはLCD表示のプログラムで文字を表示させることは出来るのですが・・・  皆様アドバイスをよろしくお願いします

みんなの回答

  • Pesuko
  • ベストアンサー率30% (2017/6702)
回答No.1

この本の   http://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-NIPS=9975649602 第7章7セグメント表示器の点灯制御  のうち 7.2 3桁加算カウンタ 7.3 3桁減算カウンタ が乗ってます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PICを利用した5桁表示の回転計

    私は今PICを利用して5桁表示の回転計を製作しているんですが、LCDの表示方法についてご質問したいと思います。 LCDで5桁表示させるのですが、下2桁は00で固定し上の3桁だけを表示させることなど出来ないでしょうか? 細かい値はあまり必要がないので・・・ プログラムについての質問なんですが、皆様よろしくお願い致します。

  • picへのフォトインタラプタ出力の入力

    現在、フォトインタラプタの入力をpicに入力してからカウンターに出力する回路を作成しています。 フォトインタラプタでモータの回転数(3150rev/min)を数えています。 この時ccs社のコンパイラを使用して以下のようなプログラムを作成しました。 if(input_PIN(C4)==1){   delay_ms(2); if(input_PIN(C4)==0{ 出力; } } 上記のdelay_ms(2)があれば製作に計測できますが、delay_ms(2)を消去したプログラムでは、全く出力されません。 どういった理由からこのような現象になるのでしょうか? また、間の待ち時間をなくしても正確に回転数を計測できるようなプログラムがおわかりの方はいらっしゃいますでしょうか?

  • PICマイコンができること

    PICは入力信号によって「Yes」か「No」かを出力させるという仕事はできるが、入力信号をそのまま出力させるという仕事はできないものなのでしょうか? 今、PICマイコンに入力する信号は、サーボモータを動かすためのパルス信号であり、サーボモータが右に動くときと、左に動くときとで別々のポートから信号を出力させることを考えてます。 そのために、入力信号のパルス幅をタイマーで計測し、判断させているのですが、問題は判断項目(while や if)が加わると入力信号をそのまま出力することができないことです。 一応、PIC16F84Aを用いて10MHzの内部クロックで 1.判断項目がないとき入力信号をそのまま出力(別々に出力はしない) 2.判断項目は同じとして出力を入力信号にせず、5Vにして別々に出力 の2つについて実際にできました。 結構、厳しい条件ですがPICに期待しすぎなのかわからなくなったので質問しました。 よろしくお願いします。

  • PIC 16F887 を使い7SEG を動作させたいのですが上手く行き

    PIC 16F887 を使い7SEG を動作させたいのですが上手く行きません。 不具合の可能性が、回路が悪いのか、プログラムなのか、わかりません。 添付の画像は不鮮明だと思いますがご了承ください。 動作は、入力によって7SEGの表示をかえます。 マイコンは、PIC16F887(40ピン)で外部オシレータ、リセット等は付けてません。 11ピン 32ピンを5V 12ピン、31ピンをGNDに接続しました。 入力は1ピン~6ピンを10Kプルアップで使用し、6ピン(RA4)は使いませんが、10Kでプルアップしました。 1ピンはフォトカプラ入力ですが、2ピン~5ピンは直接駆動です。 出力は、7SEG(アノードコモン)を4つを動作させるため、40ピン、39ピン、30ピン、29ピンをトランジスタ2SA1015(PNP型)でスイッチングします。 7SEGの表示はPICダイレクトとしました。 マイコンを付けずにジャンパワイヤーで7SEGの動作確認をしまし点灯を確認しました。 以上をでプログラムを書き、電源を入れましたが全く動きませんでした。 マイコンピン配線のマズさなのか、プログラムの可能性なのかご教授、アドバイス宜しくお願い致します。

  • PIC(PIC16F84A)を用いたLCDの2桁表示について

    現在、去年、秋月電子で購入したSHARPのLCD(LM162AT1)をとPIC16F84Aを用いて、周波数カウンタを製作しようと思っています。 そこでLCDとPIC(PIC16F84A)を用いたテスト回路を製作してLCDの表示方法をC言語で書いて勉強しています。1桁の表示はできるのですが、2桁の表示ができません。 MicrochipのMPLAB IDE Ver.8.14を使用しています。 LCDのソースコードは付属のサンプルコードを使用しています。 どうして、2桁表示できないか教えてください。 また、対処方法も教えてください。 よろしくお願いいたします。

  • マイコンの入力読み飛ばしPIC

    PICマイコンを使用して、インバータ駆動の三相モータのモータ回転回数を、フォトセンサで計数しています.フォトセンサとPICの入力はフォトカプラで絶縁して接続しています. PICには、モータが10回転(センサから10回出力を受けたら)したら1回外部に出力するという分周回路機能を持たしています. しかし特定の周波数(今回の場合は約42.1Hz)の時のみ、10回ではなく11回出力を受けないと1回出力しなくなってしまいます.しかも絶対ではなく、10回の時もあれば11回の時もあるという動作です. センサの出力をオシロで観察したところ、特にノイズや立ち上がりのもたつきなどはありませんでした. 多分ですが、マイコンが誤動作していると考えられますが、どのようにな対策案がありますでしょうか?電源ピン付近にパスコンは接続済です. 何卒ご教授宜しく御願い致します.

  • pic12F683で2mS.ON 4mS.OFFのパルス出力

    はじめまして PIC初心者です。PIC12F683 OSC外部入力16Mhzで、2mS、ON4mS、OFFのパルスを、出力したいんです。プログラムを、mikuroCで、具体的にお願いします。

  • PIC16F84でデジタルスピードメーターを作る

    PIC16F84Aでスピードメーターを作ろうと思います。 条件は ・タイヤ1回転で4回のパルス。 ・1パルスあたり50cm(タイヤ外周2m) 測定方法は ・各パルスの間隔をタイマーで計測 ・タイマーは0.009秒のタイマー(Aと名付ける) ・パルスを検出するとタイマーAを繰り返し、Wレジスタに1ずつ加算。 ・次にパルスを検出したらWレジスタの値(Aを繰り返した回数)に応じて速度をダイナミック点灯表示させるプログラムを呼び出す。 速度の表示方法(ダイナミック点灯) ・パルス回数>200なら時速0kmと表示 ・パルス回数=200なら時速1km、パルス回数=199・・時速2km、パルス回数=1なら時速200kmと表示 各パルスの間隔をAを何回繰り返したかによって測定し、それに応じて7セグに3桁表示するものとする。 接続 ・RB0~RB6・・・7セグLED ・RA0~RA2・・・7セグLED(カソード) Wレジスタの値に応じて速度を表示するプログラムを呼び出すまではプログラム書けそうなのですが、 「ダイナミック点灯のプログラムの実行」と「パルスを検出し、タイマーAの回数をカウント」という2つの動作を同時にさせなければなりませんよね? 16F84Aでこのようなことは可能なのでしょうか? だとしたらどのような考え方でプログラミングすれば良いでしょうか?ど素人なので分かりやすい説明をお願いします。

  • picマイコンプログラム手順について

    お世話になります。 pic16f88とキャラクタLCDを使った工作物を考えています。 タイマ1とCCPで入力されるパルス(ロー側)幅の時間を測り 得られた時間に定数を掛けて積算し続けてLCDに表示 そして、picの電源を切るときに積算した数値をEEPROMに保存 この様なことをさせたいのですがフローチャートが作れません。 どなたかフローチャートを書いて頂けませんでしょうか? どうぞ宜しくお願いいたします。

  • PICでスピードメーターを作るためのプログラムについて

    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やプリスケーラ、割り込みをプログラムの流れの中でどのように利用すればよいでしょうか? 出来たらソースを作って頂いてそれで詳しく説明を書いていただけると非常に助かります。

専門家に質問してみよう