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桁の数字の表示方法を学習いたします。