Este documento descreve um contador de 0 a 99 implementado com dois displays de 7 segmentos multiplexados. A técnica de multiplexação permite controlar cada display individualmente usando apenas dois pinos do microcontrolador, ao invés de 14 pinos se não utilizasse multiplexação. Isso reduz o consumo de energia, uma vez que apenas um display é ativado de cada vez.
1. www.u8051.com.br
Contador com 2 displays 7-segmentos multiplexado
Esta atividade contempla a utilização do display de 7-segmentos para o
desenvolvimento de um contador de 0 a 99 com as seguintes funcionalidades:
Contagem de 0 a 99;
Contagem crescente e decrescente através das teclas P3.0 e P3.1 (por
pulso);
Função de zerar a contagem através de P3.2.
Observe o circuito abaixo:
Prática 6
P0.0 (seg.a)
P0.1 (seg.b)
P0.2 (seg.c)
P0.3 (seg.d)
P0.4 (seg.e)
P0.5 (seg.f)
P0.6 (seg.g)
comum
2. www.u8051.com.br
Figura 1.1 – Acionamento do display 7-segmentos multiplexado
No circuito da figura 1.1 note que os displays estão com os pinos dos segmentos
interligados (A, B, C, D, E, F e G). Aparentemente, este tipo de ligação fará
com que ambos displays exibam a mesma informação, e numa primeira
impressão seria impossível exibir valores diferentes em cada display.
Entretanto, observe que o pino COMUM de cada display é conectado nos pinos
P2.0 e P2.1, permitindo ao 8051 controlar o acionamento de cada display
individualmente. A técnica da multiplexação, empregada neste circuito consiste
em ativar apenas um display de cada vez, numa alternância tão rápida entre o
acionamento do display da unidade e o display da dezena, dando a impressão de
estão acionados ao mesmo tempo.
Sobre o circuito 1.1 responda:
Os transistores PNP controladores de cada display são acionados em nível
lógico 0, ou seja, quando a entrada do transistor (base) receber 0 através do pino
do microcontrolador, o respectivo display será acionado.
1. Portanto, o comando que acionará o display da unidade é:
2. O comando que acionará o display da dezena é:
3. Para desativar o display da unidade, Qual comando deverá ser executado
pelo 8051?
4. Para desativar o display da dezena, O comando a ser executado pelo 8051 é:
Dica: Algumas das respostas da atividade a seguir já foram
desenvolvidas na Aula 09 (Prática 3 - Contador de 0 a 9).
3. www.u8051.com.br
5. Conforme o livro 8051 – Teoria (página 61) o comando de acesso ao Byte
que fará o display exibir o número 1 é:
6. Para exibir o número 5, o microcontrolador deverá executar o seguinte
comando:
A seguir temos o esboço de um programa que exibe o número 51 nos displays:
#include <at89x52.h>
#include <delay.h>
void main(){
while(1){
envia o comando para exibir o digito 1 no display da unidade;
liga display da unidade;
delay_ms(3);
desliga display da unidade;
envia o comando para exibir o digito 5 no display da dezena;
liga display da dezena;
delay_ms(3);
desliga display da dezena;
}
}
7. Com base no circuito da figura 1.1, reescreva o programa acima totalmente na
linguagem C.
8. O que faz o programa que você acabou de escrever?
9. Digite o programa no JFE Editor e salve-o como MULTIPLEX.C e em
seguida, grave-o no microcontrolador para verificar o seu funcionamento.
4. www.u8051.com.br
10. Experimente modificar o programa para exibir números diferentes.
Observe que a multiplexação produz a rápida alternância entre os displays,
permitindo que sejam exibidos números diferentes, mesmo quando os
segmentos estiverem em interligados (em paralelo).
11. Supondo que o programa tenha uma variável int contagem=12; determine a
equação para extrair quantidade de dezenas da variável contagem:
int dezena= / ;
12. Agora determine a equação para extrair a quantidade de unidades da
variável contagem.
Dica: Para exibir o número 12 é necessário extrair o número 1 e exibi-lo no
display da dezena e extrair o número 2 para exibi-lo no display da unidade.
Para extrair o número 2 temos que subtrair a quantidade de dezenas no valor
total.
Exemplo: unidade: 12 – 10 = 2;
unidade=contagem-(...*...);
13. Determine uma equação para obter o número de unidades a partir de um
número qualquer compreendido entre 0 e 99.
unidade= ;
Observe o programa a seguir:
#include <at89x52.h>
int contagem=0;
int dezena=0;
int unidade=0;
void main(){
while(1){
contagem=45;
dezena= //equação 2.1.1;
A quantidade de unidades de um número entre 0 e 99 e dada pelo seu
valor total subtraído da sua quantidade de dezenas vezes 10.
Importante: Lembre-se de salvar o desenvolvimento das suas
atividades periodicamente e evite a perda do seu trabalho!
5. www.u8051.com.br
unidade= //equação 2.1.2;
if(dezena==0) envia 0 para os segmentos;
... demais condições;
liga display da unidade;
delay_ms(3);
desliga display da unidade;
if(unidade==0) envia 0 para os segmentos;
... demais condições;
liga display da dezena;
delay_ms(3);
desliga display da dezena;
}
}
14. Se o programa anterior estivesse completo, qual número seria exibido nos
displays de 7-segmentos quando o 8051 executar este programa?
15. Com base no circuito 1.1, reescreva o programa acima totalmente na
linguagem C e complete todas as possibilidades para os testes da variável
unidade e variável dezena.
16. Digite o programa no JFE Editor e salve-o como MULTIPLEX2.C e em
seguida, grave-o no microcontrolador para verificar o seu funcionamento.
Observe que o programa que você acabou de criar apresenta uma grande
vantagem com relação ao primeiro programa: Agora é possível exibir qualquer
valor no display, bastando apenas modificar a variável contagem.
17. Tendo em vista que os comandos do seu programa destinam-se ao
acionamento dos displays, transforme-os numa função chamada exibe()
para melhorar a organização do seu programa conforme o modelo a seguir:
#include <at89x52.h>
#include<delay.h>
int contagem=45;
void exibe(int valor){
int dezena=valor/10; //equação 2.1.1;
int unidade=; //equação 2.1.2;
if(dezena==0) envia 0 para os segmentos;
... demais condições;
liga display da unidade;
delay_ms(3);
6. www.u8051.com.br
desliga display da unidade;
if(unidade==0) envia 0 para os segmentos;
... demais condições;
liga display da dezena;
delay_ms(3);
desliga display da dezena;
}
void main(){
while(1){
exibe(contagem);
}
}
Digite o programa no JFE Editor e salve-o como MULTIPLEX3.C e em seguida,
grave-o no microcontrolador para verificar o seu funcionamento.
18. Agora, invés de exibe um número fixo, modifique o programa para
incrementar a contagem quando você pressionar e soltar a tecla P3.0.
Note que essa função de incrementar a contagem é realizada pela tecla
CONTAGEM++ do circuito da figura 4.2.
19. Acrescente o recurso que permita decrementar a contagem ao pressionar
e soltar a tecla P3.1. Note que essa função de decrementar a contagem é
realizada pela tecla CONTAGEM-- do mesmo circuito (figura 4.2).
20. Insira o recurso de zerar a contagem, caso P3.2 seja pressionada.
21. Se o programador não empregasse a técnica da multiplexação para
implementar o contador de 0 a 99, quantos pinos do 8051 deveriam ser
dedicados à esta finalidade?
22. Sabendo que apenas um display está ativado por vez, seria correto afirmar
que a técnica da multiplexação reduz o consumo de energia do circuito?
23. Que conclusão você obteve sobre a técnica da multiplexação?
7. www.u8051.com.br
desliga display da unidade;
if(unidade==0) envia 0 para os segmentos;
... demais condições;
liga display da dezena;
delay_ms(3);
desliga display da dezena;
}
void main(){
while(1){
exibe(contagem);
}
}
Digite o programa no JFE Editor e salve-o como MULTIPLEX3.C e em seguida,
grave-o no microcontrolador para verificar o seu funcionamento.
18. Agora, invés de exibe um número fixo, modifique o programa para
incrementar a contagem quando você pressionar e soltar a tecla P3.0.
Note que essa função de incrementar a contagem é realizada pela tecla
CONTAGEM++ do circuito da figura 4.2.
19. Acrescente o recurso que permita decrementar a contagem ao pressionar
e soltar a tecla P3.1. Note que essa função de decrementar a contagem é
realizada pela tecla CONTAGEM-- do mesmo circuito (figura 4.2).
20. Insira o recurso de zerar a contagem, caso P3.2 seja pressionada.
21. Se o programador não empregasse a técnica da multiplexação para
implementar o contador de 0 a 99, quantos pinos do 8051 deveriam ser
dedicados à esta finalidade?
22. Sabendo que apenas um display está ativado por vez, seria correto afirmar
que a técnica da multiplexação reduz o consumo de energia do circuito?
23. Que conclusão você obteve sobre a técnica da multiplexação?