Ir ao conteúdo

Controle do 74HC595


CIS

Posts recomendados

Postado

Como seria o passo a passo para controlar o CI 74HC595 usando um pic 16F628A em linguagem C ???

Quais os passos e como deve ficar a pinagem do CI ??

Como enviar um byte usando um único pino ??

Alguém me ajuda com isso, de possível com imagens do proteus...

Postado

Programo em Linguagem C, compilador MickroC e um pouco de CCS.

Então, dando uma lida aqui vi que vou realmente precisar de três pinos do PIC, mas como faço para enviar um byte se tenho apenas um pino de dados ?? Devo fazer isso serialmente, certo, mas como fazer em linguagem C ? A ideia aqui é fazer rolar um caractere de 8x8 numa matriz... mas preciso e quero primeiro entender o funcionamento no CI 74595 e como trabalhar com ele.

Postado

voce deu uma lida no datasheet dele?

É que só te passando uma rotina para o compilador que vai usar não vai te ajudar muito a' bolar' o hardware.

Existe duas maneira simples de rolar textos numa matriz de leds,uma é fazendo varredura horizontal(igual as tvs) e outra é fazendo varredura vertical.

Eu acho mais simples varredura horizontal.

Para fazer uma varredura horizontal,voce pode usar um 74LS164,com isso vai economizar um pino e o soft é mais fácil.

o que voce ja tem em mãos?

Postado
voce deu uma lida no datasheet dele?

É que só te passando uma rotina para o compilador que vai usar não vai te ajudar muito a' bolar' o hardware.

Existe duas maneira simples de rolar textos numa matriz de leds,uma é fazendo varredura horizontal(igual as tvs) e outra é fazendo varredura vertical.

Eu acho mais simples varredura horizontal.

Para fazer uma varredura horizontal,voce pode usar um 74LS164,com isso vai economizar um pino e o soft é mais fácil.

o que voce ja tem em mãos?

Em termo de material, eu acho que tenho tudo aqui.Tenho o 74595, 74164, uln2003, varios PICs, inclusive o 16F628A, que é o quero desenvolver. Ja li bastante sobre o 74595, encontrei uns códigos para arduino e to ate entendendo o funcionamento. Eu mando um bit de dado, dou um pulso de clock para armazenar, ate completar os 8 bits, depois dou um pulso no LATCH para ativar as saidas... é isso mesmo não é ??? agora to apanhando mesmo é em como enviar um byte inteiro por um único pino de dados, gostaria ver de uma rotina simples e bem comentada de como fazer um caractere rolar numa matriz em linguagem C , explicando o que esta acontecendo dentro do código.

Não estou conseguindo acompanhar a logica dos códigos que encontrei para arduino... mas vou continuar lendo e tentando, se puder me ajudar, ficarei muito grato, ja que muito coisa eu aprendi aqui no forum, e muito com você VTRX, desde que comecei com o PIC12F675...

Valeu!!!

Postado

Um grande problema é escolher um compilador.

Eu tenho projeto antigo usando o 16F628 + 10 matriz 8x8,mas está em ASM.

Eu cheguei a começar a 'transcrever' o código para C usando CCS,que é o que vai mais ajudar a maioria,mas larguei para fazer outras coisas.

voce vai ou está usando uma matriz ou mais de uma?

Está tentando rolar uma letra ou um texto?

Aguarde mais pessoas porque eu estou no meio de uma atualização de um programa de controle e se eu parar não termino nunca :D

PS:O projeto que vou transcrever é esse do link:

MAtriz rolante.

Ja era para ter feito isso ha muito tempo.

Para quem ja montou um hardware baseado nele eu posso passar o código,mas em ASM, C ainda não fiz.

Postado

Eu pretendo montar a matriz 8x24, o que sera 8 linhas e 24 colunas, no caso 3 matrizes de de 8x8. Pretendo fazer rolar um texto, mas quero ir desenvolvendo o programa aos poucos, primeiro entender como fazer com uma letra e uma matriz, depois com duas letras e duas matrizes e por ai seguindo em frente. Já tentei algumas simulações no proteus, mas não deu certo ainda. Vou aguardar mais ajuda!!!

Postado

Baixe o projeto Proteus do link e roda a cpu,no projeto, a 0.02 MHz.

Deste modo voce vai perceber como foi feito o texto com varredura horizontal,vai perceber como o 74ls164 fica fazendo esta varredura.

voce precisa tambem dos bytes que formam uma letra.

Baixe este programa deste link:Matriz edit.

Talvez ele te ajude a entender como poderá gravar os bytes de algumas letras,ele está bem desatualizado mais ainda server para alguma coisa:D

Tenho outra versão para montar textos mas não está terminado.

Postado

Eu já ate tinha baixado esse arquivo sem saber que era seu, muito legal,parabéns!!! Digamos que este é o ponto em que desejo chegar. Vou continuar olhando e pesquisando ate consegui, conto com tua ajuda mais vezes!!!

