FC2ブログ

シフトレジスタ

4月から2回生のLC.です.
今年度はフル単で, 無事進級することができたようです.

最近は電子工作に興味があり, PICやArduinoを使ってLチカ(LEDを点滅させること)させたり,
キャラクタLCDに文字を表示させたり, ドットマトリクスLEDを制御したりして遊んでいます.
(実はHNの由来はLC回路だったりしたりしなかったり...)

ここでは, ドットマトリクスLEDについて取り上げたいと思います.
ドットマトリクスLEDは, 8x8コのLEDランプによって構成される部品で, 16ピンで制御します.
この部品を複数個並べることで, 電光掲示板を作ることができます.
(電車の行き先表示などでよく見るアレです)

ところが, ドットマトリクスLEDを制御するためには (ドットマトリクスLEDの個数) x 16ピンの制御が必要になり,
1, 2個までなら不可能では無いですが, それ以上となると, マイコンのピン数が足りなくなります.

そこで, シフトレジスタを使用することにしました.

(以下はシフトレジスタについての雑で分かりにくい説明なので読み飛ばしちゃってください.)


シフトレジスタとは, クロックに同期してシリアルデータを入力して, それをビットシフトさせながらパラレルデータに変換するデジタル回路です.
内部構造的には,複数のフリップフロップがカスケード接続されたものとなっています.

今回使用したシフトレジスタは, 8Bitシフトレジスタ74HC595Nです.
これは, 8Bitのシリアルデータ(1ピン入力)を8Bitのパラレルデータ(8ピン出力)に変換するものです.

動作イメージは次のような感じです.
10001111という8Bitのデータをシフトレジスタで出力するとき,
1-------
11------
111-----
1111----
01111---
001111--
0001111-
10001111
というように, 1Bitずつシフトしていきます.
このシフトレジスタの良い所は, シフトレジスタ自体をカスケード接続できることです.
つまり, 8Bitシフトレジスタを複数個連結させて, 32Bitシフトレジスタ, 64Bitシフトレジスタ, 128Bitシフトレジスタ, ... を作ることが可能ということです.
ドットマトリクスLED1個あたりのピン数は16なので, ドットマトリクスLEDn個に対しては,2n個の8Bitシフトレジスタを連結させて
16n Bitシフトレジスタを作ればよいことがわかります.




実際に, ドットマトリクスLEDを2つ横に並べて文字をスクロールさせたものがこちらになります.
(ブレッドボード上で3つ並べたら配線がひどいことになったので2つにしました.ちゃんとユニバーサル基板で配線すべきですね.)



これとは別に7セグLEDを同じようにシフトレジスタを使って16進カウンタを作ってみました.
これは, 上の反省を活かしてユニバーサル基板でモジュール化(?)してみました.



と, まあ, こんな感じですね.
普段はPC上で動くソフトウェアのプログラミングしかしてこなかったので,
こういったハードウェア制御のプログラミングは初めてだったので, 結構大変でしたけれど,
コンピュータの基礎部分を直接制御している感じが新鮮でした.

それではまた.
プロフィール

どうけん

Author:どうけん
東京理科大学 動画研究同好会のブログです。部員のつぶやきとか何かの告知とかいろいろ。

連絡先:tus.douken☆gmail.com
(☆→@)

最新記事
カテゴリ
MIX (9)
air (1)
LC. (3)
為 (9)
aa (2)
RSSリンクの表示
リンク