PIC第一歩 LED,7seg 


 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秒周期で点滅
 などの処理を行うと時計らしくなるか。