HOME  >>  LED電子工作集 > PICマイコンとC言語の勉強  P-5 7セグメントLEDを使う

PICマイコンとC言語の勉強  P-5 7セグメントLEDを使う

■ はじめに

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

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

 

■ 7セグメントLEDとPIC16F1827

 スケールスピードを表示するために、3桁の表示装置として7セグメントLEDを使用する。 選択したのは、パラライト社製のカソードコモンである C-533SR-A G/W である。 そして、これに合わせて、18ピンのPICマイコンを選定した。 セグメント表示のためのピンは11本であるが、ドットを使わない場合は10本を使用することになる。 このため、少し余裕をもって18ピンとし、PIC16F1827 のマイコンを選択した。

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

#include 

#define _XTAL_FREQ  8000000

// CONFIG1
#pragma config FOSC = INTOSC
#pragma config WDTE = OFF  
#pragma config PWRTE = OFF 
#pragma config MCLRE = ON   
#pragma config CP = OFF      
#pragma config CPD = OFF     
#pragma config BOREN = ON     
#pragma config CLKOUTEN = OFF 
#pragma config IESO = ON        
#pragma config FCMEN = OFF   

// CONFIG2
#pragma config WRT = OFF        
#pragma config PLLEN = ON       
#pragma config STVREN = OFF   
#pragma config BORV = LO       
#pragma config LVP = OFF     

void main()
{
    OSCCON = 0b01110010;
    ANSELA = 0b00000000;
    ANSELB = 0b00000000;
    TRISA  = 0b00000000;
    TRISB  = 0b00000000;
    PORTA  = 0b00000000;
    PORTB  = 0b00000000;
    
    while(1)
    {
        PORTA = 0x10;         //Aセグメントを点灯
        __delay_ms(300);
        PORTA = 0x40;         //Bセグメントを点灯
        __delay_ms(300);
        PORTA = 0x02;         //Cセグメントを点灯
        __delay_ms(300);
        PORTA = 0x04;         //Dセグメントを点灯
        __delay_ms(300);
        PORTA = 0x08;         //Eセグメントを点灯
        __delay_ms(300);
        PORTA = 0x01;         //Gセグメントを点灯
        __delay_ms(300);
        PORTA = 0x80;         //Fセグメントを点灯
        __delay_ms(300);
    }
}

 入手した機器を下に示す。

 

■ 回路構成

 新しく取り組む PIC16F1827 マイコン7セグLEDの学習のために、簡単な回路を構成した。 ブレッドボードに組み付けた状態を下に示す。

 

 マイコンとLEDの間の配線は、実際にユニバーサル基板へ組み付ける場合を想定して検討した結果、下記の様な配線とした。 さらに、一つの数字を表示するには、A〜Gまでの指定が必要となるが、16進数でまとめて指定できるように PORTA にまとめている。 今回の表示桁の設定は、手始めに、手動でGNDに接続して表示する桁を選択するようにした。 まずは、スタティック制御でトライしてみよう。

 プログラムは、7セグメントLEDの各セグメントを一つずつ表示させるようにしている。 なんだ!と思われるかも知れないが、初めて取り扱う PIC16F1827 マイコンに対して自信がなかったからである。

    PICマイコンは型番が異なるとまず一から学習しろ!  ・・・・・・・・・・との格言(?)を信じているからである。

 コンフィグの設定など、石毎に異なっているため、最初にウロウロするのはこのとっかかりの部分なのだ。 なお、点灯させるセグメントの指定は、そのポート位置を16進数に換算し、PORTA にまとめて出力している。

 

■ 動作状態

 でも、今回は拍子抜けするほど簡単に動いてしまった。 一度もエラーが出なかったのだ!

 電源は、5ボルトのACアダプタを使い、PICkit3も回路に特設接続している。 上記の回路図の小さな丸印の三つのポートと電源およびGNDに接続した状態でマイコンに書き込みを実施した。

 動作状態を動画で紹介します。

 電源は5ボルトのACアダプタから供給しています。