Envió de datos vía serial con un pic18f4550

Envió de datos vía serial con un pic18f4550

Escrito Por: admin Publicado En: Proyectos de microcontroladores PIC Fecha de Creación: 2017-10-27 visitas: 1205

 

Envió de datos vía serial con un pic18f4550  

Objetivos:

Leer el voltaje de un potenciometro que varia de 0 a 5 V con una entrada analogica del PIC

Enviar la lectura del voltaje via rs232 serial a un terminal virtual de proteus

 

Código PIC

#include <18F4550.h>
#device ADC=8  

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#fuses NOMCLR INTRC_IO          //

#use delay(internal=8000000)

#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)

int lecturadigital;   // int16 lecturadigital;

float voltaje;




void main()
{
   setup_adc_ports(AN0);
   
   setup_adc(ADC_CLOCK_DIV_8);       

   while(TRUE)
   {
     
    set_adc_channel(0); //Seleccionar Canal 0 para leer el pot
    
    
    lecturadigital=read_adc();  // es una funcion que el valor analogico  y convertirlo a digital con un resolucion de 10 bits
    
    
    ///         5 V ---1024
    
    ///    voltaje ----lecturadigital
    
    voltaje=(lecturadigital*5.0)/254.0;  // voltaje=(lecturadigital*5.0)/1023.0;
    
    
        printf("LD = ");
    
    printf("%u  \n\r",lecturadigital);  //  printf("%Lu  \n\r",lecturadigital);
    
    
    printf("EL voltaje = ");
    
    printf("%2.1f Volts \n\r",voltaje); 
    

    
    
      
      //TODO: User Code
   }

}

Diagrama Proteus