Documentos de Académico
Documentos de Profesional
Documentos de Cultura
h"
#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;
void main(void){
TRISB=0X0000;
TRISD=0X0000;
ADCON1=0b00000100;
ADCS2=1;
ADCS1=1;
ADCS0=1;
ADFM=1;
ADCON0bits.ADON=1;
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);
Lcd_Out(1,0,"PARA");
Lcd_Out(2,0,"CONTINUAR");
*/
while(1){
//VOLTIMETRO
while(menu==0){
Lcd_Out(1,0,"VOLTIMETRO");
while(PORTDbits.RD7==0){
float vm = ADC_Read(0);
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_Out(1,0,"AMPERIMETRO");
while(PORTDbits.RD7==0){
float vm = ADC_Read(0);
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_Out(1,0,"WATTIMETRO");
while(PORTDbits.RD7==1){
float vm = ADC_Read(0);
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){
putrsXLCD("TEMPERATURA");
while(PORTBbits.RB7==1){
__delay_ms(10) ;
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;
*/
}
unsigned int ADC_Read(unsigned char canal){
if(canal>7)
return 0;
ADCON0bits.CHS = canal;
__delay_ms(2);
GO_nDONE=1;
while(GO_nDONE);
return((ADRESH<<8)+ADRESL);