
HOME >> 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番号 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 16進数 |
| セグメント | F | B | DP | A | E | D | C | G | |
0 |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 0xDE |
1 |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0x42 |
2 |
0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 0x5D |
3 |
0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0x57 |
4 |
1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0xC3 |
5 |
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0x97 |
6 |
1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0x9F |
7 |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 0xD2 |
8 |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 0xDF |
9 |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0xD7 |
■ 動作状態
動作状態を動画で紹介します。 最初はメモ用紙の片隅でいい加減に設定していましたので、数字の表示ミスっていますね。 やはり手を抜かないようにしましょう。
表示の表示も問題なく実施出来るようになりましたので、今度は3桁の数字の表示方法を学習いたします。