[電子工作] シフトレジスタをAVRのSPIマスタで制御して7セグメントLEDを駆動する [電子工作]
元ネタ -> chan氏の LEDディスプレイを接続する
元ネタではソフトウェアで制御していますが、SPIマスタで制御出来ないかと思い
試してみました。
・コモン側(桁選択)のIC(164)を、74ACシリーズにしてトランジスタレスに簡略化。
※74AC164は1ピンで20mAくらい出せる。
今回は電流制限抵抗を1.8kΩとし、( (3.3V-2V)/1.8kΩ ) x 8 = 最大約6mAとしています。
超高輝度LEDを使っているので、1セグメントあたり0.7mAでも充分な明るさを得られています。
・MOSIピンを[74HC595のデータ入力ピン(14)]と[74AC164のデータ入力ピン(1,2)]に接続して
SPIマスタで制御
・MISOピンを[74HC595のラッチ(12)とイネーブル(13)]と[74AC164のクロック(8)]に接続
SPIマスタ中はAVR側が入力になってしまうので、プルダウンしておく。
・74AC164側にクロックを送る際はSPIをdisableにする。この時SCKピンとMISOピンの出力が
変化しないようにPORTB[4:5]の出力をSPIマスタの終了時の状態に合わせておく
SPIマスタを使うことで、データシフト -> ピン出力 -> クロック出力を最短2クロックで
できるので、ダイナミック駆動時のCPU負荷を軽減できるかな?
回路図とソースコードです。
コメント 0