秋月で2桁の赤色7セグLEDが4個100円とかだったので衝動買いしましたが、なんにも使ってません。
これが4個100円とかおかしい
7セグって独特の雰囲気があって好きなんだけどなー。
7個のセグメント(+小数点(DP))を別々に点灯・消灯しないといけないので、PIC側にも7個の出力ピンが必要だろうなーと思っておりましたが、シフトレジスタを使うとなんかできるらしい。
シフトレジスタにも2種類ありますが今回使うのはシリアル入力・パラレル出力ですね。
1ビットのデータを用意しておいてクロックをパコンと叩くと、8個あるD-FFの内容が右に1個ずつずれて、端っこに用意しておいたビットが入ります。ビットシフト命令と同じですね。
要するにデータを用意しては叩き込み、を繰り返すことで1ビットのシリアルデータを8ビットのパラレルデータに変換できるわけです。
実際にはクロックも必要なので1ビットで、というわけにはいきませんが、クロックとデータあわせて2ビットで8ビット分…要するに7セグLED1桁+小数点が駆動できます。
シフトレジスタを増やせばもっとたくさん動かす事もできます。(100桁とかだとさすがにどうかと思いますが)
ちなみに今回使ったシフトレジスタは74HC164です。
出力ピンの出力電流は±25mAなので直接LEDをドライブできます。えらい。
というわけで、PICからクロックとデータを取って…。
7セグLEDがアノードコモンなのでアノードを5Vにつないで、カソードはそれぞれ200Ωの抵抗を介してシフトレジスタの出力へ…8本…接続…。
PIC(右端にささってる12F683)からシフトレジスタへは線が2本だけですが、そこから先はパラレルなのでケーブルまみれです。たいへんだ。
あとは適当にPIC用プログラムを作ります。
2つのピンからビロビロってデータ出すだけだから別に難しいことはないですね。
というわけで!
動きがよくわかる感じのプログラムにしました!
シフトレジスタにデータを送り込む速度をだんだん速くしていますよ。
後半は違和感ないw
74HC164が結構速いんですよ。
まあ単なるロジックICだから当然ですけど。
データシート見たけど、ウェイトは100ns(0.1μs)とれば充分なんです。
PICは今回8MHzで動かしてるので、1命令実行するには0.5μs掛かります。要するにPICのプログラム的には全速力でデータを送っても余裕でこなしてくれます。すごいな。
そんななので、1桁書き換えるのに要する時間は100μsもありません。多分。
いくら速いとは言っても書き換えしてる所が見えるんじゃないかと思ってましたが、やってみたら全然みえなかった。すごい。
2ピンあれば何桁でも動かせるから、4桁分あるやつとか作っておくと何かと使えるかも…。使えないかも…。
明日は秋月で8×8ドットのLEDマトリクスをいくつか買ってきて…
冬休み中に電光掲示板を作る!かも!
これが4個100円とかおかしい
7セグって独特の雰囲気があって好きなんだけどなー。
7個のセグメント(+小数点(DP))を別々に点灯・消灯しないといけないので、PIC側にも7個の出力ピンが必要だろうなーと思っておりましたが、シフトレジスタを使うとなんかできるらしい。
シフトレジスタにも2種類ありますが今回使うのはシリアル入力・パラレル出力ですね。
1ビットのデータを用意しておいてクロックをパコンと叩くと、8個あるD-FFの内容が右に1個ずつずれて、端っこに用意しておいたビットが入ります。ビットシフト命令と同じですね。
要するにデータを用意しては叩き込み、を繰り返すことで1ビットのシリアルデータを8ビットのパラレルデータに変換できるわけです。
実際にはクロックも必要なので1ビットで、というわけにはいきませんが、クロックとデータあわせて2ビットで8ビット分…要するに7セグLED1桁+小数点が駆動できます。
シフトレジスタを増やせばもっとたくさん動かす事もできます。(100桁とかだとさすがにどうかと思いますが)
ちなみに今回使ったシフトレジスタは74HC164です。
出力ピンの出力電流は±25mAなので直接LEDをドライブできます。えらい。
というわけで、PICからクロックとデータを取って…。
7セグLEDがアノードコモンなのでアノードを5Vにつないで、カソードはそれぞれ200Ωの抵抗を介してシフトレジスタの出力へ…8本…接続…。
PIC(右端にささってる12F683)からシフトレジスタへは線が2本だけですが、そこから先はパラレルなのでケーブルまみれです。たいへんだ。
あとは適当にPIC用プログラムを作ります。
2つのピンからビロビロってデータ出すだけだから別に難しいことはないですね。
というわけで!
動きがよくわかる感じのプログラムにしました!
シフトレジスタにデータを送り込む速度をだんだん速くしていますよ。
後半は違和感ないw
74HC164が結構速いんですよ。
まあ単なるロジックICだから当然ですけど。
データシート見たけど、ウェイトは100ns(0.1μs)とれば充分なんです。
PICは今回8MHzで動かしてるので、1命令実行するには0.5μs掛かります。要するにPICのプログラム的には全速力でデータを送っても余裕でこなしてくれます。すごいな。
そんななので、1桁書き換えるのに要する時間は100μsもありません。多分。
いくら速いとは言っても書き換えしてる所が見えるんじゃないかと思ってましたが、やってみたら全然みえなかった。すごい。
2ピンあれば何桁でも動かせるから、4桁分あるやつとか作っておくと何かと使えるかも…。使えないかも…。
明日は秋月で8×8ドットのLEDマトリクスをいくつか買ってきて…
冬休み中に電光掲示板を作る!かも!