Eletrônica digital – Display 7 segmentos com 74HC595


 

Display de 7 segmentos
Display de 7 segmentos

Em um post remoto vimos como sequenciar o acendimento de 8 LEDs com o driver 74HC595, através de um código bastante simples e prático que escrevi para acendimento sequencial. Dessa vez vamos por em prática esse controlador para exibir números em um display de 7 segmentos, de forma a utilizar apenas os pinos 8,9 e 10 do Arduino. Sobre multiplexação, recomendo esse meu post bem mais atual.

 

74HC595 Wiring
74HC595 Wiring

Na imagem acima (a referência da imagem está nesse post ), está bem clara a conexão. Vamos relembrar que o acendimento do primeiro LED se dá pelo segundo pino da direita, os demais sequencialmente a partir do pino 1 da esquerda até o pino 7, completando assim os 8 LEDs possíveis por controlador.

No pino 8 da esquerda e no pino 4 da direita estão os aterramentos. No pino 1 e 7 da direita liga-se os +5v. No 3, 5 e 6 da direita ligam-se os pinos 8,9 e 10, sendo SER, RCLK e SRCKL respectivamente:

 

O código que escrevi como exemplo foi esse:

Para esse código o resultado é este:

Para controlarmos um display de 7 segmentos é bastante simples, baseando-se no código de exemplo acima. Repare que a variável regis (que é um array de inteiros) é a matriz de LEDs, onde cada posição do array representa um LED, portanto, basta acender o conjunto correspondente ao número a ser formado. Mas ainda como prova de conceito, vamos acender o LED anterior ou posterior ao posicional da variável val. Para isso na função changeValues adicione a seguinte linha abaixo de regis[val] = 1:

E na primeira linha adicione:

Troque o delay para 1000ms para que seja perceptível o acendimento em pares. Abaixo, o resultado dessa mudança:

Agora vamos ao próximo passo…

Display de 7 segmentos
Existem 2 tipos de display de 7 seguimentos; o de Anodo comum e o de Catodo comum. Nesse exemplo estou utilizando um display de Catodo comum. A imagem abaixo deixa claro sua conexão:

Diferença entre Cathodo e Anodo comum
Diferença entre Cathodo e Anodo comum

Se chama “catodo comum” porque o positivo entra em cada um dos segmentos e o aterramento é comum a todos eles, sendo o aterramento o pino central de ambos os lados do display.

O que precisamos fazer aqui é basicamente ordenar a sequencia de ligação dos LEDs de forma a corresponder à sequência do esquemático do display. Posteriormente, criaremos os arrays de inteiros cada qual correspondendo ao número que deve aparecer no display. Só um alerta: J A M A I S ligue o LED desse display sem resistor, porque vai queimar na hora, não é como um LED comum que suporta um tempo de carga direta.
Os resistores utilizados serão os mesmos dos LEDs exemplificados nos videos acima, o que o deixará um bocado luminoso.

No display que estamos utilizando tem um ponto no canto inferior direito. O primeiro pino da base, logo abaixo do ponto lhe é correspondente.

Pinos 2, 4 e 5 da base correspondem a C,D e E respectivamente. Os pinos 1, 2, 4 e 5 correspondem a G,F,A,B respectivamente. A má notícia é que só tenho um display catodo comum e adivinha? Queimei o segmento A acendendo o teste do lado errado do resistor, ou seja, minha recomendação acima: NÃO ligue +5v diretamente aos pinos do display senão já era.

Matrizes para números
A primeira coisa a fazer é sempre limprar os registros, de forma a apagar todos os seguimentos. Para isso, utilizei a função clear() do código de exemplo anterior. Mas a meneira mais limpa é utilizar o pino do 74HC595 que tem justamente essa funcionalidade. Vamos criar a matriz do número 1. Para tal é necessário acender o segmento B e C, ou pino 5 do lado superior e pino 5 do lado inferior. Como ligamos o driver na sequencia correta, basta ativar o pino 2 e 3 do driver:

Para o número 2, os segmentos A,B,G,E e D devem ser ligados. Considerando que queimei o segmento A, a exibição aqui já parecerá falha, mas a matriz deve ficar assim:

E assim por diante. O código completo fica assim:

E a exibição dos números fica assim:

Nesse post discorro sobre multiplexação, com display de 4 digitos de 7 segmentos. Recomendo a leitura.

Se gostou, não deixe de compartilhar; dê seu like no video e inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Prefere seguir-nos pelo facebook? Basta curtir aqui.

Prefere twitter? @DobitAoByte.

Próximo post a caminho!


Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.