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:
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