Voltimetro con pic y lcd

Este proyesto lo encontre por ahi y me parecio muy interesante, me dije?? que codigo emplearan y zaz muy ingenioso el programa del pic.

añadi en la simulacion de proteus un voltimetroDC virtual, para que vean que el pic mide lo mismo que un voltimetro.

El programa en C para entrenar el pic es este:

nota: Esto mide hasta 5 voltios. modificar para que mida mas. ojo

#include <16F876.h>
#device adc=10

#FUSES XT,NOWDT
#FUSES
#use delay(clock=4000000)
#include

void main() {
   int16 q;
   float p;

   setup_adc_ports(AN0);                                   //Canal 0 analógico
   setup_adc(ADC_CLOCK_INTERNAL);    //Fuente de reloj RC

   lcd_init();
  
   for (;;) {
      set_adc_channel(0);           //Habilitación canal0
      delay_us(20);
      q = read_adc();                  //Lectura canal0
      p = 5.0 * q / 1024.0;           //Conversión a tensión

      printf(lcd_putc, "\fADC = %4ld", q);
      printf(lcd_putc, "\nVoltage = %01.2fV", p);

      delay_ms(100);
      }
}