PICマイコン(12F683)でLチカをやってみた
最近はPICマイコンの勉強に専念しています。勉強のために本を3冊も買いましたよ!大学生の私にとっては痛い出費です(⌒-⌒; ) でも全然後悔はしていません。将来に役に立つことだと確信していますからね( ´ ▽ ` )ノ
私はまだPICマイコンの初心者です。なので、まずはLチカからやってみようと思います!
目次
スポンサーリンク
使用するもの
箇条書きで使うものを書いておきます。
- PICマイコン(12F683)
- pickit3
- ライターのアダプタ
- ブレッドボード
- コンデンサ
- LED
- 単三電池
- バッテリーボックス
- ジャンパ線
(数量は省略しています)
LEDを3秒ごとに点滅させてみた
とりあえず、LEDを3秒ごとに点滅させてみました。
ソースプログラム
書き込むソースプログラムは下記のものです。
#include <xc.h>
#pragma config FOSC = INTOSCIO
#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 IESO = OFF
#pragma config FCMEN = OFF
#define _XTAL_FREQ 4000000
int main(void)
{
OSCCON=0b01101000;
ANSEL=0b00000000;
TRISIO=0b00000000;
while(1)
{
GPIO=0b00000000;
__delay_ms(3000);
GPIO=0b00000001;
__delay_ms(3000);
}
return(0);
}
簡単なため、ソースの説明は省略します。
回路
回路図をアップするのは面倒なので、そのまま画像をアップしちゃいます(^O^)/
@回路

バイパスコンデンサ(パスコン)はあったほうが良いらしいので挟みました。
いたってシンプルな回路です。
結果
@点滅

成功です(^O^)/
3秒ごとに点滅しました( ´ ▽ ` )ノ
LEDを5個使って流れるように点滅させてみた
次はLEDを5個使って流れるように点滅させてみました。
言葉だけだと分からないと思います。なので、画像を使って説明します。
@説明

LEDが横1列に並んでいます。これを右から左に順次点滅させて1番左に到達したら今度は左から右に順次点滅させていきます。
文字で説明すると下記みたいな感じです。◯が消えていて●が光っている状態です。
◯◯◯◯●
◯◯◯●◯
◯◯●◯◯
◯●◯◯◯
●◯◯◯◯
◯●◯◯◯
◯◯●◯◯
◯◯◯●◯
◯◯◯◯●
(以下ループ)
ソースプログラム
#include <xc.h>
#pragma config FOSC = INTOSCIO
#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 IESO = OFF
#pragma config FCMEN = OFF
#define _XTAL_FREQ 4000000
int main(void)
{
OSCCON=0b01101000;
ANSEL=0b00000000;
TRISIO=0b00000000;
while(1)
{
//LED0
GPIO = 0b11111110;
__delay_ms(120);
//LED1
GPIO = 0b11111101;
__delay_ms(80);
//LED2
GPIO = 0b11111011;
__delay_ms(80);
//LED4
GPIO = 0b11101111;
__delay_ms(80);
//LED5
GPIO = 0b11011111;
__delay_ms(80);
//LED4
GPIO = 0b11101111;
__delay_ms(80);
//LED2
GPIO = 0b11111011;
__delay_ms(80);
//LED1
GPIO = 0b11111101;
__delay_ms(120);
}
return(0);
}
両端のLEDだけ120ミリ秒光らせて、その他のLEDは80ミリ秒光らせます。色々と実験してみた結果、これが1番見た目が良いです。
回路
これも回路図をアップするのが面倒なので、同様に画像をアップします。
@回路

ジャンパ線が多くて複雑ですね。それも全部写ってないですし(^_^;)
回路はLEDがそれぞれのピンに接続されている感じです。
結果
@結果

成功です(^O^)/
右から左、左から右にLEDが点滅します( ´ ▽ ` )ノ
今日はこんなところです。
ノシ
PS
C言語ではなくアセンブリ言語で書いたソースプログラムも近いうちに貼りたいと思います。
スポンサーリンク
関連記事