LEDマトリクスをつくって光らせる

中学生から大学にいたるまでの間,細々と楽しんでいた電子工作ですが,最近はめっきりご無沙汰しておりました.このところ,家の中の掃除をしていると昔つくったものがちらほらと出てきて,以前作ろうと思っていたものの部品集めの痕跡などをみるに,また,少しずつ始めてみようか,という気持ちんなってきました.ただ,最近はオンボード製品がたくさんあって,ハードウェアから自分でつくらなくても楽しめるようになっているみたいです.

新しい制作環境になれる目的で,一般的にはLチカとかHello worldからはじめるところですが,ふと思いついて,大量に余っている(300個くらい?)赤色LEDを使用することにしました.購入すれば300円くらいのLEDマトリクスを自分でつくって,光らせてみようという企画です.

縦横に8行8列のLEDを並べて結線し,これまた余っているPIC 18F2553で制御しています.もう少し頑張れば,文字や数字の表示もできそうです.

途中光っていない列がありますが,どうやらPIC 18F25XX系統の設定ファイルの問題のようです.ちゃんと光るようにしても良いのですが,この企画はあまりに余っているLEDを使って肩慣らしをしたかっただけでしたので,次にすすみます.およそ10年ぶりにPICを使用しましたが,開発環境が使いやすくなっていて驚きました.マイコンでいろいろと作る熱が再燃しそうです.

参考までにソースコードです.For文も使用せず,単に列ごとのON/OFFを並べただけというかなり雑なプログラムです.コンフィギュレーションは,内臓クロックを使用するを選んだほかはすべてOFFにしています.

#define _XTAL_FREQ 1000000

void main(void) {

    ADCON0 = 0x0F;
    ADCON1 = 0x0F;
    TRISA=0x00;
    TRISB=0x00;
    TRISC=0x00;
    PORTA=0x00;
    PORTB=0x00;
    PORTC=0x00;
     
    while(1){
        __delay_ms(50);
        LATC6 = 1;
        __delay_ms(50);
        LATC6 = 0;
        __delay_ms(50);
        LATC5 = 1;
        __delay_ms(50);
        LATC5 = 0;
        __delay_ms(50);
        LATC4 = 1;
        __delay_ms(50);
        LATC4 = 0;
        __delay_ms(50);
        LATC3 = 1;
        __delay_ms(50);
        LATC3 = 0;
        __delay_ms(50);
        LATC2 = 1;
        __delay_ms(50);
        LATC2 = 0;
        __delay_ms(50);
        LATC1 = 1;
        __delay_ms(50);
        LATC1 = 0;
        __delay_ms(50);
        LATC0 = 1;
        __delay_ms(50);
        LATC0 = 0;
        __delay_ms(50);
        LATA6 = 1;
        __delay_ms(50);
        LATA6 = 0;
    }
}

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA