Você está na página 1de 2

Char configura_ADC(void); //configuración de funciones

char LEER_ADC(char ENTRADA);


char CALCULAR_VOLTAJE(char DATO);
char MUESTRA_EN_PUERTO_C(char ENTERO);
char MUESTRA_EN_PUERTO_D(char DECIMAL);
void configura_puertos(void); //configuración de puertos

#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 8000000

int main(void)
{

int ENTRADA=3;
float RESULTADO=1;
int VOLTAJE_LEIDO;
int ENTERO;
int DECIMAL;
int DATO;
configura_ADC();
while(1)
{

DATO=LEER_ADC( ENTRADA);
DDRB=0XFF;
PORTB=DATO;
RESULTADO=(float)((float)DATO*5.0)/256.0; // CALCULO DEL VOLTAJE DE ENTRADA
por regla de tres
RESULTADO =RESULTADO*10.0;
VOLTAJE_LEIDO=(int)RESULTADO; //cast es la multipliación del resultado con
el (int) para encasillar los datos

ENTERO=(char)(VOLTAJE_LEIDO/10);
DECIMAL=(char)(VOLTAJE_LEIDO %10);

MUESTRA_EN_PUERTO_C( ENTERO);
MUESTRA_EN_PUERTO_D( DECIMAL);

}
}

void configura_puertos(void)
{
DDRC=0XFF; // como salida
DDRD=0XFF; //como salida
DDRA=0X00; // cono entrada
PORTA=0x00; // alta impedancia
}

char configura_ADC(void)
{
ADMUX=0X63; // voltaje de referencia,corrimieto izq y entrada 3
ADCSRA=0XA4; // auto tigger,sin interrupción y divisor de frec de
reloj de 16
SFIOR=SFIOR&(0X1F); // modo libre
}

char LEER_ADC(char ENTRADA) // fUNCIÓN LEE_ADC


{
ADMUX=ADMUX&0XE0; //ACTIVAMOS EL ADMUX DEL PIN 0 AL 4
ADMUX=ADMUX|ENTRADA; // ACTIVAMOS ENTRADA DEL ADMUX
_delay_us(10); // ESPERAMOS UN TIEMPO PARA EVITAR RUIDO
ADCSRA=ADCSRA|0X40; // PRENDEMOS BIT DE INICIO DE LA CONVERSIÓN
while((ADCSRA&0X10==0)); // PRENDEMOS EL ADIF
return ADCH;

{
;
}

char MUESTRA_EN_PUERTO_C(char ENTERO)


{
char
siete[16]={0X7E,0X30,0X6D,0X79,0X33,0X5B,0X5F,0X70,0X7F,0X73,0X77,0X1F,0X4E,0X3D,0X4
F,0X47};
PORTC=siete[(int)ENTERO];
return (1);
}

char MUESTRA_EN_PUERTO_D(char DECIMAL)


{
char
siete[16]={0X7E,0X30,0X6D,0X79,0X33,0X5B,0X5F,0X70,0X7F,0X73,0X77,0X1F,0X4E,0X3D,0X4
F,0X47};
PORTD=siete[(int)DECIMAL];
return (1);
}

Você também pode gostar