PICを使用し周波数カウンターを作成し、受信機、トランシーバの周波数表示に使用する。 その第一歩としてPICの使い方から始める。 ・使用するPIC PIC 16F84A、16F88 :とりあえずこれから始める 16F84Aは基本であり、色々な所に使用方法等が出ている。 これに少し機能を追加したのが16F88となる。 AD変換、タイマー数が3個等の機能が追加されている。 ・開発環境 MPLAB : マイクロチップ社から提供されている開発環境 アッセンブラー :microchip MPASM マイクロチップ社が無料で提供しているアッセンブラー。 デバッカー :MPLAB IDE マイクロチップ社が無料で提供しているアッセンブラー。 ・ライター : 秋月製 |
PIC 16F84Aと16F88 どちらも18ピンのIC ライターは秋月製 今では新しいタイプとなって いる。 |
![]() |
![]() |
LEDを点灯するプログラムを作成し動作させてみる。 LEDをportB,Aに10個接続し順番に1秒点灯させる。 portB 0,1,2,3,4,5,6,7 portA 0,1 ・プログラムを書き ・MPLAB IDE を使用してビルド ・MPLAB SIM を使用してデバッグ 下が MPLAB SIMを使用してデバッグする時の画面 ・左側にリスト ・右上がSFR(専用レジスター)を表示 ・右下がGFR(汎用メモリー)を表示 これを使用して 特定の場所にブレークポイントをかけたり、ステップで実行して確認する。 |
![]() |
ブレッドボードを使用して 組み立てて確認 10個のLEDを1秒周期で 左から右へ順番に点灯する。 1秒の時間作成は 内蔵タイマーと 割り込みを使用している。 |
![]() |
回路図 クロックは10MHz 素子はセラロック LEDの10個は秋月でまとめて10個 売っていたので10個となった。 |
![]() |
7セグメント4桁を使用する 周波数カウンタの予備段階で 7セグに表示するプログラムを 作成する。 特定のメモリエリヤの値を表示する この値は1秒間隔で変更する。 7セグは3msecのダイナミック点灯 この特定のエリヤにカウントした値 を置けばカウント値が表示される と言う事になる。 タイマーの使用割り当て timer0: ダイナミック点灯用 timer1: 周波数カウント用 timer2: 1秒カウント用 |
![]() |
次のステップ ○1秒を正確に合わせる ・カウンター値を調整する。 現状は 995.6msec ・クロックをセラロックから水晶に変更する。 ○カウンター入力部の回路検討 |
時計 1秒をカウントするなら 時計かと 時計にするプログラムを作成してみた 0059からのカウントアップで0100 ヘキサのカウント値から7セグへの変換は テーブルを作成して参照する方式とした。 Hの上位桁は0の場合消灯とする。 HとMの間にコロンを設けて1秒周期で点滅 などの処理を行うと時計らしくなるか。 |
![]() |
![]() |