Fork me on GitHub

03/02/14

PIC: PCF8574

PIC: PCF8574




O CI PCF8574 é um expansor de portas entradas/saídas de 8 bits via comunicação I2C. Com ele é possível expandir as portas de um microcontrolador utilizando apenas duas portas para 8 portas. Pode-se utilizar até 8 CI's conectados no mesmo barramento, totalizando 64 portas.

O PCF8574 pode ser emissor ( saídas para LED ) e receptor ( entradas para botões ), mas não pode ser utilizado como emissor e receptor ao mesmo tempo. Isto é uma desvantagem deste CI.




ENDEREÇAMENTO


Os bits A2, A1, A0 correspondem aos pinos de endereçamento ( A2, A1, e A0 ).

CÓDIGO DA BIBLIOTECA
MikroC PRO PIC
#define PCF8574_ADDR 64
#define PCF8574A_ADDR 112

void PCF8574_Wr( char address, char value )
{
      I2C1_Start();
      I2C1_Wr( PCF8574_ADDR | ( address << 1 ) );
      I2C1_Wr( value );
      I2C1_Stop();
}

char PCF8574_Rd( char address ) 
{
char value;
     I2C1_Start();
     I2C1_Wr( PCF8574_ADDR | 1 | ( address << 1 ) );
     value = I2C1_Rd(0);
     I2C1_Stop();
     return(value);
}

EXEMPLO
MikroC PRO PIC
//Habilitar as seguintes bibliotecas:
// - I2C
// - Uart

//Copie e cole aqui o código da biblioteca!!!

void main()
{
char ValorDeEntrada;

      I2C1_Init(100000);
      Uart1_Init(9600);
      
      //Define todos os pinos como saida e escreve 0 na saida
      PCF8574_Wr( 7, 0 );
      
      Delay_ms( 2000 );
      //Define todos os pinos como saida e escreve 255 na saida
      PCF8574_Wr( 7, 255 );
      
      Delay_ms( 2000 );
      
      while(1)
      {
         //Define todos os pinos como entrada e realiza a leitura
         ValorDeEntrada = PCF8574_Rd( 7 );
         if( ValorDeEntrada.B0 )  
         {
               Uart1_Write_Text( "P0 = 1" );
         }
         else
         {
               Uart1_Write_Text( "P0 = 0" );
         }
      }
}

Um comentário:

Postagens Relacionadas!!