PIC24FJ64GAでGAME言語(その6) [PIC]
Amazon でドットマトリックスLEDモジュールを安く(279円)売っていたので買ってみました ^^
LED表示制御用ICである MAX7219 を使用したもので arduino であればスケッチを探してくれば制御できそうです。
しかし、ここは PIC のブログなので PIC24FJ を使って動作確認してみました。
MAX7219 のマニュアル(日本語版がありました^^)を見ながらお手軽な GAME言語 を使って動作確認しました。
Tiny Basic interpreter である GAME言語 をPIC上で動作させているのでコンパイルや書込みの手間が要らず、このようにはじめて使うICの動作を確認する場合には大変便利です ^^
MAX7219 が単機能であることもありますが、一晩で動作確認(ブレッドボード配線、制御信号波形確認、デモプログラム作成)ができました^^
表示データの作成はエクセルで作成した升目にデザインし、目視しながらHEX化しました(自動変換しようかとも思いましたがマニュアル変換でも効率は殆ど変わらないのでw)
動作確認時のデモ表示を YouTube にアップしましたのでご覧あれ
https://youtu.be/7tnAIw-97nw
ソースは次のとおりです。
Dot Matrix LED test(GAME言語)
★2015/11/07 追記
プログラム変更(YouTubeはアップデートしていません)
★2015/11/14 追記
波形も載せておきます(黄色:CLK、紫色:DIN)。
インタープリタで出力しているので約0.5ms/bitのビットレートです。出力部分をアセンブラで作れば100倍程度にできると思います。
LEDドライバを多段にカスケード接続する場合は出力部をアセンブラ化した方がよさそうです。
また、MAX7219の電源電圧は規格にあわせて5Vにしています。
★2019/03/23 追記
この記事では7219への書込みをソフトウェアで実現していますが、クロック信号出力付のシリアル通信であるSPIのI/Fを使用して書込みもできるのでPIC内のSPIモジュール機能を使ってもっと簡単で高速に7219への書込みができます。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
LED表示制御用ICである MAX7219 を使用したもので arduino であればスケッチを探してくれば制御できそうです。
しかし、ここは PIC のブログなので PIC24FJ を使って動作確認してみました。
MAX7219 のマニュアル(日本語版がありました^^)を見ながらお手軽な GAME言語 を使って動作確認しました。
Tiny Basic interpreter である GAME言語 をPIC上で動作させているのでコンパイルや書込みの手間が要らず、このようにはじめて使うICの動作を確認する場合には大変便利です ^^
MAX7219 が単機能であることもありますが、一晩で動作確認(ブレッドボード配線、制御信号波形確認、デモプログラム作成)ができました^^
表示データの作成はエクセルで作成した升目にデザインし、目視しながらHEX化しました(自動変換しようかとも思いましたがマニュアル変換でも効率は殆ど変わらないのでw)
動作確認時のデモ表示を YouTube にアップしましたのでご覧あれ
https://youtu.be/7tnAIw-97nw
ソースは次のとおりです。
1' Dot Matrix Module MAX7219 test by skyriver 2015/11/07 10 P=& TA=$2C0 LA=$2C4 20 DO=1 CK=2 EN=4 30 LA:0)=0 TA:0)=$F8 40 #=10000 49' write to driver A<-address B<-data 50 Z=A*256+B 60 LA:0)=LA:0)&(~(EN|CK)) 70 Y=0,15 80 ;=Z<0 LA:0)=LA:0)|DO 90 ;=Z>=0 LA:0)=LA:0)&~DO 100 LA:0)=LA:0)|CK Z=Z*2 LA:0)=LA:0)&~CK 110 @=Y+1 120 LA:0)=LA:0)|EN 130 ] 999' initialize MAX7219 1000' set no decode mode 1010 A=9 B=0 !=50 1020' set scan limit 0-7 1030 A=11 B=7 !=50 1040' set intencity 1050 A=10 B=4 !=50 1060' set normal operation 1070 A=12 B=1 !=50 1080 ] 1999' write array pattern 2000 A=1,8 B=P:A+Q-1) !=50 @=A+1 ] 2999' pattern data 3000' space,0 3010+ 00 00 00 00 00 00 00 00-00 7E C1 B1 8D 83 7E 00 3020' 1,2 3030+ 00 00 00 82 FF 80 00 00-00 86 C1 A1 91 89 86 00 3040' 3,4 3050+ 00 42 81 81 89 89 76 00-00 30 28 24 22 FF 20 00 3060' 5,6 3070+ 00 4F 89 89 89 89 71 00-00 7E 89 89 89 89 72 00 3080' 7,8 3090+ 00 01 01 C1 31 0D 03 00-00 76 89 89 89 89 76 00 3100' 9,@ 3110+ 00 06 89 49 29 19 06 00-7C 82 65 95 F9 82 7C 00 3120' A,B 3130+ 00 FC 12 11 11 12 FC 00-00 FF 89 89 89 89 76 00 3140' C,D 3150+ 00 7E 81 81 81 81 42 00-00 FF 81 81 81 42 3C 00 3160' E,space 3170+ 00 FF 89 89 89 89 81 00-00 00 00 00 00 00 00 00 3180' O,WA 3190+ 00 60 92 7F 12 90 64 08-00 22 1A FF 0A 08 88 70 3200' ri,space 3210+ 00 00 1E 08 00 80 7E 00-00 00 00 00 00 00 00 00 3220' EOD mark 3230+ 5A 5A 6999' hex2bin transfer(nibble) 7000 O=O-"0" ;=O>9 O=O-"A"+"0"+10 7010 ] 7999' set display pattern 8000 R== Q=0 8010 @ 8020 ;=R:3)<>"+" R=R+R:0) #=8090 8030 R=R+4 8040 @ 8050 O=R:1) !=7000 P:Q)=O*16 O=R:2) !=7000 P:Q)=P:Q)+O 8060 R=R+3 Q=Q+1 8070 @=(R:0)=0) 8080 R=R+1 8090 @=(R:0)=0) 8100 ] 8999' return to first data 9000 Q=0 9010 ;=S=1 S=8 ] 9020 S=1 9030 ] 10000 !=1000 !=8000 F=P(Q/2-1) 10010 S=1 !=9000 10020 @ 10030 ;=P(Q/2+4)=F !=9000 10040 ¥=5*S 10050 !=2000 10060 Q=Q+S 10070 @ "" @=(¥=0) 10080 @=(0) |
★2015/11/07 追記
プログラム変更(YouTubeはアップデートしていません)
- 表示パターンを配列への代入からコメント行への埋め込み方式に変更
- 表示するパターンを追加
- スクロール無しとスクロール有りの2方式で交互に表示するようにした
★2015/11/14 追記
波形も載せておきます(黄色:CLK、紫色:DIN)。
インタープリタで出力しているので約0.5ms/bitのビットレートです。出力部分をアセンブラで作れば100倍程度にできると思います。
LEDドライバを多段にカスケード接続する場合は出力部をアセンブラ化した方がよさそうです。
また、MAX7219の電源電圧は規格にあわせて5Vにしています。
waveform(CLK and DIN) |
|
★2019/03/23 追記
この記事では7219への書込みをソフトウェアで実現していますが、クロック信号出力付のシリアル通信であるSPIのI/Fを使用して書込みもできるのでPIC内のSPIモジュール機能を使ってもっと簡単で高速に7219への書込みができます。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
コメント 0