You are on page 1of 3

UNIVERSIDADE FEDERAL DO ESPRITO SANTO CENTRO UNIVERSITRIO NORTE DO ESPRITO SANTO

Prova de Sistemas Embarcados - 2011/1 Prof. Wanderley Cardoso Celeste

Projeto - Multiplexando displays de 7 segmentos com PIC16F877A


A ligao de vrios displays de 7 segmentos nos PICs podem ser feitas de diversas maneiras. Uma bastante interessante a que se segue na figura abaixo. A ligao de displays multiplexados trz a vantagem de que utilizamos poucos terminais de sada dos PICs, porm, o software deve ser escrito de forma a gerar a informao adequada para permitir a visualizao. Abaixo temos um esquema que mostra a ligao de dois displays de 7 segmentos em um PIC16F877A. Observe que para a ligao dos displays so utilizados apenas 9 terminais do PIC e no 14 como seria caso no houvesse a multiplexao.

Observe a ligao dos pinos do display em que os pinos "A" (por exemplo) de cada display so ligados juntos e apenas um conjunto de resistores limitadores necessrio. Abaixo temos um exemplo de programa em C para PIC para apresentar o resultado de uma contagem de 0 99 nos displays multiplexados. Observe que so atualizadas as sadas para um display e mostrado um dgito. Logo depois, muda-se para o segundo dgito e liga-se o outro display, alternando de tempos em tempos para "criar" a imagem esttica.

Centro Universitrio Norte do Esprito Santo Rodovia BR 101 Norte, Km 60, Bairro Litorneo, CEP.: 29.932-540, Tel.: +55 (27) 3312.1511, Fax.: +55 (27) 3312.1510 So Mateus - ES Stio Eletrnico : http://www.ceunes.ufes.br

UNIVERSIDADE FEDERAL DO ESPRITO SANTO CENTRO UNIVERSITRIO NORTE DO ESPRITO SANTO

O que deve ser feito? 1) Entenda o funcionamento do programa analisando o cdigo em linguagem de alto nvel (linguagem C para PIC) disponibilizado; 2) Implemente um programa em Assembler para PIC que faa a multiplexao de dois displays de 7-segmentos, de modo que seja mostrado o resultado de uma contagem de 0 99. Para isso, considere a ultilizao das mesmas portas do PIC16f877A, conforme ilustrado na figura acima; 3) Simule o funcionamento e programe o microcontrolador; 4) Monte o circuito da figura acima em um plotoboard, alimente-o adequadamente e verifique o funcionamento; 5) Se a velocidade de amostragem da contagem for muito baixa/alta, ajuste-a.
1 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 41 42 /* Cdigo de exemplo de ligao de dois displays de 7 segmentos com PIC16F877A * multiplexados. */ #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 0 1 2 3 4 5 6 7 8 9 Define cada segmento dos valores mostrados no display de LEDs em binrio para ficar mais fcil de codificar cada dgito dos valores mostrados no display.

byte const digito[] = { 0b10111111, // 0b10000110, // 0b11011011, // 0b11001111, // 0b11100110, // 0b11101101, // 0b11111101, // 0b10000111, // 0b11111111, // 0b11100111};//

void main() // Funo principal { int contador; // varivel de contagem int unidade, dezena; // unidades da varivel contador setup_adc_ports(NO_ANALOGS); // Configura analgicos setup_adc(ADC_OFF); // ADC desligado setup_psp(PSP_DISABLED); // PSP desligado setup_spi(SPI_SS_DISABLED); // SPI delsigado setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Configura setup_timer_1(T1_DISABLED); // Configura setup_timer_2(T2_DISABLED,0,1); // Configura

Timer 0 Timer 1 Timer 2

while (true) // Loop infinito { for (contador = 0; contador != 100; contador++) // Contagem de 00 at 99 { unidade = contador / 10; // Calcula a unidade dezena = contador - (unidade * 10); // Calcula a dezena output_b (digito[unidade]); // Apresenta Digito[unidade_do_contador] output_high (Display1); // Habilita display 1
Centro Universitrio Norte do Esprito Santo Rodovia BR 101 Norte, Km 60, Bairro Litorneo, CEP.: 29.932-540, Tel.: +55 (27) 3312.1511, Fax.: +55 (27) 3312.1510 So Mateus - ES Stio Eletrnico : http://www.ceunes.ufes.br

UNIVERSIDADE FEDERAL DO ESPRITO SANTO CENTRO UNIVERSITRIO NORTE DO ESPRITO SANTO


delay_ms (50); 43 44 pausa no PIC output_low (Display1); 45 output_b (digito[dezena]); 46 47 Digito[dezena_do_contador] output_high (Display2); 48 delay_ms (50); 49 50 pausa no PIC output_low (Display2); 51 52 } 53 } } // Aguarda 50ms para dar uma // Desabilita display 1 // Apresenta // Habilita display 2 // Aguarda 50ms para dar uma // Desabilita display 2

Centro Universitrio Norte do Esprito Santo Rodovia BR 101 Norte, Km 60, Bairro Litorneo, CEP.: 29.932-540, Tel.: +55 (27) 3312.1511, Fax.: +55 (27) 3312.1510 So Mateus - ES Stio Eletrnico : http://www.ceunes.ufes.br

You might also like