Ir ao conteúdo
  • Cadastre-se

Ajuda rapidinha sobre Shift Registers com PIC


Matheus Falcão P

Posts recomendados

Boa noite galera do fórum, eu estou prestes a botar a mão na massa e começar a bolar um display de led multiplexado, vou começar com um 8x8 simples, estava eu pesquisando e encontrei em muitos circuitos o registrador CMOS 4094, ele é usado porque tem o pino STB, testei ele no protheus e ainda não assimilei porque preciso dele, e outra duvida se pa mais cruel: o registrador precisa de um clock pra funcionar que creio eu tem que ser de alguma forma sincronizada com o rate do pino Data, como eu faço isso pelo Pic, como eu calculo a frequencia dele, não tenho a minima ideia de como fazer isso, agradeço desde ja a ajuda que eu venha receber da comunidade, obrigado!

Link para o comentário
Compartilhar em outros sites

Bom dia,

Putz, ontem mesmo pensei em postar uma dúvida a respeito desse pino strobe, preciso economizar alguns pinos em um projeto que estou desenvolvendo e certamente vou usar o 4094. Bom quanto ao strobe não poderei te ajudar, mas a operação com os pinos data e clock é bem simples.

Primeiro você coloca o dado (0 ou 1) no pino data e depois da apenas um pulso no pino clock manda 1 e logo em seguida manda 0, se estiver usando cristal de 4 Mhz pode ser em seguida mesmo, pois, de acordo com o datasheet do 4094 ele aceita o pulso na casa dos (ns) nanosegundos.

Se estiver usando linguagem C, crie uma função que receba uma variavel int(8bits) que será o que você quer na saída do 4094 e nessa função crie um loop que rode 8 vezes, dentro desse loop as duas ultimas instruçoes devem ser as que dão o pulso de clock, quando sair do loop, o seu byte que chegou serialmente estará presente na saída do 4094.

Não sei se me expressei bem, espero ter ajudado

Att,

Link para o comentário
Compartilhar em outros sites

Então o esquema é manualmente? Eu to a meses tentando entender como funciona um display, mas não consigo compreender por completo, sei multiplexar mais não consigo sacar a interação do hardware com o software entende. Nos meus testes eu pensei em algo do tipo:

int letra_a [4] = {

0b0110,

0b1001,

0b1111,

0b1001}

int i;

portb=0b00000001; (primeiro catodo do display ligado);

for (i=0; i<=3; i++){

portb<<=1; (desloco o catodo do display ligado);

porta=letra_a; (vou escrevendo linha por linha)

delay_ms(30);

}

consigui escrever a letra porém como vou fazer isso com 8 caracteres? (ideia principal de um relogio com um display 6x35).

pensei em usar o registrador , mais n sei como.

Link para o comentário
Compartilhar em outros sites

Geralmente os Shift-out tem como ligar em cascata, aí só você enviar sequencialmente os dados, como exemplo, se você tiver dois displays, você envia os caracteres "A" e "B"

Iria acontecer algo assim: "A " -> "BA" ou então " A" -> "AB", ou seja com apenas uma saída serial você pode controlar infinitos registradores de deslocamento.

Link para o comentário
Compartilhar em outros sites

Geralmente os Shift-out tem como ligar em cascata, aí só você enviar sequencialmente os dados, como exemplo, se você tiver dois displays, você envia os caracteres "A" e "B"

Iria acontecer algo assim: "A " -> "BA" ou então " A" -> "AB", ou seja com apenas uma saída serial você pode controlar infinitos registradores de deslocamento.

Sim, estou ciente, minha duvida é a seguinte, eu fiz um esqueminha com o 4094, o pino de dados enviando dados (avah), o EO em nivel logico baixo no pino do pic e o STB ligada numa inversora que sai do mesmo pino do OE do pic.

Eu envio os dados e do 1 pulso no pino de controle, e o que aocntece é que ele pega a serial e abre na parelela sem deslocar, aparece direto e some, quanto a isso sem duvidas, minha duvida é na velocidade do clock, teria que ser algo espefico? seria o pic a controla-lo? e se fosse como fazer isso no software. Obrigado pelo apoio do forum.

Link para o comentário
Compartilhar em outros sites

http://forum.clubedohardware.com.br/resolvido-leds-pic/1015706

primeiro aprenda sobre o cd 4094 que é um ci nota 10 e muito fácil

segundo me desculpe pelos erros de portugues no topico que te passei kkk

o pino strobo é para travar as saidas no modo em que estão a você altera tudo que quiser sem alterar nenhuma saida e depois libera as alterações que fez liberando o pino strobo...

acoselho que no seu software va dando os clocks no CI para não haver erros de sincronização, então fica fácil pois só vai para a outra linha ou coluna (a que estiver sendo controlada pelo CI) quando você der o clock e logo após dar o clock ou antes ja muda o estado das IO's que controlam os led's que devem ser acesos ou apagados

Link para o comentário
Compartilhar em outros sites

Muito obrigado pela ajuda do pessoal aqui do forum, mais acho que ja resolvi isso (achei uma solução aqui no forum mesmo kk).

eu tava fazendo assim: o CI 4094 eu tava usando para escrever nas colunas (anodo) e eu tava deslocando a linha (catodo) com um 74138, mais eu inverti, agora desloco a coluna com o 4094 e escrevo nas linhas direto do pic mesmo.

Ta resolvido!

Mais com certeza post meu com os problemas que vai dar não vai faltar!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...