Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
LCD1
LM016L
R1
10k
VDD
VSS
VEE
RW
RS
D0
D1
D2
D3
D4
D5
D6
D7
U1 +5v
E
1 4
MCLR RB0/CN4/RP0/C2IN-/AN2/EMUD1/PGD1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
20 5
VCAP/VDDCORE RB1/CN5/RP1/C2IN+/AN3/EMUC1/PGC1
6
RB2/CN6/RP2/AN4
2 7
RA0/CN2/VREF+/AN0 RB3/CN7/RP3/AN5
3 11
RA1/CN3/VREF-/AN1 RB4/CN1/RP4/SOSCI
9 14
1
RA2/CN30/CLKI/OSCI RB5/CN27/RP5/ASDA1/EMUD3/PGD3
10 15
RA3/CN29/CLKO/OSCO RB6/CN24/RP6/ASCL1/EMUC3/PGC3
X1 12
RA4/CN0/T1CK/SOSCO RB7/CN23/RP7/INT0
16
CRYSTAL RB8/CN22/RP8/SCL1/PWM2H1/TCK
17 RV1
18 10k
15%
RB9/CN21/RP9/SDA1/PWM2L1/TDO
2
21
RB10/CN16/RP10/PWM1H3/TDI/EMUD2/PGD2
22
RB11/CN15/RP11/PWM1L3/TMS/EMUC2/PGC2
23
+5v RB12/CN14/RP12/PWM1H2
24
RB13/CN13/RP13/PWM1L2
28 25
AVDD RB14/CN12/RP14/PWM1H1
27 26
AVSS RB15/CN11/RP15/PWM1L1
DSPIC33FJ32MC202
BR1 R2
RXD
RV3 TXD
43K
RTS
C1
100%
2200uF CTS
R7
2W08G 1k C3 1k C2
2200uF 47uF
#include "config.h"
#include "reloj.h"
#include <libpic30.h>
#include "xlcd.h"
#include <p33FJ32MC202.h>
#include <stdio.h>
#include <math.h>
char vector[4] = ""; //Caracter usado en la visualizacion de valores del LCD
int result = 0; //Valor medido en bruto de AN0/RA0-AN1/RA1
int result1 = 0; //Valor medido en bruto de AN2/RB0
float vm = 0; //Valor medido como float
char trama[28];
char Salto[] = " Voltios-AC \r\n";
//Variables usadas en el calculo del programa
float temp = 0;
void adc0(void); //Lectura del puerto AN0
int main() {
Configurar_UART();
}
}
void adc0(void) {
TRISA = 0x0001; // Entrada analógica RA0
AD1PCFGL = 0xFFFF; // Todas entradas analógicas
AD1CON1bits.AD12B = 1; // Resolucion de 12 bits y muestreo secuencial de los
canales
AD1CON1bits.ASAM = 0; // El muestreo inicia cuando bit SAMP=1 *muestreo
manual
AD1CON1bits.SSRC = 0; // Termina el muestreo e inicia la conversión
AD1CHS0bits.CH0NA = 0; // La entrada negativa será Vss
AD1CHS0bits.CH0SA = 0; // Entrada positiva será AN0
AD1CON2bits.CSCNA = 0; // Muestreo secuencial (scan) deshabilitado
AD1CON2bits.VCFG = 0; // Referencia para la conversión: Referencia
positiva=AVdd, Negativa=AVss
AD1CON2bits.BUFM = 0; // Configurado como buffer de 16 palabras
AD1CON2bits.SMPI = 0; // Después de la conversión se genera la interrupción
AD1CON2bits.ALTS = 0; // Muestra 1 canal: AN0
AD1CON3bits.ADRC = 0; // Reloj del ADC es derivado del sistema
AD1CON3bits.ADCS = 21; // Tiempo de conversión.
}
void Configurar_UART() {
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
}