PIC16F628A 883周波数カウンタの表示部について説明します。
表示部は、PIC16F883を使用しています。8桁の7セグメントLEDを動かすためには、8+7=15のポートが必要です。このため、24個のI/Oを持つこのPICにしました。
7セグメントLED(秋月電子のOSL-40562-LB)は、ダイナミック点灯としています。
プログラムのメインループは、ダイナミック点灯に使い、データをシリアル通信でデータを受信したときに発生する割り込みにより、表示データを更新します。 通信速度は、19200bpsです。
カソードコモンのLEDはデジタルトランジスタDTC114でドライブしています。これにより抵抗を8本省略できます。
PIC16F883は、内部子ロック8MHzで動作させています。
周波数測定部からは、周波数データがASCIIコードで送られてきますので、ASCIIコード一旦BCDに変換し、それをLED表示用のデータに変換しています。
ASCIIコードのスペース(20h)は、00hに変換することにより、LEDが消灯されます。
; ------------------------------------------------
; BCD4ビットを7セグメントLED表示用に変換するサブルーチン
;-------------------------------------------------
BCD2LED
ADDWF PCL,F
RETLW 03Fh ;0
RETLW 006h ;1
RETLW 05Bh ;2
RETLW 04Fh ;3
RETLW 066h ;4
RETLW 06Dh ;5
RETLW 07Dh ;6
RETLW 007h ;7
RETLW 07Fh ;8
RETLW 06Fh ;9
RETLW 040h ;a
RETLW 040h ;b
RETLW 040h ;c
RETLW 040h ;d
RETLW 040h ;e
RETLW 040h ;f
; BCD4ビットを7セグメントLED表示用に変換するサブルーチン
;-------------------------------------------------
BCD2LED
ADDWF PCL,F
RETLW 03Fh ;0
RETLW 006h ;1
RETLW 05Bh ;2
RETLW 04Fh ;3
RETLW 066h ;4
RETLW 06Dh ;5
RETLW 07Dh ;6
RETLW 007h ;7
RETLW 07Fh ;8
RETLW 06Fh ;9
RETLW 040h ;a
RETLW 040h ;b
RETLW 040h ;c
RETLW 040h ;d
RETLW 040h ;e
RETLW 040h ;f
回路図です。
1桁当たりの表示時間を当初3msとしましたが、ちらつきを感じましたので、約1.6msとしました。