キー入力回路 RA0からRA2までの3本のピンを入力ピンとして使用しています。 ピンは10KΩの抵抗器でプルアップしています。これによりスイッチが押されていない時には入力はHレベル(+5V)になります。スイッチが押されるとLレベル(0V)になります。スイッチが閉じるときチャッタリングという現象(スイッチが閉じるときにバウンドし、短時間に開閉を繰り返す)が発生します。今回の回路ではスイッチをソフトでスキャンしたときにLレベルであればスイッチが閉じられていると判断しています。今回のソフトウェアでは、あるスイッチが閉じられたことを検出すると他のスイッチが閉じられるまで状態を保持するので、チャッタリングの防止回路は付けていません。 LED制御回路 RB0からRB7の8本のピンを出力ピンとして使用しています。 LEDのアノード側を+5Vに接続し、カソード側を抵抗器経由でPICにより制御しています。ですから、PICの出力がHレベル(+5V)でLEDは消え、PICの出力がLレベル(0V)でLEDが点灯します。LEDの電流制御用の抵抗値は以下のようの計算しています。今回使用したLEDの点灯推奨電流は20mAです。 (電源電圧−LED点灯電圧(2V))/LED点灯電流=(5V-2V)/0.02A=150Ω。 今回の回路では150Ωの抵抗器が手元に無かったので220Ωを使用しました。この場合、LEDの電流は(5V-2V)/220Ω=14mAになります。 クロック発振器回路 今回の回路ではLEDの点灯位置を移動する処理にPICのタイマー機能を使用しています。LEDの点灯状況を人間が見る場合、速すぎると意味がありません。今回の回路ではLEDの点灯が尾を引くように見せるのが目的です。 そこで、PICのクロックには4MHzのレゾネータを使用しました。4MHzのクロックの周期は1/4,000,000=0.25マイクロ秒。タイマーのカウントには4クロック必要なので、タイマーのカウントダウンは1マイクロ秒になります。タイマーの入力には、さらに1/256のプリスケーラを使用しているので、カウントダウンは256マイクロ秒になります。タイマーの初期値を195とし、256μsec/カウント x 195カウント = 49920μsec = 50msec をタイマー値にしています。 電源回路 +12Vの電源から+5Vの出力得るために3端子レギュレータを使用しています。 レギュレータには1Aタイプの7805を使用しています。 今回のソフトウェアでは同時に点灯するLEDは2つ、少し暗く点灯させるのが2つ、薄く点灯させるのが2つなので、4つが同時に点灯するとしても約60mAです。PICの消費電流を加えても100mA以下です。このような点灯しかさせない場合には100mAタイプのレギュレータ(78L05)を使用することができます。 |