Вы находитесь на странице: 1из 2

Voltmetro Digital con PIC

Comenzando con una fcil aplicacin de los microcontroladores, presento este


trabajo, que es un voltimetro digital, creo que ya todos sabemos que es un
voltimetro, un instrumento de medida de voltaje, este voltimetro es DC, el
lenguaje que utilizo es el C, compilado con CCS y simulado en ISIS de
PROTEUS. en las siguiente lineas, explicaremos el cdigo del programa,
recuerden que deps de un // todo lo que sigue es un comentario y el
compilador lo ignora.

Cdigo:

#include <16F877A.h> // seleccionas el PIC a utilizar


#fuses XT

//definimos un crystal externo

#device adc=8 // bits para el ADC 0-255


#use delay (clock=4M) // frecuencia del oscilador
#byte TRISB=0x86 // definimos los TRIB en la memoria
#byte PORTB=0x06 // definimos el PORTB en la memoria
float valor11;

//coonstantes

int valor,valor1,digito1,digito2,digito3,digito4;
void main() {
TRISB=0x00; // toda el puerto B es salida
PORTB=0x00; // todo el puerto B estra en estado logico 0
setup_adc(ADC_CLOCK_INTERNAL); // seleccionamos el reloj para el ADC
setup_adc_ports(AN0); // puerto que seran AN0

for(;;){
set_adc_channel(0); // que canal se utilizara, en este caso el canal 0
delay_us(10); // retardo necesario antes de hacer la lectura

valor= read_adc(); //leemos el dato del canal


valor1=valor*30.0/255.0; //15 una regla de 3 simple para trabajar con 30V
digito1=valor1/10;

//15/10=1

obtenemos el primer digito

digito2=valor1 - digito1*10; //15-1*10=5 obtenemos el segundo digito


valor11=valor*30.0/255.0; // (15.30)*10=153.0
digito3=valor11*10 - valor1*10; //153.0 - 15*10=3.0
digito4=valor11*100 - valor1*100 - digito3*10;
// multiplexaccion del puerto B
PORTB=0b00010000 + digito1;
delay_ms(5);
PORTB=0b00100000 + digito2;
delay_ms(5);
PORTB=0b01000000 + digito3;
delay_ms(5);
PORTB=0b10000000 + digito4;
delay_ms(5);

}
}
Bsicamente, un divisor de tensin resistivo no es ms que un par de
resistencias puestas en serie, de forma que la primera provoca una cada de
tensin y por lo tanto, la tensin de salida se ver reducida.
1. Para declarar una funcin que no tiene valor de retorno. Por ejemplo:
void verMensaje (const char * Mensaje)
{
cout << Mensaje << endl;
}
El ciclo For es una de las instrucciones mas sencillas de aprender, y consiste en utilizar mayormente rangos en los cuales se define el numero de iteraciones que se pueden
hacer en este ciclo.

Вам также может понравиться