Upload
javier-piscoya-sanchez
View
223
Download
0
Embed Size (px)
DESCRIPTION
voltmIMETRO
Citation preview
#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 memoriafloat valor11; //coonstantesint 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 0setup_adc(ADC_CLOCK_INTERNAL); // seleccionamos el reloj para el ADCsetup_adc_ports(AN0); // puerto que seran AN0
for(;;){set_adc_channel(0); // que canal se utilizara, en este caso el canal 0delay_us(10); // retardo necesario antes de hacer la lecturavalor= read_adc(); //leemos el dato del canal valor1=valor*30.0/255.0; //15 una regla de 3 simple para trabajar con 30Vdigito1=valor1/10; //15/10=1 obtenemos el primer digito digito2=valor1 - digito1*10; //15-1*10=5 obtenemos el segundo digitovalor11=valor*30.0/255.0; // (15.30)*10=153.0 digito3=valor11*10 - valor1*10; //153.0 - 15*10=3.0digito4=valor11*100 - valor1*100 - digito3*10; // multiplexaccion del puerto BPORTB=0b00010000 + digito1;delay_ms(5);PORTB=0b00100000 + digito2;delay_ms(5);PORTB=0b01000000 + digito3;delay_ms(5);PORTB=0b10000000 + digito4;delay_ms(5);
}}