ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

PROGRAMA DE ADQUISICIÓN DE DATOS (TEMPERATURA, LM35) MEDIANDE EL MÓDULO ADC)


Enviado por   •  19 de Noviembre de 2015  •  Práctica o problema  •  728 Palabras (3 Páginas)  •  278 Visitas

Página 1 de 3

/*PROGRAMA DE ADQUISICIÓN DE DATOS (TEMPERATURA, LM35) MEDIANDE EL MÓDULO

* ADC DEL PIC18F4550 PARA POESTRIORMENTE MANDAR LOS DATOS OBTENIDOS A LA

* USART Y SER LEÍDOS EN LA PC CON LABVIEW*/

#include<p18F4550.h> //PIC UTILIZADO

#include<delays.h> //INCLUYE LIBRERÍA DE RETARDOS

#include<usart.h> //INCLUYE LIBRERÍA DE COMUNICACIÓN USART

#include<adc.h> //INCLUYE LIBRERÍA DE MÓDULO ADC

#include<math.h> //INCLUTE LIBRERÍA PARA OPERACIONES MATEMÁTICAS

#pragma config FOSC=XT_XT //TIPO DE OSCILADOR (4MHz)

void ISR (void);

#pragma code interruptHigh=0x08

void interruptHigh (void){

_asm GOTO ISR _endasm

}

#pragma code

#pragma interrupt ISR

int temp;

char datoRX;

void ISR (void){

if(PIR1bits.RCIF){

datoRX=getcUSART();

PIR1bits.RCIF=0;

}

}

void configuraADC(void){

// configuración de convertidor A/D

OpenADC( ADC_FOSC_4 & ADC_RIGHT_JUST & ADC_2_TAD ,

ADC_INT_ON & ADC_VREFPLUS_VDD & ADC_VREFMINUS_VSS, 11 );

}

int leer(unsigned char canal){

unsigned int result; // VARIABLE LOCAL

SetChanADC(canal); // SELECCIÓN DE CANAL

ConvertADC(); // Inicia conversión

while( BusyADC() ); // Espera a que se compete

result = ReadADC(); // GUARDA LA LECTURA EN VARIBLE LOCAL

return result;

}

void main( void ){

INTCONbits.GIE=1; //Interrupciones globales Habilitadas

PIE1bits.RCIE=1; //Habilita interrupción por recepción de USART

IPR1bits.RCIP=1; //Alta prioridad en interrupcion del USART

RCONbits.IPEN=1;

ADCON0bits.ADON=1; //Habilita entradas Analógicas

TRISA=0xFF; //Puerto A como entradas

//Configuración de USART

OpenUSART( USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE &

USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH, 25 );

while(1){

if(datoRX=='A'){

leer(ADC_CH0); //lee canal 1 del ADC

temp=leer(ADC_CH0); //temp = valor del ADC

temp=temp/4; //Convertir el valor leido en su reciproco de 8 bits

while(BusyUSART()); //espera a que el usart se desocupe

putcUSART(temp); //manda el valor de 8 bits leido por el usart

Delay10TCYx( 250 ); //espera

}

if(datoRX=='B'){

leer(ADC_CH1);

temp=leer(ADC_CH1);

...

Descargar como (para miembros actualizados) txt (3 Kb) pdf (46 Kb) docx (12 Kb)
Leer 2 páginas más »
Disponible sólo en Clubensayos.com