今回はシリアルデータをパラレル出力するためのICである、74HC595の使い方を説明します。このICは最低3本の制御線で、8本の出力ができます。74HC595を直列に繋ぐことにより制御線はそのままに、一個追加するごとに8本の出力を増設できます。用途はというとマイコンの出力端子が足りないときに増設するときに利用します。マイコンから直接出力するよりも時間がかかるので、速度の必要な用途には厳しいかもしれませんが、LEDへの出力など低速(内蔵IOポートに比べて)でも大丈夫な用途に利用できます。74HC595は普通のシフトレジスタとは異なり、データの送信中は出力端子の状態を変えずに、全てのデータを送信し終わってから任意のタイミングで一気に出力ポートを変化させることができるようにラッチが内蔵されています。これにより、遅い動作で駆動させても出力端子の余計な変化は起こりません。今回はAVRのATtiny2313から74HC595を通して3本の制御線で8個のLEDを点灯させてみることにします。2010年3月4日追記:ATmega等のSPI機能がついたAVRを利用する場合はSPI機能を利用することをおすすめします。SPIをつかったシフトレジスタの操作はこちら。SPIを使うことにより、シフトレジスタへの送信がハードウエアで行われ倍近くの動作速度が期待できます。動作原理を知るには以下のようにポートを直接操作するプログラムのほうがわかりやすいので、こちらも読んでいただくことをおすすめします。するために組んだ回路です。シフトレジスタクロック。LoからHiになるときに内部シフトレジスタをシフトし、最下位ビットにSERの内容を追加。内部のシフトレジスタを実際に外の端子に出力。Loのままクロックを送信すると、シフトレジスタの中身が全て0になる。Hiにすると出力端子がHi-Z(ハイインピーダンス:無接続とほぼ同じ状態)になる。直列に74HC595を接続する際に次の74HC595のSER端子に接続。(常にレジスタの最上位ビットを出力)利用する際は、出力したい8ビットのデータを上位ビットからSERとSCKを使い74HC595に出力。した時に出力端子に反映されます。直列に74HC595を追加するときは、次のシフトレジスタのSERに前シフトレジスタのQH*を接続し、残りのクロック等は共通にするだけで、8ビットのシフトレジスタ以上に16ビットや、24ビット.....とビット数を増やすことができます。AVRのプログラム次のようなプログラムにしてみました。重要なのはshift_out関数です。この関数が引数の8ビットのデータを74HC595に送信する部分です。これを利用していろいろLEDを点滅させてみました。上記の回路図とプログラムを実際に動かしてみました。写真では伝わらないので動画を載せておきます。LEDは左2つは余っており、左が下位ビット、右が上位ビットです。このパーマリンクをブックマークする。パーマリンク私が、今研究しようとしたテ-マ-と、ばっちり一致するものでした。ERRORに成ります。偏見的、希望LineNo.は削除したほうが、ビギナ-では、良いと思います。パーマリンクコメントありがとうございます。参考になったのなら光栄です。58行目間違ってますね、訂正しておきました。確かに行番号はない方がコピーもしやすいですね。パーマリンクはじめまして。