7セグメントLEDラッチ回路
LEDの表示状態を保持するためのラッチレジスタとしてDタイプのフリップフロップ(D-FF)である74LS273を使用しました。このフリップフロップは1つのICに8つのD-FFが入っています。1つの7セグメントLEDを制御するために1つの74LS273を使用しています。D-FFの動作は、まず、D端子に保持させるデータを入力します。その後、クロック端子(CK)をLからHにします。これにより入力(D)の状態が出力(Q)に保持されます。Qの状態はCKをLにしても保持されています。Qの状態の変化はCKがLからHに変化するタイミングです。今回のPICのソフトウェアでは各桁の制御ごとにCKをL状態にした後、次の桁の制御をしていますが、次の桁を制御するときに前の桁のCKをL状態にしてもよいと思います。
今回の回路の動作は以下のようになります。最初に100位のデータをPICのRB0からRB6に出力し、全ラッチレジスタに入力します。次にRA0をHにして100位用のラッチレジスタ(IC5)のCKだけをHレベルにします。これにより100位用のLED(LED1)に100位の数字が表示されます。その後、IC5のCKをLレベルにします。この状態でDの入力が変化してもQの状態は変化しません。次にRB0-RB6に10位用のデータを出力します。このデータは全ラッチレジスタに入力されますが、CKをHにしなければQは変化しません。この状態でRA1をHレベルにして10位用のラッチレジスタ(IC6)のCKだけをHレベルにします。これにより10位用のLED(LED2)に10位の数字が表示されます。100位のLEDのCKはHにしないので、LED1の表示内容は変化しません。1位の場合も同様に10位のCKをLにした後、RB0-RB6に1位のデータを出力し、RA2をHレベルにして1位のデータをLED3に表示します。
LEDのカソードに抵抗器を入れて電流を抑えています。今回使用したLEDの最大電流は25mAで、100Ωの抵抗器を入れることにより約22mAの電流にしています。
D-FFのDはDelay(遅延)を意味しています。上のアニメを見るとD-FFと言われる意味が分かると思います。
CLEAR端子をLレベルにすると全てのQがLレベルになります。今回の回路では保持状態を初期化する必要がないので、CLEAR端子はVcc端子に接続し、常にHレベルにしています。
CLOCK端子がLレベルからHレベルに変化するときにD端子の状態がQ端子に保持されます。それ以外の状態でD端子が変化してもQ端子の状態は変化しません。
74LS273は1つで約30mAの電流が必要です。3つで約90mAになります。改良前の回路では5Vのレギュレータとして100mAタイプの78L05を使用しましたが電流容量が不足するため、1Aタイプの7805に変更しました。
|