Está en la página 1de 6

#include "config.

h"

#define _XTAL_FREQ 4000000

#define BAUDRATE 9600

#define BRGVAL ((_XTAL_FREQ/BAUDRATE)/16)-1

#include "lcd.h"

#include <stdio.h>

#include <math.h>

char lcd[4]; //Variable donde se guarda el valor de temperatura registrado para visualizar al
lcd

//Valor medido

//float vmV = 0;

//float vmA = 0;

int menu=0;

unsigned int ADC_Read(unsigned char canal);

void main(void){

TRISB=0X0000;

TRISD=0X0000;

ADCON1=0b00000100;

ADCS2=1;

ADCS1=1;

ADCS0=1;

ADFM=1;

ADCON0bits.ADON=1;

Lcd_Init(); //Inicia la pantalla LCD


Lcd_Cmd(LCD_CURSOR_OFF);

Lcd_Cmd(LCD_CLEAR);

Lcd_Out(1,3,"MULTIMETRO");

Lcd_Out(2,2,"DIGITAL v1.0");

__delay_ms(2500);

/*

Lcd_Cmd(LCD_CLEAR);

Lcd_Out(1,0,"BIENVENIDOS");

__delay_ms(1000);

Lcd_Cmd(LCD_CLEAR);

Lcd_Out(1,0,"PRESIONE EL");

Lcd_Out(2,0,"BOTON");

__delay_ms(1000);

Lcd_Cmd(LCD_CLEAR);

while(PORTDbits.RD7==0){ //Menu donde presionando el boton se logra ingresar al


programa del termometro

Lcd_Out(1,0,"PARA");

Lcd_Out(2,0,"CONTINUAR");

*/

while(1){

//VOLTIMETRO

while(menu==0){

Lcd_Cmd(LCD_CLEAR); //Limpia la pantalla LCD al reinicio

Lcd_Out(1,0,"VOLTIMETRO");

while(PORTDbits.RD7==0){
float vm = ADC_Read(0);

//Calculos hechos para hallar el voltaje

vm = vm*55/1023.0;

sprintf(lcd,"V:%.2f", vm);

// printf("%.2f\n", vmV);

Lcd_Out(2,0,lcd);

__delay_ms(20);

if(PORTDbits.RD7==1){

menu=menu+1;

}else{

menu=0;

//AMPERIMETRO

while(menu==1){

Lcd_Cmd(LCD_CLEAR); //Limpia la pantalla LCD al reinicio

Lcd_Out(1,0,"AMPERIMETRO");

while(PORTDbits.RD7==0){

float vm = ADC_Read(0);

//Calculos hechos para hallar el amperaje

vm = (vm*55/1023.0)/55;

sprintf(lcd,"A:%.2f", vm);

Lcd_Out(2,0,lcd);

__delay_ms(20);

if(PORTDbits.RD7==1){

menu=menu+1;

}else{

menu=1;
}

/*

//WATTIMETRO

while(menu==2){

Lcd_Cmd(LCD_CLEAR); //Limpia la pantalla LCD al reinicio

Lcd_Out(1,0,"WATTIMETRO");

while(PORTDbits.RD7==1){

float vm = ADC_Read(0);

//Calculos hechos para hallar la potencia

vm = (vm*55/1023.0)*(vm*55/1023.0)/55;

// sprintf(lcd,"W:%.2f", vm);

// Lcd_Out(2,0,lcd);

// __delay_ms(20);

// if(PORTDbits.RD7==1){

// menu=menu+1;

// }else{

// menu=1;

// }

}*/

/*

//TERMOMETRO

while(menu==3){

adc1(); //Inicia el ADC

AD1CON1bits.ADON = 1; // Habilita ADC

WriteCmdXLCD(CLEAR_XLCD); //Limpia la pantalla LCD al reinicio


XLCDgotoXY(0,0);

putrsXLCD("TEMPERATURA");

while(PORTBbits.RB7==1){

AD1CON1bits.SAMP = 1; // Bit para habilitar muestreo

__delay_ms(10) ;

AD1CON1bits.SAMP = 0; // Retiene el muestreo

while(!AD1CON1bits.DONE); // Esperar a que se haya realizado la convercion

AD1CON1bits.DONE = 0;

__delay_ms(50);

termometro();

temp=temp-273.15;

sprintf(vector,"%.2f", temp);

printf("%.2f\n", temp);

XLCDgotoXY(1,0);

putrsXLCD("T: C");

XLCDgotoXY(1,8);

putrsXLCD(vector);

if(PORTBbits.RB7==0){

menu=menu+1;

}else{

menu=0;

*/

menu=0; //retorna el valor de menu a 0 para seguir cambiando de temperatura

}
unsigned int ADC_Read(unsigned char canal){

if(canal>7)

return 0;

ADCON0 &= 0xC5;

ADCON0bits.CHS = canal;

__delay_ms(2);

GO_nDONE=1;

while(GO_nDONE);

return((ADRESH<<8)+ADRESL);

También podría gustarte