วันอาทิตย์ที่ 3 ตุลาคม พ.ศ. 2553

Lab3: การใช้งาน Module Analog to Digital


#include<16F877A.h>
#device ADC=10           //ตั้งการใช้งาน module ADC 10 bits
#define  CLOCK_SP    20000000 // ความเร็วสัญญาณนาฬิกา
#fuses HS                     //   โหมดการทำงานแบบ High Speed
#fuses NOLVP,NOWDT           // No Low Voltage Program, No Watchdog timer
#fuses NOPROTECT              // Code no protection
#use delay (clock=CLOCK_SP)   // ใช้งานฟังก์ชัน delay_ms() & delay_us()
#use rs232(baud=9600,xmit= PIN_C6,rcv= PIN_C7 ) // ใช้งาน module RS232

void main(void){                      
int16 A;                                    //ประกาศตัวแปร A เป็น integer 16 bits
float Volts;                                //ประกาศตัวแปร Volts เป็น floating point number

SETUP_ADC(ADC_CLOCK_INTERNAL); //กำหนดสัญญาณนาฬิกาในการแปลงA/D
SETUP_ADC_PORTS(ALL_ANALOG);                   //กำหนด port การใช้งาน A/D

while(true){     

 set_adc_channel(1);                             //กำหนดช่องการแปลง A/D
 A = read_adc();                                  //เก็บค่าการแปลงไว้ตัวแปร A (0-1023)
 Volts = ((float)A * 5)/1023;                 //แปลงค่าจำนวนบิต เป็น โวลต์

printf("%lu  %.3f\r\n",A,Volts);  //แสดงค่าผ่าน RS232 (จำนวนบิต  โวลต์)

}
}