• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:LEDマトリクスについて質問です。)

LEDマトリクス制御についての質問

このQ&Aのポイント
  • LEDマトリクスの制御方法について質問です。アノードコモンで、アノード側の制御はPNPトランジスタ、カソード側の制御はNPNトランジスタを使用していますが、特定のLEDを点灯させることができません。
  • ソースコードも示されていますが、どこに間違いがあるのか指摘していただけますか?
  • LEDマトリクスの制御に関する専門知識をお持ちの方、アドバイスをいただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

マトリックスLEDには「アノードコモン」などという概念はありません。 アノードもカソードもどちらも共通配線が入っているのが「マトリックス」ですから。 (前回の質問からすると、「2色LEDなマトリックスで、2色のアノードがコモンになっている」のだと思いますが、 今回のプログラムでは、その接続がどうなっているか書かれていません。 8x8の2色LEDマトリックスなら、8bit×3ポート必要になりますが、今回のプログラムでは2ポートしか制御していないようですし) それと、PADR と PBDR のどちらがアノードでどちらがカソードなのかもわかりません。 (コード的にも「1行目(PNPトランジスタ)に0を、」に該当するコードがありません。2つのポートのどちらも、1ビットだけ1に出力してますし。) といった質問の不明点があるので、まともに答えようがないというか、 さらに、使用しているマイコンが何かわからないので、以下の文章は多分に推測が入っています。 > PADDR = 0xff; /* ポートA全ビット入力 */ 入力とコメントに書かれていますが、それでいいのでしょうか? あと、まずはダイナミック点灯ではなくスタティック点灯で、 LEDがハードウェア的に正しく接続されているかどうかを確認する方がいいかと。 もし、PADRがアノード側PNPトランジスタ、PBDRがカソード側NPNトランジスタに繋がっているのなら、 --- PADR = 0x00; PBDR = 0xFF; for (;;) ; --- で、全てのLEDが点灯するはずです。(PADRがカソード、PBDRがアノードなら、PADR/PBDRを入れ替えてください。以下同じ) これでLEDが点灯しないのなら、ダイナミック点灯以前の問題です。 ハードウェア回りか、ソフト側のポートの初期化回りか、どちらかの問題だと思いますが、 エミュレータでポートの入出力を確認するとか、テスタでポートの出力電圧を確認するとかして まずLEDをスタティック点灯できるようにしてください。 これでLEDが点灯したなら、次にダイナミック点灯ですが、 まずは簡単な例で、市松模様を表示させてみると、 おそらく --- for(;;) { PADR=~(0x01 << 0); PBDR=0xaa; wait(50000);// 1列目に「○●○●○●○●」表示 PADR=~(0x01 << 1); PBDR=0x55; wait(50000);// 2列目に「●○●○●○●○」表示 PADR=~(0x01 << 2); PBDR=0xaa; wait(50000);// 3列目に「○●○●○●○●」表示 PADR=~(0x01 << 3); PBDR=0x55; wait(50000);// 4列目に「●○●○●○●○」表示 PADR=~(0x01 << 4); PBDR=0xaa; wait(50000);// 5列目に「○●○●○●○●」表示 PADR=~(0x01 << 5); PBDR=0x55; wait(50000);// 6列目に「●○●○●○●○」表示 PADR=~(0x01 << 6); PBDR=0xaa; wait(50000);// 7列目に「○●○●○●○●」表示 PADR=~(0x01 << 7); PBDR=0x55; wait(50000);// 8列目に「●○●○●○●○」表示 } --- こんな感じになるはずです。基本的に「8回の操作」の繰り返しになります。 2重ループにして64回のポート出力があるというのは間違えています。 (PADRがカソード、PBDRがアノードなら、PADR/PBDRを入れ替えてください)

eagle060
質問者

お礼

もうボロボロですね… 今度はもうちょっとじっくりと作っていきたいと思います。 あの後判明したのですが、PNPトランジスタが悪かったようです。 細かいご指摘ありがとうございます、これを参考に今後も頑張ります! (またお世話になるかもしれません…)

関連するQ&A

専門家に質問してみよう