this is a microprocessing question write a c program for the

this is a microprocessing question

write a c program for the PIC 16F 18857, that takes an ADC input from a voltages divider, and turns on a Led based on the input. input is atached to a light sensor, if light is present LED in off, if dark LED is on. this program uses only two ports RA0 for input and R05 for output. Your PIC based light sensor device must: 1. Convert the light intensity information to a variable voltage (0-3V). 2. Obtain an analog input signal (sensory data) via an analog pin of the PIC (e.g. AN0) 3. Use the internal ADC of PIC to convert analog signals to digital values 4. Turn on a LED if the sensor is encapsulated in a dark box or put in a dark environment. 5. Turn off the LED if the sensor is placed in a well-lighted environment.

Solution

program for the PIC 16F 18857, that takes an ADC input from a voltages divider, and turns on a Led based on the input. input is atached to a light sensor, if light is present LED in off, if dark LED is on.


#include <htc.h>

#include \"lcd.h\"

//Chip Settings
__CONFIG(1,0x0200);
__CONFIG(2,0X1E1F);
__CONFIG(3,0X8100);
__CONFIG(4,0X00C1);
__CONFIG(5,0XC00F);


//Simple Delay Routine
void Wait(unsigned int delay)
{
   for(;delay;delay--)
      __delay_us(100);
}

//Function to Initialise the ADC Module
void ADCInit()
{
   //We use default value for +/- Vref

   //VCFG0=0,VCFG1=0
   //That means +Vref = Vdd (5v) and -Vref=GEN

   //Port Configuration
   //We also use default value here too
   //All ANx channels are Analog

   /*
      ADCON2

      *ADC Result Right Justified.
      *Acquisition Time = 2TAD
      *Conversion Clock = 32 Tosc
   */

   ADCON2=0b10001010;
}

//Function to Read given ADC channel (0-13)
unsigned int ADCRead(unsigned char ch)
{
   if(ch>13) return 0; //Invalid Channel

   ADCON0=0x00;

   ADCON0=(ch<<2);   //Select ADC Channel

   ADON=1; //switch on the adc module

   GODONE=1;//Start conversion

   while(GODONE); //wait for the conversion to finish

   ADON=0; //switch off adc

   return ADRES;
}
void main()
{
   //Let the LCD Module start up
   Wait(100);

   //Initialize the LCD Module
   LCDInit(LS_BLINK);

   //Initialize the ADC Module

   ADCInit();

   //Clear the Module
   LCDClear();

   //Write a string at current cursor pos
   LCDWriteString(\"ADC Test\");

   while(1)
   {
      unsigned int val; //ADC Value

      val=ADCRead(0);   //Read Channel 0
      LCDWriteIntXY(0,1,val,4);

      Wait(1000);
   }


}

this is a microprocessing question write a c program for the PIC 16F 18857, that takes an ADC input from a voltages divider, and turns on a Led based on the inp
this is a microprocessing question write a c program for the PIC 16F 18857, that takes an ADC input from a voltages divider, and turns on a Led based on the inp

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site