閲覧総計:16015 (本日:1 昨日:0)
【目次】(項目をクリックすると、そこに飛べます)
「A/D変換」を利用した簡単なプログラムを作成し、16F886の「A/D変換」機能の利用法、
稼働を確認しました。
また、HI-TECH C PRO(Lite mode)のA/D変換関数を作成し、稼働を確認した。
A/D変換値(0〜1023)を用いて発光ダイオード(LED)の点滅間隔を0msec〜1023msec
にスムーズに変化させる。 08/08/15
★この情報は役に立ちましたか?
/** * 16F886 アナログ入力テスト 0-5V入力−LED点滅時間変更 * A/D値で発光ダイオード(LED)の点滅間隔を変更する * * A/D: RB4(AN11) (10KΩ半固定抵抗で分圧しアナログ値を生成) *(稼働確認の為、あえて後ろのアナログ入力端子を選択した) * LED: RC1 * * HI-TECH C PRO PIC10/12/16 MCU Family(Lite mode) v9.60 * MPLAB v8.14 */ #include <htc.h> __CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS & DEBUGEN); __CONFIG(BORV21); //__delay_us(), __delay_ms()の制御 #ifndef _XTAL_FREQ #define _XTAL_FREQ 8000000 //PICのクロックをHzで設定 #endif //関数のプロトタイプ宣言 extern void my_delay_ms(unsigned int x); extern unsigned int read_a2d(unsigned char channel); void main(void) { unsigned int temp; //使用変数の定義 //PICの初期化 TRISB = 0b00010000; //RB4(AN11)は1:入力、他は0:出力設定 TRISC = 0b00000000; //PORTCを全て0:出力設定 OSCCON = 0b01110000; //内蔵発振器 8MHz使用に設定 // A/D利用PORTの設定 // ANALOG=1, DIGITAL=0 // ANSEL = 0b00000000; //AN7-0ピンはデジタルで使用 ANSELH = 0b00001000; //AN11をアナログ、AN13-8ピンはデジタルで使用 PORTB = 0b00000000; //PORTBの中身をきれいにする PORTC = 0b00000000; //PORTCの中身をきれいにする //PICの初期化終わり //A2D変換開始 ADCON0 |= 0b01000001; //ADCS Fosc/8 & ADON ADCON1 = 0b00000000; // select left justify result. A/D port configuration 0 while (1) { //アナログデータの取得 10bit(0~1023) temp = read_a2d(11); //RB4(AN11)アナログ入力 //LED点滅間隔が0-1023msecで滑らかに変更出来る RC1 = 1; //LED(RC1) ON my_delay_ms(temp); RC1 = 0; //LED(RC1) Off my_delay_ms(temp); } } //A2D変換(10bit仕様) 08/08/15 //添付のsamplesフォルダ中のa2demo.cを参考に編集 unsigned int read_a2d(unsigned char channel) { channel &= 0b00001111; //truncate channel to 4 bits ADCON0 &= 0b11000011; //clear current channel select ADCON0 |= (channel << 2); //apply the new channel select GODONE = 1; // initiate conversion on the selected channel while (GODONE) continue; return ((ADRESH << 2) + (ADRESL >> 6)); //return 10 MSB of the result } void my_delay_ms(unsigned int x) { while (x) { __delay_ms(1); x--; } }
★この情報は役に立ちましたか?