Professional Documents
Culture Documents
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
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
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
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