Envió de datos vía serial con un pic18f4550

Envió de datos vía serial con un pic18f4550 ( comunicación serial )

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

Program in PIC C:

#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 nr",lecturadigital); // printf("%Lu nr",lecturadigital);

printf("EL voltaje = ");

printf("%2.1f Volts nr",voltaje);

//TODO: User Code
}

}

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *