Registradores de Deslocamento
Um registrador de deslocamento ou "shift-register", consiste num conjunto de flip-flops que
podem ser interligados de diversas formas.
Estes circuitos podem deslocar uma informação (bit) aplicada na entrada a cada pulso de clock. Por exemplo, o bit 1 aplicado na entrada aparece na saída Qa no primeiro pulso de clock, depois desloca-se, aparecendo na saída Qb no segundo pulso de clock e assim por diante, até aparecer na saída do final da sequência, enquanto isso outro bit aplicado na entrada aparecerá na saída Qa e assim sucessivamente.
Podemos encontrar registradores de deslocamento nas famílias TTL ou CMOS. Vejamos alguns:
74164 - SHIFT-REGISTER DE 8 BITS (Entrada serial, saída paralela)
Pinagem
Diagrama
A,B - Entradas (geralmente a entrada B é sempre setada)
Qa...Qh - saídas
Clear (ou MR) - Reseta todas as saídas
Clock (ou CLK) - A cada pulso, faz deslocar um bit.
74595 - SHIFT-REGISTER DE 8 BITS COM LATCH (Entrada serial, saída paralela ou serial)
Pinagem
Diagrama
A - Entradas.
Qa...Qh - saídas.
Reset - Reseta todas as saídas do ShiftRegister
Shift Clock - A cada pulso, faz deslocar um bit.
Latch Clock - A cada pulso, o valor das saídas do ShiftRegister é aplicado na saída do Latch.
Output Enable - Ativa as saídas.
74HC164 e PIC16F628A -- EXEMPLO
sbit data_out at RB4_bit; //pino saída de dados sbit clk_out at RB5_Bit; //pino do clock sbit data_out_direction at TRISB4_bit; sbit clk_out_direction at TRISB5_bit; //74HC164 void shiftout(char c){ char i; for(i=0;i<8;i++){ //verifica se o ultimo bit é 1 ou 0 data_out = 0; if((c>>i).F0 == 1) data_out = 1; //pulso de clock clk_out = 0; clk_out = 1; } data_out = 0; clk_out = 0; } void main() { data_out_direction = 0; clk_out_direction = 0; while(1){ shiftout(0B01010101); delay_ms(1000); shiftout(0B10101010); delay_ms(1000); } } 8>
Valeu Tiago, mais uma vez PARABÉNS!!!
ResponderExcluirTanto pela atenção ao comentários, quanto pela rapidez na elaboração dos posts, e também pela maneira de explicar e exemplificar. Esse blog ta se tornando minha escola...rsrsrs!!! Obrigado!!!
Tiago, Parabéns!!!
ResponderExcluirVocê explica de tal forma que a compreensão se torna fácil e imediata, estou divulgando para meus colegas o seu blog,os que já visitaram, assim como eu, gostaram das informações que encontraram. Peço licença para nosso amigo CIS para usar as palavras dele:"Esse blog ta se tornando minha escola!!!"
Vamos ver a logica de um 74595. Eu preciso enviar um caractere 8x8 para rolar na matriz também 8x8, neste caso, qual seria o passo a passo:
ResponderExcluir1 - Enviar os bits em serie.
2 - usar oito pulsos de clock para que os bits fiquem armazenados.A cada bit um pulso.
3 - fazer um pulso no latch para ativar a saida do latch e assim ver na matriz.
Será que estou no caminho??? Desculpem minha ignorancia, mas ta dificil entender esse passo a passo sozinho. Podem me ajudar???
boa explicação
ResponderExcluirExcelente blog. Gracias por tus conocimientos. Logre hacer funcionar
ResponderExcluir74ls146 en mikroc gracias a la informacion publicada. Me costo bastante conseguir como hacerlo. De verdad los Felicito. Desde Venezuela Saludos...