Inicio » pic microcontroller programming » First activity conversor i2c a/d diferencial mode

First activity conversor i2c a/d diferencial mode

This is our first practice with mplab program and using the CCSC compiler.
decided to conduct a digital analog converter converosr with PCF8591.
in my case I decide to use multiple read potential and differential mode

/////////////////////////////////////////////////////////////////////////////////////////////////////
//   AUTOR: sergio saiz                                              Octubre/2013

This is our first practice with mplab program and using the CCSC compiler.
decided to conduct a digital analog converter converosr with PCF8591.
in my case I decide to use multiple read potential and differential mode

///////////////////////////////////////////////////////////////////////////////////////////
//   PROGRAMA:    I2C                                             VERSIÓN:    1.0
//   DISPOSITIVO: PIC 18F4550                                  COMPILADOR:    CCS vs4.023
//   Entorno IDE: MPLAB v8.89                                  SIMULADOR:    Proteus 8.0 sp1
//   TARJETA DE APLICACIÓN: Trainer                           DEBUGGER:    PICKIT3
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
//    Estudio de la comunicación I2C con la memoria CMOS EEPROM 24LC256 de MICROCHIP     //
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
// CABECERA ///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

#include<18f4550.h>//libreria del micro elegido
#fuses INTHS,MCLR, //Reloj interno alta velocidad y Master clear
#use delay(internal=8mhz)//frecuencia reloj a 8mhz
#use i2c(Master,SDA=PIN_B0,SCL=PIN_B1)   //configuracion de i2c
#include<C:\Users\troner\Desktop\sjd2\Desarrolo de prototipos\sistema _mc_2014\proyectos mplab\incrremento con i2c\LCD_flexible.c>
int dato1;//variables
int dato2;
int dato3;
int dato4;
float voltaje1;
float voltaje2;
float voltaje3;
float voltaje4;
void main()
{
lcd_init();//inicializo el lcd
i2c_start();//inicio de comunicacion,hola
i2c_write(0b10010000);//direccion del pcf 8591
i2c_write(0b00000100);//selecciono canal 0,con autoincremento y desabilito la salidas analogicas,escojo la entrada AIN0
i2c_start();//condicion de inicio repetida para trabajar con los datos
i2c_write(0b10010001);//direccion del 8591 y escojo que me trasnsmita sus datos entrantes
for(;;)
{
//el rango de funcionamiento es el vref divides la vin de ain0….entre la vref y eso  lo divides entre 2,56(para ser visible por el usuario)ylo que te da es la constante para la formula 0,039
dato1=i2c_read();//configuracion de lectura
voltaje1=dato1*0.0039;//voltaje1 multiplicado por el resultado del voltaje entre los bits(1v/256=0.0039)
lcd_gotoxy(1,1);//linea 1 posicion 1 del lcd
printf(lcd_putc»                «);//borra lcd
lcd_gotoxy(1,1);
printf(lcd_putc»voltios1=%1.3fv»,voltaje1);//saca por el lcd un digito y tres decimales de la variable voltaje1
delay_ms(1500);
dato2=i2c_read();
voltaje2=dato2*0.0039;
lcd_gotoxy(1,1);
printf(lcd_putc»            «);//borrar lcd
lcd_gotoxy(1,1);
printf(lcd_putc»voltios2=%1.3fv»,voltaje2);
delay_ms(1500);
dato3=i2c_read();
voltaje3=dato3*0.0039;
lcd_gotoxy(1,1);
printf(lcd_putc»            «);//borrar lcd
lcd_gotoxy(1,1);
printf(lcd_putc»voltios3=%1.3fv»,voltaje3);
delay_ms(1500);
dato4=i2c_read();
voltaje4=dato4*0.0039;
lcd_gotoxy(1,1);
printf(lcd_putc»            «);//borrar lcd
lcd_gotoxy(1,1);
printf(lcd_putc»voltios4=%1.3fv»,voltaje4);
delay_ms(1500);

Sin título

Deja un comentario