Multiplexando displays de 7 segmentos com PIC16F877A A ligação de vários displays de 7 segmentos nos PICs podem ser feitas de diversas meneiras, uma bastante interessante é a que se segue. A ligação de displays multiplexados tráz a vantagem de que utilizamos poucos terminais de saída dos PICs, porém, o software deve ser escrito de forma a gerar a informação adequada para podermos ver, abaixo temos um esquema que mostra a ligação de dois displays de 7 segmentos em um PIC16F877A, observe que para a ligação dos displays apenas são utilizados 9 terminais do PIC e não 14 como seria se não fossem multiplexados. Observe a ligação dos pinos do display em que cada pino "A" de cada display são ligados juntos e apenas um conjunto de resistores limitadores são necessários, mesmo que ligassemos três ou mais displays devemos fazer as mesmas ligações e ainda, no Proteus podemos utilizar os labels que são "ligações virtuais" que melhoram a construção do esquema e sua 1 / 5
visualização, veja no detalhe: O label é colocado em cada fio que queremos nomear e então depois, para ligar outros fios juntos basta acionar a ferramenta lable e colocar o mesmo nome que teremos uma ligação entre eles: clique na ferramenta Label e depois clique no fio que deseja nomear, crie um nome e depois clique nos outros fios e coloque o mesmo nome que teremos uma ligação entre eles. Neste exemplo criamos sete Labels "A", "B", "C", "D", "E", "F" e "G" e ligamos em cada segmento dos displays com a conexão adequada, "A" com "A" e assim por diante. Logo após é a hora de criar o programa, abaixo temos um exemplo de programa criado para apresentar o resultado de uma soma de 0 á 99 nos displays multiplexados, veja que atualizamos as saídas para um display e mostramos um dígito, logo depois, mudamos para o segundo dígito e ligamos o outro display, alternando de tempos em tempos para "criar" a imagem estática, no vídeo não dá pra percener devido à simulação mas se montarmos numa 2 / 5
placa te teste o efeito é bem interessane, veja o código: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 1 3 / 5
41 42 43 44 45 46 47 48 49 50 51 52 53 /* Código de exemplo de ligação dois displays de 7 segmentos com PIC16F877A * * multiplexados. Para ser compilada com o PICC-CCS * * Autor: Nelson Camilo de Almeida * * www.pictronics.com.br * * Data 04/03/2011 */ #include "main_7seg multiplexado.h" #define Display1 pin_c6 #define Display2 pin_c7 // Display 1 ligado ao pino pin_c6 // Display 2 ligado ao pino pin_c7 byte const digito [ ] 0b10000110, // 1 dos valores mostrados 0b11011011, // 2 no display de LEDs 0b11001111, // 3 em binário para ficar 0b11100110, // 4 mais fácil de codificar 0b11101101, // 5 cada dígito dos valores 0b11111101, // 6 mostrados no display. 0b10000111, // 7 0b11111111, // 8 0b11100111 ; // 9 void main ( ) // Funçã int contador ; // variável de contagem int unidade, dezena ; setup_adc_ports ( NO_ANALOGS ) ; setup_adc ( ADC_OFF ) ; setup_psp ( PSP_DISABLED ) ; setup_spi ( SPI_SS_DISABLED ) ; setup_timer_0 ( RTCC_INTERNAL RTCC_ setup_timer_1 ( T1_DISABLED ) ; 4 / 5
setup_timer_2 ( T2_DISABLED, 0 while ( true ) // Loop for ( contador = 0 unidade = contador / 10 dezena = contador - ( output_b ( digito [ unidade output_high ( Display1 ) ; delay_ms ( 50 ) ; output_low ( Display1 ) ; output_b ( digito [ dezena output_high ( Display2 ) ; delay_ms ( 50 ) ; output_low ( Display2 ) ; Desta meneira podemos ligar vários displays nos PICs economizando picnos paramuitos displays mas aumentando a complexidade do software de controle e ainda existem outras formas de se fazer essa multiplexação, em outra ocasião iremos mostrar mas delas, continue verificando!! Os arquivos necessários para esta experiência estão aqui, baixe e teste você mesmo (arquivo Proteus versão 7.7). Veja o vídeo deste exemplo, os dígitos não aparecem ligados devido a um delay grande na simulação mas, se montar na protoboard você verá que os dígitos aparecem simultaneamente, muito legal!!!! 5 / 5