HOME  >>  LED電子工作集 > PICマイコンとC言語の勉強  P-6 7セグメントLEDに数字を表示させる

PICマイコンとC言語の勉強  P-6 7セグメントLEDに数字を表示させる

■ はじめに

 今、PICマイコンとC言語の勉強に挑戦している。 そのいきさつは、鉄道模型工作実験室 の別室ブログ 「レイアウトに速度計を設置しよう」 ( 2019/2/22 )にて紹介しているので参照ください。

 学習の第2ステップとして、測定データを表示させるための7セグメントLEDと、新しくPIC16F1827 マイコンの取り扱い方を学ぶことにする。 今回は、セグメントに実際の数字を表示させよう。

/************************************
*     7segLED Test 2
*           2019/2/28
*           PIC16F1827   MPLAB X   XC8
*************************************/

   ( 省  略 ) 

void main()
{
    OSCCON = 0b01110010;
    ANSELA = 0b00000000;
    ANSELB = 0b00000000;
    TRISA  = 0b00000000;
    TRISB  = 0b00000000;
    PORTA  = 0b00000000;
    PORTB  = 0b00000000;
    
    while(1)
    {
        PORTA = 0xDE;         //0を表示
        __delay_ms(1000);
        PORTA = 0x42;         //1を表示
        __delay_ms(1000);
        PORTA = 0x5D;         //2を表示
        __delay_ms(1000);
        PORTA = 0x57;         //3を表示
        __delay_ms(1000);
        PORTA = 0xC3;         //4を表示
        __delay_ms(1000);
        PORTA = 0x97;         //5を表示
        __delay_ms(1000);
        PORTA = 0x9F;         //6を表示
        __delay_ms(1000);
        PORTA = 0xD2;        //7を表示
        __delay_ms(1000);
        PORTA = 0xDF;         //8を表示
        __delay_ms(1000);
        PORTA = 0xD7;         //9を表示
        __delay_ms(1000);
    }
}

 

■ 回路構成とプログラム

 回路構成は、先回の「P-5 7セグメントLEDを使う」と同じであり、プログラムの一部を変更しただけである。 右に変更した main() の部分を表示する。

 数字を表示するためには、どのセグメントを点灯させるかを決めておかなければならない。 16進数にて 一括指定が出来るように対応するビット番号をならべ、それに対応するセグメントを関係付けた下のような表を作った。 

 表示する数字はどのセグメントを点灯させればよいかを求め、その部分を 1 にした。 下の表の赤いセルの部分です。 この1と0の並びを16進数に変換した。

PORTA の出力指示
bit番号 16進数
セグメント F B DP A E D C G
0xDE
0x42
0x5D
0x57
0xC3

0x97

0x9F
0xD2
0xDF
0xD7

 

■ 動作状態

 動作状態を動画で紹介します。 最初はメモ用紙の片隅でいい加減に設定していましたので、数字の表示ミスっていますね。 やはり手を抜かないようにしましょう。

 表示の表示も問題なく実施出来るようになりましたので、今度は3桁の数字の表示方法を学習いたします。