Line 46: Line 46:
  
 
==User guide==
 
==User guide==
#include <avr\io.h>
+
Program to demonstrate multi(4) channel ADC, 10bit(0-1023) adc value is displayed on lcd
  
#include "lcd.h"  //User defined LCD library which contains the lcd routines
+
#include <avr\io.h>
#include "adc.h"  //User defined library which contains the adc routines
+
#include "lcd.h"  //User defined LCD library which contains the lcd routines
 +
#include "adc.h"  //User defined library which contains the adc routines
  
  
 
/* start the main program */
 
/* start the main program */
void main()  
+
void main()  
{
+
{
  uint16_t adc_result0,adc_result1,adc_result2,adc_result3;
+
    uint16_t adc_result0,adc_result1,adc_result2,adc_result3;
  
  /* Initialize the lcd before displaying any thing on the lcd */
+
    /* Initialize the lcd before displaying any thing on the lcd */
 
     LCD_Init(8,LCD_16x2);
 
     LCD_Init(8,LCD_16x2);
  
  /* Initialize the adc before starting the conversion */
+
    /* Initialize the adc before starting the conversion */
 
     ADC_Init();
 
     ADC_Init();
  
  
  
  /* Display the adc channel zero-Three values continuously */  
+
    /* Display the adc channel zero-Three values continuously */  
  while(1)
+
    while(1)
 
     {
 
     {
 
  /*Get the adc values of the first four channels(0-3) */
 
  /*Get the adc values of the first four channels(0-3) */
adc_result0= ADC_GetAdcValue(0);
+
    adc_result0= ADC_GetAdcValue(0);
adc_result1= ADC_GetAdcValue(1);
+
    adc_result1= ADC_GetAdcValue(1);
adc_result2= ADC_GetAdcValue(2);
+
    adc_result2= ADC_GetAdcValue(2);
adc_result3= ADC_GetAdcValue(3);
+
    adc_result3= ADC_GetAdcValue(3);
  
      /*Display the adc values on LCD*/
+
        /*Display the adc values on LCD*/
        LCD_GoToLine(LCD_LineZero);
+
        LCD_GoToLine(LCD_LineZero);
LCD_Printf("ch0:%d ch1:%d ch2:%d ch3:%d",adc_result0,adc_result1,adc_result2,adc_result3);         
+
LCD_Printf("ch0:%d ch1:%d ch2:%d ch3:%d",adc_result0,adc_result1,adc_result2,adc_result3);         
 
     
 
     
 
       }
 
       }
  }
+
  }

Revision as of 10:50, 14 December 2014

ADC

This library provides the functions for initializing the adc and to get the raw adc values. In case of AVR/PIC/ARM or other high end controllers the inbuilt adc is used. In case of 8051/8052 as it doesn't have an inbuilt adc, ADC0809(8-bit) adc is used.


ADC_Init

{{#Widget:LibTable}}
Defination void ADC_Init()
Input Arguments none
Return Value none
Description This function initializes the ADC module.
Usage void main()

{

ADC_Init();

}

ADC_GetAdcValue

{{#Widget:LibTable}}
Defination uint16_t ADC_GetAdcValue(uint8_t channel)
Input Arguments uint8_t(channel number).
Return Value uint16_t(10 bit ADC result)
Description This function does the ADC conversion for the Selected Channel and returns the converted 10bit result.

The adc value per bit depends on the resolution of the ADC. For AVR/PIC(10-bit adc) the adc value per lsb will be 5/1023=0048v

Usage uint16_t adc_result;

adc_result = ADC_GetAdcValue(0); //Adc value for channel 0

User guide

Program to demonstrate multi(4) channel ADC, 10bit(0-1023) adc value is displayed on lcd

#include <avr\io.h> 
#include "lcd.h"   //User defined LCD library which contains the lcd routines
#include "adc.h"   //User defined library which contains the adc routines


/* start the main program */

void main() 
{
   uint16_t adc_result0,adc_result1,adc_result2,adc_result3;
   /* Initialize the lcd before displaying any thing on the lcd */
   LCD_Init(8,LCD_16x2);
   /* Initialize the adc before starting the conversion */
   ADC_Init();


   /* Display the adc channel zero-Three values continuously */ 
   while(1)
   {

/*Get the adc values of the first four channels(0-3) */ adc_result0= ADC_GetAdcValue(0); adc_result1= ADC_GetAdcValue(1); adc_result2= ADC_GetAdcValue(2); adc_result3= ADC_GetAdcValue(3);

        /*Display the adc values on LCD*/
        LCD_GoToLine(LCD_LineZero);

LCD_Printf("ch0:%d ch1:%d ch2:%d ch3:%d",adc_result0,adc_result1,adc_result2,adc_result3);

     }
  }