Connect ADC with PIC16F877

Summary of Connect ADC with PIC16F877


This article details an ADC library for PIC microcontrollers, offering routines to initialize the module and read analog values. It describes three key functions: `ADC_Init` for setup with RC clock, `ADC_Get_Sample` for acquiring channel data, and `ADC_Read`, which combines initialization and reading. The text emphasizes requirements like using internal voltage references and configuring TRISx bits as inputs before use.

Parts used in the ADC Library Project:

  • PIC MCU modules with built-in ADC
  • RC clock source
  • Analog signal input channels
  • Internal voltage reference source
  • TRISx configuration bits

ADC (Analog to Digital Converter) module is available with a number of PIC MCU modules. ADC is an electronic circuit that converts continuous signals to discrete digital numbers. ADC Library provides you a comfortable work with the module.

Library Routines

  • ADC_Init
  • ADC_Get_Sample
  • ADC_ReadConnect ADC with PIC16F877

ADC_Init

Prototype void ADC_Init();
Returns Nothing.
Description This routine initializes PIC’s internal ADC module to work with RC clock. Clock determines the time period necessary for performing AD conversion (min 12TAD).
Requires
  • MCU with built-in ADC module.
Example
ADC_Init();  // Initialize ADC module with default settings

ADC_Get_Sample

Prototype unsigned ADC_Get_Sample(unsigned short channel);
Returns 10 or 12-bit unsigned value read from the specified channel (MCU dependent).
Description The function aquires analog value from the specified channel.
Parameter channel represents the channel from which the analog value is to be acquired. Refer to the appropriate datasheet for channel-to-pin mapping.
  Note : This function doesn’t work with the external voltage reference source, only with the internal voltage reference.
Requires
  • The MCU with built-in ADC module.
  • Prior to using this routine, ADC module needs to be initialized.
  • Before using the function, be sure to configure the appropriate TRISx bits to designate pins as inputs.
Example
unsigned adc_value;
...
adc_value = ADC_Get_Sample(2);    // read analog value from ADC module channel 2

Connect ADC with PIC16F877 schematichADC_Read

Prototype unsigned ADC_Read(unsigned short channel);
Returns 10 or 12-bit unsigned value read from the specified channel (MCU dependent).
Description Initializes PIC’s internal ADC module to work with RC clock. Clock determines the time period necessary for performing AD conversion (min 12TAD).
Parameter channel represents the channel from which the analog value is to be acquired. Refer to the appropriate datasheet for channel-to-pin mapping.
  Note : This function doesn’t work with the external voltage reference source, only with the internal voltage reference.
Requires
  • The MCU with built-in ADC module.
  • Before using the function, be sure to configure the appropriate TRISx bits to designate pins as inputs.
Example
unsigned tmp;
...
tmp = ADC_Read(2);  // Read analog value from channel 2

 

 

For more detail: Connect ADC with PIC16F877

Quick Solutions to Questions related to ADC Library:

  • How does ADC_Init work?
    This routine initializes the PIC's internal ADC module to operate with an RC clock.
  • What is the minimum time period for AD conversion?
    The clock determines the time period necessary for performing AD conversion, which must be at least 12TAD.
  • Can I use an external voltage reference source?
    No, the functions do not work with the external voltage reference source; they only support the internal voltage reference.
  • What must be done before using ADC_Get_Sample?
    The ADC module needs to be initialized, and appropriate TRISx bits must be configured to designate pins as inputs.
  • Does ADC_Read initialize the module?
    Yes, the ADC_Read function description states it initializes the PIC's internal ADC module to work with RC clock.
  • What value type does ADC_Get_Sample return?
    It returns a 10 or 12-bit unsigned value depending on the specific MCU.
  • How do I specify the channel for reading?
    You pass the channel number as a parameter to the function, referencing the datasheet for channel-to-pin mapping.
  • Is prior initialization required for ADC_Read?
    The requires section for ADC_Read does not explicitly list prior initialization as a strict requirement unlike ADC_Get_Sample, though it performs initialization itself.

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter