[go: up one dir, main page]

0% found this document useful (0 votes)
98 views4 pages

Assignment Number 2 MPI

This document provides instructions for an assignment to interface an analog sensor to a PIC16F877 microcontroller and convert the analog signal to a digital signal. It describes how to configure the analog-to-digital converter (ADC) module in the microcontroller, perform an ADC conversion by reading the ADC result registers, and display the digital output on a port that varies with the analog input. The deliverables are: 1) an interfacing circuit diagram, 2) code to perform the ADC and output the digital value, 3) comparison figures of analog and digital signals, and 4) calculation of analog-to-digital conversion.

Uploaded by

Sidra Akram
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
98 views4 pages

Assignment Number 2 MPI

This document provides instructions for an assignment to interface an analog sensor to a PIC16F877 microcontroller and convert the analog signal to a digital signal. It describes how to configure the analog-to-digital converter (ADC) module in the microcontroller, perform an ADC conversion by reading the ADC result registers, and display the digital output on a port that varies with the analog input. The deliverables are: 1) an interfacing circuit diagram, 2) code to perform the ADC and output the digital value, 3) comparison figures of analog and digital signals, and 4) calculation of analog-to-digital conversion.

Uploaded by

Sidra Akram
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

Microprocessor & Interfacing

Fall 2019
Target CLO Evaluation: CLO2-C4

Assignment No. 2
Class: BCE- 5 Submission Date: 1-12-19 Total Marks: 10 Marks

Q#1

Design a circuit of PIC16f877 with following conditions and inquire:


a) How to Interface circuit with one Analog sensor as input.

b) How to convert analog signal into digital signal.


In PIC16F877, conversion of analog signal results in 10-bit digital number. A/D module
has low and high voltage reference input. It is software selectable for VSS, VDD, RA2,
RA3. The A/D converter device can operate in Sleep mode. During Sleep, clock of the
converter must be derived from the RC oscillator.

The A/D in PIC16F877A has four registers. These registers are:

• A/D Control Register 0 (ADCON0)

• A/D Result High Register (ADRESH)

• A/D Result Low Register (ADRESL)

• A/D Control Register 1 (ADCON1)


To do an A/D Conversion, follow these steps:

1. Configure A/D module

• Configure analog pins and digital I/O (ADCON1)


• Select A/D input channel (ADCON0)

• Select A/D conversion clock (ADCON0)

• Turn ON A/D module (ADCON0)

2. Configure A/D interrupt (if desired)

• Clear ADIF

• Set ADIE

• Set PEIE

• Set GIE

3. Wait for acquisition time.

4. Start conversion

• Set GO/DONE bit (ADCON0)

5. Wait for A/D conversion to complete by either:

• Polling GO/DONE bit to be cleared or,

• Wait for A/D interrupt.

6. Read A/D Result register, clear ADIF.

7. For next conversion, go to step 1 or step 2 as required. A/D conversion time per bit is
defined as TAD.
Program:
#include <pic.h>

#include"delay.h"

int adcval; // defining adc integer

void ADC_Init()

TRISA = 0XEF;//configuring adc ports as input


TRISE = 0X07;

ADCON1 = 0X80;// configuring all ports as analog ports

// fucntion for reading the adc value

int read_adc(char channel)

int val;

ADCON1 = 0x80; //port config

ADCON0 = 0x81 | channel << 3;// channel selection SET THE CHANNEL
NUMBER

DelayUs(50);

ADGO = 1;//turn on the adc

while(ADGO) // checking the adc conversion

continue;

val = ADRESH;

val = val<<8 | ADRESL;// combining the both adresh and adresl values to a
single variable

return (val);

void main()

TRISD=0X00;

PORTD=0X00;

ADC_Init();// adcintialising
while(1)// loop for ever

adcval=read_adc(0);

if(adcval> 500) //checking the adc value

PORTD=0XFF; //setting the port value as high if adc value greater than
500

else // reseting the port value

PORTD=0X00;

}
}
}

c) Display the digital data on output varying with Analog input variations.

Deliverables:
I) Interfacing Circuit Diagram
II) Code
III) Analog and Digital signals comparison figures on each input.
IV) Calculation of Analog to Digital Conversion

You might also like