Está en la página 1de 3

UNIVERSIDAD NACIONAL DEL CALLAO

FACULTAD DE INGENIERÍA ELECTRICA Y ELECTRONICA


ESCUELA PROFESIONAL DE INGENIERÍA ELECTRONICA
EXAMEN FINAL -CICLO 2020A

PREGUNTA 3

a) Realizar el diagrama de bloques o circuito para enviar los datos del medidor realizado (
P2) vía serial a una computadora , para registrar los datos
b) Realizar los cambios en el programa de la P2 para comunicar la PC con el medidor
realizado
#include "xc.h"
#include <stdio.h>
#include "config.h"
#include "reloj.h"
#include "xlcd.h"
#include <libpic30.h>
#include <p33FJ12MC202.h>

void adc1 (void);

int main (void)


{
ConfigurarUART();// Se configura el UART
//Creamos la variables
int adc_val=0;// Se guardaran datos de ADC1BUF0
char adc_vector[6]="";//Guarda en forma de caracter adc_float
float adc_float=0;//Guarda el voltaje
char trama[28];// Se crea trama para el UART

TRISB=0X0000;
adc1();
XLCDInit();
WriteCmdXLCD(CLEAR_XLCD);
XLCDgotoXY(0,1);
putsXLCD("V(v):");

while(1)
{

AD1CON1bits.SAMP = 1;
__delay_ms(30);
AD1CON1bits.SAMP = 0;
while(!AD1CON1bits.DONE);
AD1CON1bits.DONE=0;
adc_val=ADC1BUF0;

//
adc_float=(float)adc_val*(220)/4095;
sprintf(adc_vector,"%.2f",adc_float);
XLCDgotoXY(0,6);
putsXLCD(adc_vector);

XLCDgotoXY(1, 7);
putrsXLCD(trama);
sprintf(trama, "%.2f", (double)adc_float);
Serial_SendString(trama);
__delay_ms(100);

}
}

void adc1 (void)


{
AD1PCFGL = 0xFFFF;
AD1CON1bits.AD12B = 1;
AD1PCFGLbits.PCFG0 = 0;
TRISAbits.TRISA0 = 1;
AD1CON2bits.VCFG = 0;
AD1CON3bits.ADCS = 1;
AD1CON2bits.CHPS = 1;
AD1CON1bits.SSRC = 0;
AD1CON1bits.ASAM = 0;
AD1CON1bits.FORM = 0;
AD1CON2bits.ALTS = 1;
AD1CHS0bits.CH0SA = 0;
AD1CHS0bits.CH0NA = 0;
AD1CON1bits.ADON = 1;
}
void ConfigurarUART() {
RPOR7bits.RP15R=3;// USAMOS LOS PPS COLOCAMOS TX al pin RP15
U1MODEbits.STSEL = 0; // 1 Stop bit
U1MODEbits.PDSEL = 0; // No Parity, 8 data bits
U1MODEbits.ABAUD = 0; // Auto-Baud Disabled
U1BRG = BRGVAL; // BAUD Rate Setting for 9600
U1STAbits.URXISEL = 0; // Interrupt after one RX character is received
U1MODEbits.UARTEN = 1; // Enable UART
U1STAbits.UTXEN = 1; // Enable UART TX
}

void Serial_SendString(char *str) {


char * p;
p = str;
while (*p)
Serial_PutChar(*p++);
}
// Send a character out to the serial interface.
void Serial_PutChar(char Ch) { // wait for empty buffer
while (U1STAbits.UTXBF == 1);
U1TXREG = Ch;
}

También podría gustarte