PIC(PIC12F1822)でLEDを点灯させる
本記事ではPIC12F1822を使って実際にLEDをチカチカさせるまでの作業をまとめていきたいと思います。
- ピンの説明
- プログラムの作成
- PICへの書込み
- 配線
- 動作確認
❶ ピンの説明
今回使用するPIC12F1822には8個のピンがあります。ピンの配置はMICROCHIP社が発行しているデータシートで確認できます。データシートにはピン配置以外にもいろいろな情報に乗っています。ネットで検索すれば出てくるので確認してみましょう。
1番ピン(VDD)は電源のプラス、8番ピン(VSS)は電源のマイナスになります。また、2~7番ピンのRA0~5はIOピンとなっており、入出力ができるピンになっています。2~7番ピンには他にも機能が多くあり、それらはでデータシートで確認できます。
この図の中でRA以外の機能を持っているピンを紹介します。これらPICkitでプログラムをPICに書込むときに使いピンになります。
・4番ピン:MCLR(VPP)
この端子に電源電圧以上の電圧を印加することで、PICをプログラム書込みモードにすることができます。また、通常動作時には、コンフィグレーションの設定で外部リセット端子として使用できます。
IOピンとしては出力ピンとして機能せず、入力専用のピンとなっております。
・7番ピン:ICSPDAT
・8番ピン:ICSPCLK
この2個のピンでPICにプログラムの書込みを行います。
今回は5番ピンの「RA2」を制御してLEDを点灯させていきたいと思います。
(もちろん出力のできない4番ピン「RA3」以外のIOピンであればどれでもOKです。)
➋ プログラムの作成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
//コンフィグレーションの設定 #pragma config FOSC = INTOSC #pragma config WDTE = OFF #pragma config PWRTE = ON #pragma config MCLRE = OFF #pragma config CP = OFF #pragma config CPD = OFF #pragma config BOREN = OFF #pragma config CLKOUTEN = OFF #pragma config IESO = OFF #pragma config FCMEN = OFF #pragma config WRT = OFF #pragma config PLLEN = OFF #pragma config STVREN = ON #pragma config BORV = LO #pragma config LVP = OFF //ヘッダファイルの読み込みインクルード #include <xc.h> //その他の設定 #define _XTAL_FREQ 31250 //PICのセットアップ int main(void) { OSCCON = 0b00010000;//オシレータ31.25kHzに設定 ANSELA = 0x00;//全ピン デジタルI/Oピンとして設定 TRISA = 0x00;//全てのピンを出力 PORTA = 0x00;//全てのピンを初期化(LOW(0)に設定) //プログラム本体 while(1) { RA2 = 1;//LED点灯 __delay_ms(1000);//1秒待機 RA2 = 0;//LED消灯 __delay_ms(1000);//1秒待機 } } |
・コンフィグレーションの設定
PICマイコンの基本的なハードとしての動作を決定します。詳しくは「コンフィグレーションの設定方法」を確認
・ヘッダファイルの読み込みインクルード
ヘッダファイルは今回使用しているC言語で使われるファイルで、プログラムを実行する上で必要なライブラリが入っていたりします。実は、コンフィグレーションを生成する時に一緒に生成されているのであまり気にしなくてOKです。
・その他の設定
その他で必要な設定をここに入力します。今回は「__delay_ms()」という一定時間停止させる関数を使います。この一文で、プログラム上で時間をカウントするのに必要な、PICの動作周波数を指示しています。
・PICのセットアップ
ここでは、PICの設定や初期状態にしたりしています。意味合い的にはコンフィグレーションと似ていますが、ここで設定したことはコンフィグレーションと違いメンイ関数上で変更できます。(コンフィグレーションはメンイ関数上で変更はできない)
未使用ピンは入出力の設定を「出力」の「LOW」にすることが推奨されています。しかし、RA3は入力専用のピンなので入出力の設定を「出力」にしても「入力」しかできません。
・メンイ関数
while(LED)の関数部分に動作処理をプログラムします。今回はテーマにもあるように「LEDをチカチカさせる」ためのプログラムを書きます。
❸ PICへの書込み
・PICkitとPICを配線
PICkitのピンは下の図のようになっています。
▲が付いているピンが1番ピンの「MCLR/VPP」になります。よって、写真では一番上のピンが1番ピン、一番下のピンが6番ピンになります。それぞれのピンをPICの同一ピンに配線していきます。配線すると下の写真のようになります。PICの向きに注意しましょう。
PICkitとパソコンの接続はPICkitに付属していたUSBケーブルを使います。配線をすべて終わらせてから書込み作業を始めます。
・PICへの書込み
プログラムを書きっこむ際は「MPLAB X IPE」を使います。書込みまでの流れを画像にて示します。まずは「MPLAB X IPE」アイコンを選択しましょう。
※USBの給電が5Vに達していない場合、この後PICkitをConnectしたときに「電圧が足りません」といった内容のエラーが起こります。その場合、「Voltage Level」の電圧を4.5V等に下げると、エラーが解消されます。
選択するファイルは自身で製作したプロジェクトファイルの中に入っています。
「プロジェクトファイル→dist→default→production→.hexファイル」
❹ 配線
配線図は次のようになります
・バイパスコンデンサ(パスコン)
基本的にPICを使用する時にはVDDピンとVSSピンの部分に並列にコンデンサを接続します。これをバイパスコンデンサといいます。役割としてはノイズ対策や、回路内の電力が一時的に少なくなった際に、電力をPICに供給する役割があります。
モーターといったノイズを多く出し、かつ消費電力も大きい部品をPICで制御する際にバイパスコンデンサが大活躍します。
今回制御するのはLEDなのでなくても動くと思いますが、PICを使う際は、パスコンをつけるのは一般的なので、今回も0.1μFのコンデンサを付けることにいたします。
・定格電流はいくつ?
今回使用するPIC12F1822の各IOピンから出力できる最大電流値は25mAのようです。(データシート参照)
使用するLEDの定格電圧が2.1Vであったため、そこから抵抗値を計算します。計算上では116Ωでしたが、持っていなかったため今回は200Ωの抵抗器を使用します。
電源電圧5V-LED定格電圧2.1V/PIC最大電流25mA=116Ω
❺ 動作確認
動作確認ができました。プログラムの秒数や使用するピンを変える、複数のピンを使うことでさらに知識が深まると思います。チャレンジしてみてください。
参考資料
・MICROCHIP社発行 12F1822 データシート
・MICROCHIP社ソフトMPLAB X IDE及びMPLAB X IDE