FC2カウンター

現在の訪問者数

現在の閲覧者数:

カレンダー

06 | 2017/07 | 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

プロフィール

剣菱P

Author:剣菱P
剣菱Pと申します。
性別:男
年齢:27
二兎を追って一兎も得られないタイプ

マイコンやプログラミング、ニコニコ動画、雑記等
方向性は見えずとも、ちょっとずつ更新していく予定です!

リンクフリーです。
こんなブログでよかったらよろしくお願いしま~す。

公開メール kenbishiP@gmail.com

検索フォーム

最新記事

最新コメント

カテゴリ

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

最新トラックバック

リンク

ブロとも一覧

ブロとも申請フォーム

ランキング

ランキング参加中です。気が向いたらクリックしてあげてください。


にほんブログ村 その他趣味ブログへ
にほんブログ村 その他趣味ブログ 趣味の工作へ

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

テトリスっぽいもの 逆さタチコマ»

コメント

コメントの投稿













管理者にだけ表示を許可する

MAX7219


8桁の7セグメントLEDをドライブできるMAX7219

このICを使うと8×8のマトリクスLEDを簡単に制御できるらしいので

使い方を調べてみました


通常は8×8のマトリクスLEDを制御するには8本+8本の16本の信号線が必要になり

マイコンのポートをかなり圧迫してしまいます

さらに、ダイナミック点灯をしなければならないので、常時LED表示用のプログラムを走らせておく必要があります


このMAX7219を使うとそんな問題とはおさらば

制御信号は CLK LOAD DATAの3本

さらに、LEDの点灯状況は内部のレジスタに記録されたものを自動で表示してくれるので

一度セットしたら後は放っておいてかまわない


ピン配置
20100801_105825.jpg


このICは16ビットのシリアルデータで制御します

その16ビットのうち8~11ビット目にレジスタのアドレス

0~7にレジスタにセットする値を指定します

12~15は無効です
s-20100801_105755.jpg

8×8のマトリクスLEDドライブ用に使うためには

まず初期化しなくてはならないレジスタがあります

まずShutdown mode

これをいじらないと、ずっとシャットダウンモードで何時までも実行できません。

Shutdown modeのレジスタアドレスは 00001100
s-20100801_110004.jpg
ノーマルオペレーションにするには値を 00000001にしなくてはならないので

00001100 00000001を送信します 送信方法は後述


次にDecode mode
s-20100801_110021.jpg

今回は文字を表示するわけではなく、マトリクスLEDに任意のパターンを表示するので

No decode (00000000)を選択します レジスタアドレスは00001001なので 送信データは

00001001 00000000


次にIntensity mode

LEDの輝度を設定します リセット後は最小に設定されているので、任意の値に
s-20100801_110052.jpg
最大にしたければ00001111をセットします

アドレスは00001010なので 送信データは

00001010 00001111

最後に ScanLimit
7セグメントLEDを何桁分表示するかを設定します

今回は8×8のマトリクスLEDなので 8桁分表示にします
s-20100801_110105.jpg

レジスタアドレスは00001011 セットする値は00000111なので

00001011 00000111

以上で初期化は完了

実際にLEDを点灯させるには

指定行のレジスタに点灯させるLEDの情報を書き込むだけ

一行目のLEDを交互に付けたいならば Dgit0レジスタに01010101をセットすればいいので

送信データは 00000001 01010101


さて、実際にどうやってMAX7219にデータを送信するかというと
20100801_113911.jpg

こんな感じになります

順番に書くと

Load端子をLowにセット

CLK端子をLowにセット

・15ビット目の値をDINにセット     

CLK端子をHighにセット ここでシフトレジスタの0ビット目に①の値がセットされます

つまり 00000000 0000000 がMAX7219のシフトレジスタに入ってます

さらに

CLK端子をLowにセット

・14ビット目の値をDINにセット     

CLK端子をHighにセット ここでシフトレジスタがシフトし②が0ビット目に入ります

つまり 00000000 000000①② が入ってます

これを繰り返して 16ビットすべて送信したら

LoadをHighにセットします

この瞬間シフトレジスタの値が 指定されてたレジスタに反映されます



とりあえずAVR ATmega88PでMAX7219を動かしてみました

max7219.txt

s-P8010020.jpg

わーい、無事につきました!

実を言うと 初期化しなくてはならないことに気が付かなくて

最初は信号はあってるのになぜつかないのかかなり悩みましたw

スポンサーサイト

テトリスっぽいもの 逆さタチコマ»

コメント

コメントの投稿













管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。