14章:7セグメントLED表示器

    作成2015.01.28

  1. 7セグメントLED表示器の購入先と価格の購入先と価格
    (1)購入先:秋月電子通商
    (2)品名:ダイナミック接続4桁高輝度赤色7セグメントLED表示器 アノードコモン アノード共通接続
    (3)価格:¥200
    *7セグメントLED表示器は配線が多くなりますが、安価で低電力が特徴です。


  2. ダイナミック接続4桁高輝度赤色7セグメントLED表示器 アノードコモン アノード共通接続の仕様
     仕様詳細は14-1.pdfを参照願います。
    [14-1.pdf]をダウンロードする。


  3. 7セグメントLED表示器回路図
     7セグメントLED表示器回路図を以下に示します。

    *電源はパソコンのUSBから供給しました。
    *7セグメントLED表示器をマイコン端子からダイレクト駆動としました。(単純化のため)
    *DPの接続は省略しました。
    *7セグメントLED表示器のAからGまでの順番で接続しました。


  4. 7セグメントLED表示器回路外観
     7セグメントLED表示器回路外観を以下に示します。

    *リセット時を0とし、1s毎にカウントアップした値を表示します。


  5. 7セグメントLED表示器関係のプログラムコード
    *アナログ入力もUSBも使用しないため、基本設定は標準的なものとなります。
    (1)関数宣言
    void InitInterTimer0 (void);でタイマー0の初期設定をおこないます。

    (2)マイコン動作周波数(48MHz)の設定
    #define _XTAL_FREQ 48000000 //__delay_ms

    (3)グローバル変数宣言
    unsigned char CH[10] = { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
    *0から9までの値に対する7セグメントLED表示器の点灯パターンを定義shています。
    unsigned char gCT=0;
    *タイマー0割込み毎のカウンタ値です。(0から3まで変化)
    unsigned short gNo=0,gNo3,gNo2,gNo1,gNo0;
    * gNoは4桁の10進値を設定します。(この値が表示されます。)
    *gNo3,gNo2,gNo1,gNo0は各桁毎の1桁の値です。

    (3)void main (void)
    void main(void)
     {
        int i,j;
        init();
        InitInterTimer0();
        // 割込み全体の許可
        GIE = 1;
        unsigned short L1,L2,L3,L4;
        while(1)
        {
            for(i=0;i<10;i++)
            {
                for(j=0;j<100;j++){__delay_ms( 10 );}
                gNo++;
                L1=gNo/10;
                L2=L1/10;
                L3=L2/10;
                L4=L3/10;
                gNo3=(L3-L4*10);
                gNo2=(L2-L3*10);
                gNo1=(L1-L2*10);
                gNo0=(gNo-L1*10);
            }
        }
    }
    

    (4)タイマ0割込み設定関数
    // タイマ0割込み設定関数
    void InitInterTimer0 (void)
    {
        // クロック源を内部クロックに設定
        T0CS = 0;
        // プリスケーラをタイマ0に割り当て
        PSA = 0;
        // プリスケーラ値を128に設定
        T0CONbits.T0PS0 = 1;//PIC18F4553
        T0CONbits.T0PS1 = 1;//PIC18F4553
        T0CONbits.T0PS2 = 0;//PIC18F4553
        // TMR0レジスタをクリア
        TMR0 = 0x0000;
        // タイマ0割込みフラグをクリア
        T0IF = 0;
        // タイマ0割込みの許可
        T0IE = 1;
    }
    

    (5)割込みサービスルーチン
    // 割込みサービスルーチン
    static void interrupt isr()
    {
    
    
        switch (gCT)
        {
    	case 0:
                gCT++;
                 PORTD=~CH[gNo3];
                 PORTB=0X01;
    		break;
    	case 1:
                gCT++;
                PORTD=~CH[gNo2];
                PORTB=0X02;
    		break;
    	case 2:
                gCT++;
                PORTD=~CH[gNo1];
                PORTB=0X04;
    		break;
            case 3:
                gCT++;
                PORTD=~CH[gNo0];
                PORTB=0X08;
    		break;
    	default:
                gCT=0;
    		break;
        }
        // タイマ0割込みフラグをクリア
        T0IF = 0;
    }
    


  6. 全体プログラム
     詳細は14-1.txtファイルを参照願います。
    [14-1.txt]をダウンロードする。


  7. 7セグメントLED表示器まとめ
    (1)7セグメントLED表示器は配線が多くなる欠点がありますが、安価で低電力です。
    (2)低電力の特徴を生かし、マイコン端子でダイレクト駆動としました。
    (3)マイコン端子ダイレクト駆動で配線の手間が少し軽減されました。
    (4)ソフト的には、各桁を順次表示するため、タイマ0割込みを使用する必要が生じますが内容的にはさほど難しくなかったです。
    (5)7セグメントLED表示器は手軽な表示器として活用できそうです。




15章:K型熱電対プローブに行く。

トップページに戻る。