目次>5章 第2ステップ(色々な実験)>(16)7セグメントLEDを使う(3桁固定数字)

7セグメントLEDを使う
− 3桁固定数字 −
更新日2008.2.3

(1)7セグメントLEDとは
7セグメントLEDは、下の写真のように直線状のLEDを7つ組み合わせたもので、点灯させるパターンにより簡単な文字(数字など)が表示できます。 (デジタル時計などでよく見かけると思います。)
全てのセグメントを点灯させると数字の8になります。

小数点(ドット)を含めると8セグメントですが、小数点が無かった頃の名残で7セグメントLEDと呼ばれています。

下は1つのセグメントを点灯させた状態。

各セグメントには記号が付けられ、どのピンに接続されているかを表しています。

点灯させるセグメントで以下のように数字を表示できます。

7セグメントLEDの種類。

色や大きさ、小数点の有無の他に、アノードコモンタイプとカソードコモンタイプの2つに大別されます。
また、複数個を1つのパッケージにし、ダイナミック点灯制御専用に内部で結線されたタイプもあります。今回は、このタイプを使用しました。(カソードコモンタイプ)

(2)回路図
今回の実験回路は以下の通りです。
ダイナミック点灯制御用の7セグメントLED(以降7セグと略す)を使いましたので、配線が最低限で済んでいます。

消費電流を少なくしたい場合は、300Ωの抵抗8本を1KΩに変更して下さい。
若干暗くなりますが点灯します。(7セグの種類にもよると思いますが)

RA0〜2:点灯する7セグを選択
RB0〜7:点灯するセグメントを指定

(3)実験回路を組む
上の回路をブレッドボードに組んだ所です。

(4)3桁目の全セグメントを点灯させる
3つの内、一番左の7セグに「8.」を表示します。
下のプログラムがその例です。

プログラムの下の方にある、「MOVLW 0FFh」で点灯させるセグメントを選択します。この値を変えると表示されるパターンが変わります。
簡単なプログラムですので、動作を確認してみて下さい。

	LIST	P=PIC16F84A	; LIST宣言で使用するPICを16F84Aと定義する。
	INCLUDE	P16F84A.INC	; 設定ファイルp16f84a.incを読み込む。
	__CONFIG	_HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

	ORG	0

	BSF	STATUS,RP0	;■ページ1に切替え
	CLRF	TRISB		;RB0-7は出力
	MOVLW	018h
	MOVWF	TRISA		;RA0,1,2は出力,RA3,4は入力
	BCF	STATUS,RP0	;■ページ0に切替え
	MOVLW	04h		;RA2のみON(7セグの3桁目を表示)
	MOVWF	PORTA		;
	MOVLW	0FFh
	MOVWF	PORTB		;PORTBを全てON(7セグの全セグメントを点灯)

main
	GOTO	main

	END

このプログラムを実行すると以下のように表示されます。

(4)1秒毎に各桁の表示を切り替える
上のプログラムは、RA2を常時ONにしていますので、左の7セグだけが表示されました。
では、RA2→RA1→RA0と順番にONにするとどうなるでしょう。1秒毎に切り替えてみます。
プログラムはこちらです。

表示する7セグを切り替えると共に、表示するセグメントのパターンも変えています。
左から順に、「1」「2」「3」が1秒毎に表示されるはずです。

(5)5ミリ秒毎に各桁の表示を切り替える
RA2→RA1→RA0と順番にONにする事で、3つの7セグが順に点灯したと思います。

次に、もっと高速に切り替えて見ましょう。
プログラムはこちらです。
各桁の切り替えを先ほどのプログラムでは、1秒毎に行っていましたが、こちらは5ミリ秒にしています。

3つ共点灯しましたか?
実際は高速に点滅しているのですが、人間の目は早い点滅を識別できず、点灯しているように見えるのです。
このような方法を、ダイナミック点灯制御と言います。

上と同じですが、シャッタースピードを1/400にして撮るとこうなります。

人間の目はだませても、カメラの目はだませないと言う事でしょうか。

LEDの高速点滅で人間の目をだます事は、LEDの明るさを序所に変えるでも行っています。