sexta-feira, 5 de junho de 2020

74HC595

Semelhante ao 74HC164 e HEF4094, este circuito integrado nada mais é que um conversor serial para paralelo, onde recebe 8 bits na porta serial e converte para oito portas paralelas (pinos). O tipo de comunicação é SPI diretamente com o microcontrolador, onde são enviados os bits (DS) em cada ciclo de clock (SHCP e STCP) e ainda podem ser implementados os controles Output Enable (OE) e Reset (MR). Abaixo temos uma imagem com o diagrama funcional do circuito:

 

O circuito consiste de diversos circuitos lógico para executar essa conversão serial/paralela e para expansão ainda temos Q7S que é uma saída serial para ligação entre outros CIs da mesma família, onde vemos as etapas lógicas na próxima figura:

 

Para que ocorra a conversão devemos seguir critérios de comunicação pré estabelecidos, onde o CI recebe pulsos lógicos, na família 74HC recebe sinais nível CMOS e na 74HCT recebe sinais a nível TTL, os CIs podem ser alimentados em até +7V e a corrente de saída é de até 35mA em Qn e 25mA em Q7S. A corrente de consumo fica em torno dos 70mA para operação. A voltagem de transição entre nível alto e nível baixo se dá em +2,6V com o circuito operando a +5V VDD.

No diagrama seguinte temos o formato de dados a ser enviado e interpretado pelo 74HC595:

 

 As ligações do CI também devem obedecer uma certa ordem, caso não seja necessário utilizar OE e MR, devemos conectar OE ao GND e MR ao VCC. Outra variável para receber o pulso de clock, onde sempre ocorre na porta SHCP, que de acordo com cada finalidade do circuito pode se unir SHCP a STCP ou utilizar STCP como porta Strobe.

Microcontroladores que tem portas Open-Drain em sua arquitetura devem receber um resistor de Pull-Up em sua linha de comunicação, este resistor pode ser disposto de 3,3KΩ à 10KΩ ligado a VCC.

A seguir veremos o protocolo de comunicação e execução microcontrolador para que o 74HC595 realize a conversão de serial para paralelo.

Primeiramente, com SHCP e DS ligados ao microcontrolador já podemos enviar informações de forma serial ao circuito integrado, a cada pulso positivo do clock enviado para SHCP ocorre o registro de 1 bit para determinada porta de saída paralela. Para determinar o nível lógico das 8 portas de saída do ci devemos então enviar 8 bits em DS com 8 clocks em SHCP.

Primeiramente definimos que 0 é nível lógico 0V (baixo) e 1 nível lógico +5V (alto), ou low e high como preferir.

Para o protocolo se realizar começamos a rotina do microcontrolador colocando SHCP e DS em nível lógico 0, logo após disparamos o nível lógico da primeira porta paralela Q0, que pode ser 0 ou 1, depois disparamos nível lógico alto (1) no pino de clock (SHCP) e posteriormente nível baixo em SHCP registrando assim o primeiro ciclo de escrita para a porta Q0 do 74HC595, repetindo este processo estabelecemos Q1, e assim a cada ciclo definimos Q2, Q3 e assim por diante até Q7.  Depois de enviarmos os 8 bits seriais o registrador interno do 595 reinicia para nova intrução de Q0 onde se reinicia o processo novamente de escrita.

Abaixo temos o exemplo de rotina baseada em linguagem C para microcontroladores PIC da Microchip feitos em CCS.


<main.c>

#include <18F4550.h>

#use delay(clock=20000000)

#fuses INTHS,NOWDT,NOPROTECT

 

#define DAT PIN_B0

#define CLK PIN_B1

 

unsigned int j;

unsigned int Valor;

const char Segments[1][8] = {{

   0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f

}};

 

const char Valores[1][7] = {{

   0x01,0x02,0x03,0x04,0x05,0x06,0x07

}};

 

void Escreve595(char Dados){

   for(j = 0x40; j > 0; j = j >> 1) {

     if(Dados & j){

       output_high(DAT);

     }else{

       output_low(DAT);

     }

     output_high(CLK);

     output_low(CLK);

  }

}

 

void main() {

   setup_oscillator(OSC_8MHZ | osc_intrc);       

   delay_ms(1000);

   while(TRUE) {

      output_low(DAT);

      output_low(CLK);

      Valor = 1;

      Escreve595(Segments[0][Valor]);

      delay_ms(1);

   }

}


Estes conversores seriais/paralelos podem ser bem empregados para economizar portas em microcontroladores, pois usando minimamente duas portas do microcontrolador já podemos expandir para oito portas paralelas, tanto para acionamento de periféricos, LEDs, e até displays segmentos LED  ou LCD. A aplicação para estes é infinita e depende de cada projeto em si.

Nenhum comentário:

Postar um comentário