Archivo de la categoría: MPLAB-IDE

Here you can find the MPLAB-IDE proyects.

Practice 4 – SPI EXERCISE

In this exercise I’m going to explain how to write an EEPROM memory  with a microcontroller and then reading the memory with another microcontroller which will be also connected to a LCD screen where we could see the content of the memory previusly written. This will happen when I press a button.

Seguir leyendo Practice 4 – SPI EXERCISE

Anuncios

PRACTICE 1- ANALOG/DIGITAL CONVERTER PCF8591

In this exercise we will study the analogic/digital converter PCF8591 using the I2C interface to comunicate with the microcontroller.

This device uses the address 1001xxxx by default, the least significant bit is used to read if 1 or write if 0.

ImagenBLOG4

The ADC will be configurate with the control byte in the differential mode using two differential inputs and using the Channel 0. The control byte will be: 0x30, or in binary: oboo11oooo.

ImagenBLOG3

The secuence to read of the I2C communication is:

START| ADDRESS W | CONTROL BYTE | REPEATED START | ADDRESS R | DATA BYTE

So, the code we generate to make this program will be:

///////////////////////////////////////////////////////////////////////////////////////////
// AUTOR: OSCAR SOLIS Octubre/2013
///////////////////////////////////////////////////////////////////////////////////////////
// PROGRAMA: I2C VERSIÓN: 1.0
// DISPOSITIVO: PIC 18F4550 COMPILADOR: CCS vs4.023
// Entorno IDE: MPLAB SIMULADOR: Proteus 8.0 sp1
// TARJETA DE APLICACIÓN: Trainer DEBUGGER: ICD3
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
// Estudio de la comunicación I2C con el conversor Analógico/Digital PCF8591 //
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
// CABECERA ///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
#include <18f4550.h>
#fuses intHS,MCLR
#use delay(internal=8MHz)
#use i2c(Master, sda=PIN_B0, scl=PIN_B1)
#include <LCD_flexible.c>
///////////////////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES /////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

float valor=0;

///////////////////////////////////////////////////////////////////////////////////////////
// FUNCIONES //////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
// PRINCIPAL //////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////
void main()
{
i2c_start(); //iniciar comunicación i2c.
i2c_write(0b10010000); //dirección (7bits). El último bit determina si se lee o se escribe
i2c_write(0b00110000); //byte de control (El 11 activa las entradas analógicas en modo diferencial)
i2c_start(); //iniciar comunicación i2c.
i2c_write(0b10010001); //dirección (7bits). El último bit determina si se lee o se escribe
lcd_init();
for(;;)
{
valor=i2c_read();
valor=valor/256;
LCD_GOTOXY(1,1);
printf(lcd_putc,”Tension = %1.2f Voltios”,valor);
}

i2c_stop(); //terminar comunicación i2c.
}

Compilate the program to generate the *.cof and then we will be able to watch the proccess in ISIS.

ImagenBLOG

ImagenBLOG2

You can download the all the documents of the practice from this link: