Warning: mysqli_connect() [function.mysqli-connect]: (HY000/2003): Can't connect to MySQL server on 'hpspin.com.br' (111) in /home/storage/2/20/63/hpspin1/public_html/hpspin_v2/visitas/visitas.inc on line 11


REGISTRO DE VISITANTES

Erro ao tentar acessar o banco de dados de visitantes.


Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in /home/storage/2/20/63/hpspin1/public_html/hpspin_v2/visitas/visitas.inc on line 30

Código de erro não disponível.


Warning: mysqli_close() expects parameter 1 to be mysqli, boolean given in /home/storage/2/20/63/hpspin1/public_html/hpspin_v2/visitas/visitas.inc on line 35

Warning: mysqli_close() expects parameter 1 to be mysqli, boolean given in /home/storage/2/20/63/hpspin1/public_html/hpspin_v2/visitas/visitas.inc on line 40
HP.Spin
HOME PROJETOS PROGRAMAÇÃO

MULTIPLEXAÇÃO DE 2 DISPLAYS DE 7 SEGMENTOS


Normalmente, quando se deseja trabalhar com displays de 7 segmentos, utiliza-se um circuito driver decodificador de números em formato BCD para 7 segmentos. Esses drivers possuem 4 bits de entrada para o número BCD que se deseja exibir e 7 bits de saída para enviar o layout decodificado ao display de 7 segmentos. Quando se trata de multiplexação de displays, o uso desses drivers vão requerer 4 pinos do microcontrolador somente para os dados mais N pinos do microcontrolador para selecionar tantos quantos forem os displays usados no projeto e talvez outros pinos para os sinais de controle do próprio driver. Esse mecanismo de decodificação também pode ser conseguido usando-se usando-se um shift register de entrada serial e saídas paralelas que usará apenas dois pinos do microcontrolador para receber os dados.

Neste projeto veremos como conectar ao PIC dois displays de 7 segmentos usando um shift register 74LS164N para multiplexá-los através de processo serial.




O FIRMWARE

Este projeto foi escrito para um microcontrolador "PIC16F628A" mas pode ser convertido facilmente para qualquer outro microntrolador dessa família.

Antes de continuar, faça o download do projeto do programa exemplo.

Descomprima o arquivo "mplx2.zip" no HD; será criada a pasta "mplx2". Entre na pasta "mplx2" e de 2 cliques no arquivo "mplx2hs510.mcp" para abrir o projeto no programa MPLAB.




O HARDWARE

Monte, numa placa PCB ou num Protoboard, o circuito mostrado no esquema elétrico abaixo para poder testar o programa exemplo.





ATENÇÃO:
Não ficou representado no esquema acima as conexões de alimentação do shift register 74LS164N. Ao montar o circuito conecte o pino 7 desse integrado ao Ground e o pino 14 ao +5V (VCC).

FIGURA 1


Observando-se o esquema elétrico acima podemos notar que apenas 4 portas do microcontrolador serão usadas para obter o efeito de multiplexação requerido. Os pinos RB0 e RB1, quando em nível alto (alternadamente), selecionam o respectivo display, aterrando seu catodo através do respectivo transistor (Q1/Q2). Os pinos RB3 alimenta com dados a entrada serial do 74LS164N e o pino RB5 aciona o clock do 74LS164N durante o processo de carga do dado.




COMPONENTES USADOS NO PROJETO


Os displays usados no projeto são do tipo HS5101AS que possuem 10 pinos cada um, sendo os pinos "k" são os catodos comuns. Veja a pinagem na figura abaixo.

                    

O 74LS164N, visto na figura abaixo, é um shift register de entrada serial e saídas paralelas. Esse CI receberá, serialmente pelo pino A, o layout do número a ser exibido no display e o colocará paralelamente nas saídas QA, QB, QC, QD, QE, QF, QG e QH.




MECANISMO DE MULTIPLEXAÇÃO DOS DISPLAYS

Primeiro, seleciona-se o display onde o valor deve ser exibido. Supondo-se que se deseja mostrar o valor no display de mais baixa ordem, levanta-se o sinal do pino RB0, fazendo o o transistor Q1 entrar em condução e abaixa-se o sinal do pino RB1 cortando-se o transistor Q2. Isso fará com que o catodo do display CS0, conectado ao transistor Q1, seja aterrado e o display acenda.

Se desejarmos mostrar o valor no display de mais alta ordem, abaixa-se o sinal do pino RB0, cortando o o transistor Q1 e levanta-se o sinal do pino RB1 fazendo com que o transistor Q2 entre en condução. Isso fará com que o catodo do display CS1, conectado ao transistor Q2, seja aterrado e o display acenda.

Em seguida, carrega-se o 74LS164N alimentando-se serialmente o pino 1 do mesmo com o layout do valor a ser exibido no display, bit a bit, levantando-se e abaixando-se o sinal de clock no pino 8 para cada bit a ser carregado. O valor, assim alimentado no 74LS164N, aparecerá paralelamente em seus pinos 3, 4, 5, 6, 10, 11, 12 e 13 que estão conectados simultaneamente aos pinos dos segmentos a, b, c, d, e, f, g e dp dos dois displays. O pino dp dos displays refere-se ao ponto decimal.

Para conseguir a multiplexação, os pinos RB0 e RB1 devem ser alternados rapidamente, digamos num intervalo de tempo de 10 milisegundos, enquanto o 74LS164N deve ser carregado com o valor a ser exibido no display selecionado.






O PROGRAMA EXEMPLO

O programa exemplo mostrará uma contagem de 2 dígitos hexadecimais nos dois displays de 7 segmentos CS0 para o dígito menos significativo e CS1 para o dígito mais significativo.

A contagem sera limitada ao valor 255 (0xFF) pelo símbolo "cntlim".

A multiplexação será obtida pela interrupção do TMR1 cujo valor inicial de contagem deve ser especificado no simbolo "mplxtimer". Neste programa, que usa frequência de clock (Fosc) de 4MHZ, o símbolo "mplxtimer" foi inicializado com o valor 55536 (decimal) que faz o TMR1 estourar a cada 10ms, tempo que proporciona um refrescamento ideal para que o display nao pisque. Se desejar mudar a frequência de operação do microcontrolador, esse número deverá se recalculado para que o TMR1 possa estourar em 10ms ou 0,01s (segundos), bastando dividir 0,01 pelo tempo do novo ciclo de instrução e subtrair o resultado de 65536. Por exemplo, se a nova frequência escolhida for 16MHz, calcule o cilo de instrução dividindo 4 por 16000000. Isso dará como resultado 250ns (nanosegundos) ou 0,00000025s (segundos). Dividindo 0,01 por 0,00000025 teremos como resultado 40000 que subtraido de 65536 vai dar 25536. Este deve ser o novo valor do símbolo "mplxtimer" para o TMR1 estourar em 10ms numa frequência de 16MHZ.

Conforme dito anteriormente, a seleção dos displays será feita através dos pinos RB0 para o dígito menos significativo e RB1 para o dígito mais significativo. Os dados serão enviados serialmente aos displays através dos pinos RB3 e RB5.

Os segmentos dos displays serão acionados conforme o layout contido na Table-Read "charset" residente na memória flash do microcontrolador.

O programa foi compilado e testado com sucesso antes de ser empacotado para distribuição. Assim, antes de modificar o programa por sua conta, grave no microcontrolador o arquivo original "mplx2hs510.hex" para verificar se seu circuito esta realmente funcionando. Se tudo correu bem, então sinta-se a vontade para alterar o programa e o circuito, por exemplo, inserindo mais um display no esquema.








DOWNLOADS

Projeto MPLAB do programa exemplo mplx2.zip.






Índice dos circuitos


HPSpin

Desde 04 de Março de 2010

Ultima versão: Outubro de 2019