Como faço para "roda a cpu,no projeto, a 0.02 MHz" ??? não sou muito experiente com o proteus!!!

Obrigado.

Postado

Clike com mouse direito em cima do microcontrolador e escolha 'edit properties',no 'processor clock frequency' digite 0.1 ou 0.2 MHZ,assim voce poderá 'ver' a varredura sendo feita.

Postado
Clike com mouse direito em cima do microcontrolador e escolha 'edit properties',no 'processor clock frequency' digite 0.1 ou 0.2 MHZ,assim voce poderá 'ver' a varredura sendo feita.

Ok, mais uma coisa que aprendi !!! valeu, tive uma noção, agora vou tentar transformar essa noção em código... Obrigado.

Postado

Se voce ampliou o circuito para ver melhor,deve ter percebido que é feito uma varredura infinita do primeiro ponto ao último e a cada ponto de varredura voce envia um byte que faz parte da formação da letra,o programa que postei mostra esta formação.

Se voce alterar a velocidade para o normal(4 MHZ) nossos olhos não percebe esta 'varredura' e voce pode ver o resultado da frase.

A formação da letra e a varredura pode ser de outras maneiras mas acho a varredura horizontal(primeiro esquerdo até o último a direita)mais fácil pois é o mesmo sistema de uma tv.

Quando tiver tempo posto em C(CCS).

Postado

Encontrei este código na net, ele faz rolar uma frase pequena numa unica matriz de de 8x8. o projeto esta no blog microcontrolandos. Alguma coisas eu entendi e vi o efeito na matriz, mas outras eu não consegui, talvez você consiga fazer alguns comentários detalhando o código.

 #include "FONT.c"

char colPort at PORTD;
char rowPort at PORTB;

void print_chr(char c, char time){
char i;

while(time--){
for(i=0;i<8;i++){
rowPort=255;
colPort = 1<<(i);
rowPort = ~Font8x8[c-32][i];
delay_us(125);
}
}
}


void scroll_text(char *str){
char i=0;
char k=0;//deslocamento no buffer
char s=0,t=0;//recupera um caracter da string
char cnt=100;
char l=0,len=0;//tamanho da string
char buff[20];//variavel buffer

//limpa o buffer
for(i=0;i<20;i++) buff[i] = 0;

//recupera o tamanho da string
for(i=0;i<64;i++){
if(str[i] != 0) len++;
}

for(l=0;l<len;l++){
s = str[l];
t = str[l+1];

//armazena dois caracteres da string no buffer
for(i=0;i<16;i++){
if(i<8) buff[i] = Font8x8[s - 32][i];
else buff[i] = Font8x8[t - 32][i-8];
}



for(k=0;k<8;k++){
for(cnt=60;cnt>0;cnt--){
for(i=0;i<8;i++){/escreve os 8 bytes do buffer para formar o caracter
rowPort=255;
colPort = 1<<(i);
rowPort = ~buff[i+k];
delay_us(125);
}
}
}
}

rowPort = 255;
colPort = 0;
}


void main() {
TRISD = 0;
TRISB = 0;
colPort = 0;
rowPort = 0;

while(1){
scroll_text(" 0123456789 ");
delay_ms(300);
}
}

Postado
Qual o problema?

aparece as mensagens ;

Parameter <TDCQ> no defined in TDCQ

Parameter <TDCQB> no defined in TDCQB

Parameter <TDRQ> no defined in TDRQ

Parameter <TDRQB> no defined in TDRQB

Pin 'SH-CP' is not modelled

Pin 'ST-CP' is not modelled.

isso aparece para quantos CI tiverem no circuito. Por exemplo, peguei o circuito de uma matriz de leds aqui mesmo no forum que contem 12 CI74595, e esses erros aparecem para cada um dos CI's.

Postado

Pode ser um FootPrint customizado,por exemplo,o link que passei usa um 74LS customizado,com tamanho menor que o original mas eu instalei de um modo que se voce não tiver o FootPrint dele,voce roda do mesmo jeito.

Postado
Pode ser um FootPrint customizado,por exemplo,o link que passei usa um 74LS customizado,com tamanho menor que o original mas eu instalei de um modo que se voce não tiver o FootPrint dele,voce roda do mesmo jeito.

Sabe como posso resolver isso ???

O problema e que mesmo quando eu tento montar um circuito com o 74595, esses circuitos de teste so mesmo pra ver o funcionamento dele, na hora da simulação da os mesmos erros... sera que tem a ver com a versão do proteus??? to usando um versão 7.10... baixado na net

Postado

Resolvi o problema do 74595, eu desinstalei e instalei novamente o proteus e funcionou...

Agora é continuar tentando com entender a matriz de leds....

  • Coordenador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!