閲覧総計:27066  (本日:2  昨日:2)

A/D値でLED点滅間隔変更

「A/D変換」を利用した簡単なプログラムを作成し、16F88の「A/D変換」機能の利用法、
稼働を確認しました。

A/D変換値(0〜1023)を用いて発光ダイオード(LED)の点滅間隔を0msec〜1023msec
にスムーズに変化させる。 07/02/03

P1010274.JPG18F88_PIN.JPG
/**
* 16F88 アナログ入力テスト 抵抗ーLED点滅時間
* A/D値で発光ダイオード(LED)の点滅間隔を変更する
*
* PIC16F88
*
* A/D: RA3 (10KΩ半固定抵抗で分圧しアナログ値を生成)
* LED: RA0
* Clock: 8.0MHz 内蔵発振器使用
* Device Flags:
* _CP_OFF  _CCP1_RB3  _DEBUG_OFF  _WRT_ENABLE_OFF
* _CPD_OFF  _LVP_OFF  _BODEN_OFF  _MCLR_OFF  _PWRTE_ON
* _WDT_OFF  _INTRC_IO  _IESO_ON__CFG2  _FCMEN_ON__CFG2
*
* MikroC v6.2.1
*/
void main() {
    //使用変数の定義
    unsigned int temp;

    //マイコンの初期化
    //内臓クロック8MHzに設定
    OSCCON.IRCF2=1;
    OSCCON.IRCF1=1;
    OSCCON.IRCF0=1;

    //A/D変換clock設定 0.125us*16倍=2.0us
    ADCON1.ADCS2=1;
    ADCON0.ADCS1=0;
    ADCON0.ADCS0=1;

    // A/D利用PORTの設定 // ANALOG=1, DIGITAL=0 //
    ANSEL = 0b00001000; //RA3のみアナログ使用

    PORTA = 0b00000000; //PORTAの中身をきれいにする
    TRISA = 0b00001000; //RA3のみ1:入力に設定、他は0:出力
    //マイコンの初期化終わり

    do {
        //アナログデータの取得 10bit(0~1023)
        temp = ADC_Read(3); //RA3(AN3)アナログ入力

        //LED点滅間隔が0-1023msecで滑らかに変更出来る
        PORTA.F0 = 1;
        VDelay_ms(temp);
        PORTA.F0 = 0;
        VDelay_ms(temp);
    } while(1);
}

★この情報は役に立ちましたか?

選択肢 投票
はい 47  
普通 12  
いいえ 16  

添付ファイル: file18F88_PIN.JPG 6286件 [詳細] fileP1010274.JPG 5848件 [詳細]