USBを介して7セグメントLEDのダイナミック点灯制御するには?


あいうえおー  2006-02-17 18:24:13  No: 130285

久しぶりに利用させていただきます。
現在、USB-IOを利用し、2桁の7セグメントLEDを点灯させるという処理を行っています。
VBのフォーム上でボタンをクリックした際、数字が1,2〜・・・と増えていくものを作っています。
ポート0で点灯制御をしており、ポート1の0ビット目と1ビット目でそれぞれ、1の位と10の位のダイナミック点灯制御を行っているのですが、1の位と10の位が同時に表示されずうまくいきません。
情報送信⇒表示させる桁をONにする⇒表示させる桁をOFFにする
というような流れで行わなければならないのですが、表示させる桁をOFFにするところでうまくいかないようです。
どのようにすれば上手に表示させることができるでしょうか?
ちなみにVB.net2003を使用しています。
OSはwindowsXPプロフェッショナルです


へむりん  2006-02-17 20:15:45  No: 130286

どのような回路なのかわかりませんので推測ですが
表示させる桁の点灯情報をハード側で保持して
いないので片方ずつしか表示できないのではないですか?

1の位と10の位の表示を高速に切り替える作戦とか

ポート0の0-3ビット目を1の位用、4-7を10の位用
という風に改造すれば同時に出せるとおもいます。(改造面倒そう)
または1の位用・10の位用とポートを独立させてしまうとか。
ポート1の意味が無くなってしまいますが。


あいうえおー  2006-02-17 20:22:25  No: 130287

どのような回路なのかわかりませんので
説明不足ですいませんでした。
回路の方は↓を参考にさせていただいております
http://www.technokit.biz/usb_io/7seg_setu2.html
高速に切り替える=ダイナミック点灯制御なのですが、1の位を点灯させたあと、10の位を点灯させるという切り替えを行う場合、1の位の点灯を一度消灯しなければいけないのですが、そのやり方がわからないので・・・。
説明が下手でごめんなさい。


我龍院忠太  2006-02-17 21:01:12  No: 130288

どのようなファームを使ってるか判らないので
なんとも言えないのですが、通常はポートに
1を書き込むとON、0を書き込むとOFFですね。
ONする所のコードだけでも提示されると、
判るかも。
それにしても、2SA733とは懐かしいものを
使ってますね・・・・・


GOD  2006-02-17 21:03:11  No: 130289

>http://www.technokit.biz/usb_io/7seg_setu2.html
>高速に切り替える=ダイナミック点灯制御なのですが、1の位を点灯させたあと、10の位を点灯させるという切り替えを行う場合、1の位の点灯を一度消灯しなければいけないのですが、そのやり方がわからないので・・・。
>
どのようにうまくいかないんでしょうか?
上記URLのサンプルプログラムを見る限り、特定ウェイト後にポート0に0を出力すればよいのでは?


あいうえおー  2006-02-17 23:51:44  No: 130290

我龍院忠太様・GOD様
VBの場合、処理が反対になってしまいまして、1で消灯、0で点灯という形になるんです。
点灯させるには0を出力するのですがそのときの命令が
uio_out(1,0,0)という形になって、引数の一番初めがポート番号、二つ目がビット数、三つ目がパルス(これはあまり関係ありませんが・・・)となります。
ですので、0を出力すると点灯してしまい、うまくいきません。
うぅ・・・本当、説明が下手くそでごめんなさい。

へむりん様
ポート0の0-3ビット目を1の位用、4-7を10の位用
という風に改造すれば同時に出せるとおもいます。(改造面倒そう)

それ頂きです!目からうろこが落ちました!
とりあえずは今の回路を残して、別のブレッドボードに作成してみようと思います。


GOD  2006-02-18 00:49:12  No: 130291

>VBの場合、処理が反対になってしまいまして、1で消灯、0で点灯という形になるんです。
>
ならポート0に対して&H7Fあたりを書き込むと消灯するのでは?
(MSBは未接続だからどっちでもいいのかな。)

>ポート0の0-3ビット目を1の位用、4-7を10の位用
>という風に改造すれば同時に出せるとおもいます。(改造面倒そう)
>
ハード詳しくないから結構適当だけど、LEDを2個以上増やす予定がないならポート1
をLEDの選択ではなくデータラインとして使えないの?
「ポート0・・・1の位、ポート1・・・10の位」みたいに。


GOD  2006-02-18 00:56:37  No: 130292

>ハード詳しくないから結構適当だけど、LEDを2個以上増やす予定がないならポート1
>をLEDの選択ではなくデータラインとして使えないの?
>「ポート0・・・1の位、ポート1・・・10の位」みたいに。
>
詳しく読んでなかった。^^;
ポート0,1合わせて12ビットしか使えないのか。orz


我龍院忠太  2006-02-18 01:02:01  No: 130293

要するに回路がローアクティブなのに
サンプルのコードはハイアクティブになってて
上手くいかないと言うことですか。
単にデータービットを反転させればいいのでは。
repeat
    uio_out 1,254
    uio_out 0,128
    await t_jikan
    uio_out 0,255
    uio_out 1,253
    uio_out 0,216
    await t_jikan
    uio_out 0,255
loop


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加