- ベストアンサー
pic16f874をつかって
0~9までの入力をアナログ入力をして、それをそのまま7セグメンLEDで表示し、さらに二桁の結果によって指定したLEDが点灯するのをpic16f874をひとつ使ってやりたいのですが、どのようにすればいいのか分かりません。教えて下さい。 もしくはこのような質問を答えてくれるサイトでもあれば教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
本当に、アナログ入力だったら、AN0にでも入れて、A/D変換してやてばいいのでは? フルスケールを10等分して、どのレベルにあるかを調べて、7セグ表示すればいいでしょう。10等分ならA/Dの10ビットを丸々使う必要はなくて8ビットでもいいと思います。 ただ、1桁目なのか、2桁目なのかは、トリガ(同期)信号でもないと難しいですね。たとえば、1,7と入力したときにAN0は、1,2,3,4,5,6、7と変わっていくはずだけど、回路によってどのくらいのスピードで変化するかわからないし、どのタイミングでA/D変換していいのかわからないし。 7セグは、ポートBとポートDでスタティック表示させるとか、ポートBだけでダイナミック表示させるとか。 最後の2桁の結果によって「指定したLED」というのは、いくつのLEDがつながっているのか? 数が多いなら、さっきの7セグをダイナミック表示にしないといけないし、ポートCやポートAの残りで足りれば、7セグはスタティック表示でいいし。 ただ、7セグをダイレクトドライブするなら、PICの許容電流値にも気をつけないといけないかも?
その他の回答 (3)
- kokipapa
- ベストアンサー率33% (118/349)
>これは0~9までの押しボタンを使用します。 押しボタンが10個あるなら、それぞれをI/Oに割り当て、入力を見ればどのボタンが押されたか判りますよね? ボタンに対して7セグをドライブしてやれば良いんでは? >押しボタンを2回押すと、データが2つでてきます。 同じポートに出てくるのだったら、一回目が終わったら別のルーチンで入力を待って2個目の7セグをドライブしたら? 2回目終わったら1回目のルーチンに戻って入力を待てば良いんじゃないの? ※アナログ入力って言うのはON-OFFではなくてリニアな電圧入力ですから、ボタンが10個ある場合そういいません。
- Pesuko
- ベストアンサー率30% (2017/6702)
>電圧の差によって入力データが変わるんです スイッチに抵抗でもシリーズに入っているかな? 押すスイッチによって電圧変わるなら その電圧をコンパレータにかければ解るでしょ。 1回目のデータをセットして、2回目が押されたら1回目のデータを上位の 桁にシフトして、2回目のデータを回の桁に表示する。 じゃあ次の回の処理をどうするのかは仕様しだい。 だいたいこれって課題? この辺の仕様を考える事が目的なんじゃないの?
- Pesuko
- ベストアンサー率30% (2017/6702)
>どのように PICの事は良く知らないから考え方だけね。 >0~9までの入力をアナログ入力をして まず意味が?? 入力電圧が0-10Vととして 1Vごとにコンパレータを入れて 判別する? >それをそのまま7セグメンLEDで表示し コンパレータで判別できた10段階のレベル毎に出力ポートを指定すれば? 7セグメントの点灯パターンは解っていますよね。 >さらに二桁の結果によって この私は部分理解できません。 ごめんねあまり助言にもなってないな。
補足
すみません。説明不足でした。 >0~9までの入力をアナログ入力をして これは0~9までの押しボタンを使用します。 このpicにはA/D変換機能がついていて、電圧の差によって入力データが変わるんです。その辺は私もよく分からないんですが >7セグメントの点灯パターンは解っていますよね それはわかってます。 >さらに二桁の結果によって 押しボタンを2回押すと、データが2つでてきます。 それを2桁にするんです。