「天文屋のためのマイコン入門」7セグメントLEDを付ける
まず最初に、謝らなければならないことがあります。大事な設定の説明を忘れていました。それは、デフォルトの基数の設定です。
これから先、プログラムを記述するのにデフォルトの基数を10進数としたいのですが、それにはMPLIBの設定が必要なのです。これをしないと、たとえば、
10
と書いた場合、10進数の10ではなく16進数の10(つまり10進の16)と解釈されてしまうのです。
方法は次の通りです。
MPLIBを起動し、プロジェクトを新規作成、または開いたら、メニューの[Project]->[Build options]->[Project]を開き、[MPASM Assembler]のタブをクリックします。
Default RadixのところををDecimalとします。
ただ、この設定はプロジェクト毎に行う必要があり、忘れる可能性があります。(実際私は忘れた)
そこで、プログラム中で設定する方がいいと思います。プログラムの一番最初に次の一文を書けばOKです。
Radix DEC
なおデフォルト基数を10進数としましたが、この場合、16進数を書くには以下の方法があります。
●H' 'で囲う 例 H'9b'
●最後にhを付ける 例 9bh
●最初に0xを付ける 例 0x9b
どの方法でも良いのですが、PICのマニュアルの記述が最後にhを付ける方式なので、今後そうします。
それでは、7セグメントLEDを取り付けます。まず、回路図です。
ほんとは、7セグメントLEDの7個のLEDを全部、ポートBに接続したかったのですが、ポートBのRB2とRB5は、スマフォの無線通信のために使うので、どうしても空けておく必要があります。そこで泣く泣く、1本だけ、ポートAのRA6に接続しました。
ですから、この7セグメントLEDを操作するにはポートAとポートBの両方をアクセスする必要があります。
ただ、ポートAは1ビットしか使っていないので、ビット操作命令(BCF/BSF)を使うことにします。
この接続の場合の、ポートへ出力するデータと7セグメントLEDの数字の関係を次に示します。
配線図は次の通りです。
実際の完成写真です。
プログラムを作ります。MPLIBを起動したらプロジェクトを新規に作成し、以下のようなプログラムを記述します。
このプログラムは、スイッチを押すとLEDと7セグメントLEDが点灯し、離すと消灯するプログラムです。プログラムの解説は次回します。
| 固定リンク
コメント