Está en la página 1de 3

//*********

#include
#include
#include
#include
#include

ADC

*********

<p18f4550.h>
<delays.h>
<adc.h>
<stdlib.h>
<xlcd.h>

#pragma config
// CONFIG1L
#pragma config
// CONFIG1H
#pragma config
// CONFIG2L
#pragma config
// CONFIG2H
#pragma config
// CONFIG3H
#pragma config
// CONFIG4L
#pragma config
// CONFIG5L
#pragma config
// CONFIG5H
#pragma config
// CONFIG6L
#pragma config
// CONFIG6H
#pragma config
// CONFIG7L
#pragma config
// CONFIG7H

PLLDIV = 1, CPUDIV = OSC1_PLL2, USBDIV = 1


FOSC = INTOSCIO_EC, FCMEN = OFF, IESO = OFF
PWRT = OFF, BOR = OFF, BORV = 3, VREGEN = OFF
WDT = OFF, WDTPS = 32768
MCLRE = OFF, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = OFF
STVREN = OFF, LVP = OFF, ICPRT = OFF, XINST = OFF, DEBUG = OFF
CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF
CPB = OFF, CPD = OFF
WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF
WRTB = OFF, WRTC = OFF, WRTD = OFF
EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF, EBTR3 = OFF
EBTRB = OFF

void DelayFor18TCY(void){
Delay10TCYx(2);
}
void DelayPORXLCD(void){
Delay1KTCYx(15);
}
void DelayXLCD(void){124
Delay1KTCYx(5);
}
void comandXLCD(unsigned char a){
BusyXLCD();
WriteCmdXLCD(a);
}
void gotoxyXLCD(unsigned char x, unsigned char y){
unsigned char direccion;
if(y != 1)
direccion = 0x40;
else
direccion=0;
direccion += x-1;

comandXLCD(0x80 | direccion);
}
int resultado, base=10, p;

void main(void)
{
char String[4];
PORTA
o los latches
PORTB
o los latches
PORTD
o los latches

= 0;
de datos de salida
= 0;
de datos de salida
= 0;
de datos de salida

ADCON1 = 0x0F;
CMCON = 0x07;

// inicializa el puerto A poniendo a cer


// inicializa el puerto B poniendo a cer
// inicializa el puerto D poniendo a cer

// configura A/D para entradas digitales


// Configura comparadores para entradas digitale

s;
// ver pags 269 y 270 datasheet
del PIC18F4550
TRISA = 0xFF;
TRISB = 0;
TRISD = 0;
OSCCON = 0b01101100;

// Configura el Puerto A como entradas


// Configura el Puerto B como salidas
// Configura el Puerto D como salidas
// Oscilador interno a 4 MHz

OpenXLCD(FOUR_BIT & LINES_5X7);


comandXLCD(SHIFT_DISP_LEFT);
OpenADC(ADC_FOSC_8 &
// Fuente de reloj del A/D puesto a 8Tos
c (Fosc/8)
ADC_RIGHT_JUST&
// Escribe el resultado digital
(10 bits) desde la derecha en ADRESH:ADRESL (16bits).
ADC_2_TAD,
// Tiempo de Adquisicin del A/D:
2TAD (para conversin de 10 bits por lo menos 12TAD)
ADC_CH0 &
// Escoge el canal de en
trada (0), AN0
ADC_INT_OFF &
// Interrupcion ADC off
ADC_VREFPLUS_VDD&
// Escoge el fuente de alimentac
in VDD como voltaje de referencia, V+
ADC_VREFMINUS_VSS,
// Escoge el fuente de alimentac
in VSS como voltaje de referencia, V14
// Este valor es
usado para fijar las entradas/salidas analgicas y digitales.
// Asegurarse de
que AN0 es escogida como entrada analgica.
);
comandXLCD(DON);
while(1)
{
//
SetChanADC (ADC_CH1);
// Escoge el canal para el ADC.
Se puede escoger cualquier canal (0-12) antes de empezar la conversin.
// Esto
significa que se peuede cambiar el canal de conversin A/D en cualquier tiempo.
Delay10TCYx(5);
// Retardo de 50TCY. Por

que dentro de este retardo, el capacitor de retencin debe ser desconectado de la


entrada analgica.
ConvertADC ();
// Inicia una conversin A
/D.
while( BusyADC());
// Espera para completar
la conversin, cuando BusyADC es 0, la conversin ha terminado.
resultado = ReadADC();
// Lee el resultado de la conver
sin.
resultado = resultado * 4.887585532746823;
itoa(resultado, String);
comandXLCD(0x01);
putrsXLCD("Voltaje: ");
gotoxyXLCD(10,1);
putsXLCD(String);
gotoxyXLCD(15,1);
putrsXLCD("mV");
Delay10KTCYx(50);
};
//

}
CloseADC();
}

También podría gustarte