- 締切済み
32×16ドットLEDマトリクス表示装置をCで動かしたい!
AKI-H8-3048/Fを使って32×16ドットLEDマトリクス表示装置を動かそうとしています。以前投稿して、そのときの意見やいろんなサイトを参考にCでプログラムを作ってみましたが動きません。 ↓が作ったプログラムです。 #include <3048f.h> #include <stdio.h> /* 待ち時間発生初期化 ************************************/ void timer_init(void){ ITU0.TCR.BYTE = 0x23; ITU0.GRA = 0x07d0; ITU.TSTR.BIT.STR0 = 0; return; } /* 待ち時間発生 引数に、必要なミリ秒を指定する***********/ void wait(int msec){ int i; ITU.TSTR.BIT.STR0 = 1; for(i=0;i<msec;i++){ do{ }while(ITU0.TSR.BIT.IMFA == 0); ITU0.TSR.BIT.IMFA = 0; } ITU.TSTR.BIT.STR0 = 0; return; } /* 表示 ********************************************/ void print(void){ int a=0; int sin1[16]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; int sin2[16]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; int sin3[16]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}; while(1){ P1.DR.BIT.B0 =0; wait(100); P1.DR.BIT.B0 =1; wait(100); P1.DR.BIT.B4 =1; for(a=0;a<=16;a++){ P1.DR.BIT.B2 =sin1[a]; P1.DR.BIT.B1 =sin2[a]; P1.DR.BIT.B3 =sin3[a]; } } return; } /* メイン関数 ********************************************/ void main(void){ timer_init(); /* timerの初期化 */ P1.DDR = 0x1f; /* port1出力に設定 */ print(); } 何が違うのかわからないのでご指摘をお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- silverbear
- ベストアンサー率25% (163/639)
わかりません。 まず、何が動かないんですか? AKI-H8-3048/Fが動いてないんですか? 32×16ドットLEDマトリクス表示装置が動いてないんですか? AKI-H8-3048/Fは動いてるとして、ポートから信号は出力されていますか?(テスタしかなくても、超低速動かせばポートの制御が出来ている事ぐらいは確認できます。) P1.DR.BIT.B0 P1.DR.BIT.B1 P1.DR.BIT.B2 P1.DR.BIT.B3 P1.DR.BIT.B4 これらのポートはそれぞれ何処に接続されていますか? 動かそうとしている回路の回路図はこれでよろしいでしょうか? http://akizukidenshi.com/pdf/v47e.pdf でも、ポートBの出力は多分 B0:0W1W111111111111111111 B1:?W?W?11111111111111111 B2:?W?W?11111111111111111 B3:?W?W?11111111111111111 B4:?W?W111111111111111111 (Wはウェイト、?は不定) と言う出力になるのかな?と思いますが、回路図見るとクロックとかがあるので、最低でも 01010101010とか、001100110011とか、000111000111000111のように出力するポートが無いと動く事は無いように思います。
お礼
お礼が遅くなってしまって、まことにもうしわけありません。なんとか動かすことができました。まだ問題もありますが、もう少しなのでがんばってみます。ありがとうございました。