Nesta sessão, vamos projetar um display LED 8x8 com matriz LED 8x8 e microcontrolador ATmega8, que pode exibir letras ou nomes. Uma matriz de led 8x8 típica é mostrada abaixo:
Uma matriz de 8x8 LED contém 64 LEDs (diodos emissores de luz) que são organizados na forma de uma matriz, daí o nome matriz de LED. Essas matrizes podem ser feitas ligando 64 LEDs; no entanto, esse processo é demorado. Hoje em dia, eles estão disponíveis em formatos compactos, conforme mostrado na figura. Esses módulos compactos estão disponíveis em diferentes tamanhos e cores. Pode-se escolher por conveniência.
O custo do módulo é igual ao custo de 64 LED, portanto, para um amador é mais fácil de trabalhar. A configuração do PIN do módulo é mostrada na figura. Os PINs devem ser numerados exatamente como mostrado na imagem para evitar erros. Discutiremos a configuração do circuito interno do módulo em detalhes na descrição.
Componentes
Hardware: ATMEGA8, fonte de alimentação (5v), AVR-ISP PROGRAMMER, capacitor 100 uF (conectado através da fonte de alimentação), resistor de 1KΩ (8 peças).
Software: Atmel studio 6.1, progisp ou flash magic.
Diagrama de circuito e funcionamento
As conexões que são feitas entre o ATMEGA8 e o módulo de matriz de LED são mostradas na figura abaixo.
PORTD, PIN0 ------------------ PIN13 do módulo LED
PORTD, PIN1 ------------------ PIN03 do módulo LED
PORTD, PIN2 ------------------ PIN04 do módulo LED
PORTD, PIN3 ------------------ PIN10 do módulo LED
PORTD, PIN4 ------------------ PIN06 do módulo LED
PORTD, PIN5 ------------------ PIN11 do módulo LED
PORTD, PIN6 ------------------ PIN15 do módulo LED
PORTD, PIN7 ------------------ PIN16 do módulo LED
PORTB, PIN0 ------------------ PIN09 do módulo LED
PORTB, PIN1 ------------------ PIN14 do módulo LED
PORTB, PIN2 ------------------ PIN08 do módulo LED
PORTB, PIN3 ------------------ PIN12 do módulo LED
PORTC, PIN0 ------------------ PIN01 do módulo LED
PORTC, PIN1 ------------------ PIN07 do módulo LED
PORTC, PIN2 ------------------ PIN02 do módulo LED
PORTC, PIN3 ------------------ PIN05of módulo LED
O diagrama de circuito do display de matriz de LED 8x8 é mostrado na figura abaixo.
Existem 64 LEDs dispostos em forma de matriz. Portanto, temos 8 colunas e 8 linhas, conforme mostrado na figura. Sobre essas linhas e colunas, todos os terminais positivos em uma linha são reunidos. Para cada linha, há um terminal positivo comum para todos os 8 LEDs dessa linha. É mostrado na figura abaixo,
Portanto, para 8 linhas, temos 8 terminais positivos comuns, considere a primeira linha. Como pode ser visto na imagem, os LEDs de D1 a D8 têm um terminal positivo comum e são retirados do MÓDULO de LED como PIN9.
Deve-se ver que todos os positivos comuns das linhas não são retirados do MÓDULO LED de maneira ordenada. Em todos os casos há muita irregularidade nos terminais comuns. Deve-se ter isso em mente ao conectar o terminal.
Digamos que se desejamos que um ou todos os LEDs da primeira LINHA da matriz estejam LIGADOS, devemos alimentar o PIN9 do MÓDULO MATRIZ LED, não o PIN0.
Digamos que se desejamos que um ou todos os LEDs na terceira LINHA da matriz estejam LIGADOS, devemos alimentar o PIN8 do MÓDULO MATRIZ DE LED, não o PIN2.
Portanto, sempre que quisermos que um ou todos os LEDs em uma LINHA estejam LIGADOS, o pino correspondente do MÓDULO de LED deve ser energizado.
Isso ainda não acabou, apenas deixando o poder ROWS não produz nada. Precisamos aterrar a outra extremidade. Vamos discutir isso abaixo.
Agora, neste caso, ignoramos as linhas positivas comuns e nos concentramos nas colunas negativas comuns.
Portanto, nesse módulo todos os terminais negativos da primeira coluna são trazidos para o PIN13. Isso é mostrado na figura abaixo.
Aqui também há irregularidade no PIN OUTAGE do módulo. O negativo comum dos LEDs da primeira coluna é apresentado no PIN13. O negativo comum dos LEDs da segunda coluna é apresentado no PIN3.
Deve-se prestar atenção aos pinos durante a conexão. Agora, se qualquer um ou todos os LEDs na primeira coluna devem ser aterrados, o PIN13 do MÓDULO MATRIX deve ser aterrado. Esse caminho vai para as outras sete colunas negativas comuns. Quando os dois casos são colocados juntos, encontramos um circuito como mostrado abaixo,
O circuito acima é o diagrama interno completo do MÓDULO LED. Digamos que se queremos ligar o LED D10 na matriz, precisamos alimentar o PIN14 do módulo e aterrar o PIN3 no módulo. Com isso, o D10 será ligado. Isso é mostrado na figura abaixo. Isso deve ser primeiro verificar se o MATRIX sabe tudo em ordem.
Digamos que se desejamos ligar D1, precisamos ligar o PIN9 da matriz e aterrar o PIN13. Com isso o LED D1 acenderá. A direção atual para este caso é mostrada na figura abaixo.
Agora, para a parte complicada, considere que queremos ligar D1 e D10 ao mesmo tempo. Portanto, alimentamos o PIN9, PIN14 e aterramos os dois PIN13, PIN3. Com isso teremos D2 e D9 LIGADOS junto com D1 e D10. É porque eles compartilham terminais comuns. Portanto, se quisermos ligar os LEDs na diagonal, seremos forçados a ligar todos os LEDs ao longo do caminho. Isso é mostrado na figura abaixo.
Portanto, para eliminar este problema, ligaremos apenas um led de cada vez. Digamos que em t = 0m SEC, o LED D1 está ligado. Em t = 1m SEC, o LED D1 é desligado e o LED D2 é ligado. Novamente em t = 2 m SEC, o LED D2 é desligado e o LED D1 é ligado. Isso continua.
O truque é que o olho humano não consegue captar uma frequência superior a 30 Hz. Isso se um LED acender e apagar continuamente a uma taxa de 30 Hz ou mais. O olho vê o LED continuamente LIGADO. No entanto, este não é o caso. O LED ficará constantemente LIGADO e DESLIGADO. Essa técnica é chamada de multiplexação.
Usando a multiplexação, viraremos apenas uma linha de cada vez e circularemos continuamente pelas 8 linhas. Isso é visualizado como uma matriz LIGADA completamente a olho nu.
Agora, digamos que queremos exibir “A” na matriz.
Como dito, vamos LIGAR uma linha em um instante, Em t = 0m SEC, PIN09 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Em t = 1m SEG, o PIN14 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 são aterrados (outros pinos COLUMN estão ALTOS neste momento)
Em t = 2m SEC, PIN08 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN15, PIN16 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Em t = 3m SEC, o PIN12 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN15, PIN16 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Em t = 4m SEC, PIN01 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Em t = 5m SEC, PIN07 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 são aterrados (outros pinos de COLUNA estão ALTOS neste momento)
Em t = 6m SEC, PIN02 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN15, PIN16 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Em t = 7m SEC, o PIN05 é definido como ALTO (outros pinos da LINHA estão BAIXOS neste momento) neste momento, PIN13, PIN3, PIN15, PIN16 são aterrados (outros pinos da COLUNA estão ALTOS neste momento)
Nessa velocidade, o display será visto como exibindo continuamente o caractere “A”. Isso é mostrado na figura.
É assim que todos os personagens são mostrados no display. Depois de conectar o circuito de maneira adequada, conforme mostrado no diagrama do circuito. Podemos fornecer diretamente ao controlador instruções para realizar a multiplexação de forma ordenada para que o nome seja exibido.