Sei sulla pagina 1di 5

www.u8051.com.

br

Prtica 3
Contador de 0 a 9 com display 7-segmentos

Esta atividade contempla a utilizao do display de 7-segmentos para o desenvolvimento de um contador de 0 a 9 com as seguintes funcionalidades:

Contagem de 0 a 9;
Contagem crescente a cada 2 segundos (por tempo);

1. Observe o circuito abaixo:

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6

P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6

(seg.a) (seg.a) (seg.b) (seg.b) (seg.c) (seg.c) (seg.d) (seg.d) (seg.e) (seg.e) (seg.f) (seg.f) (seg.g) (seg.g)

c omum

www.u8051.com.br

Figura 4.1 Acionamento do display 7-segmentos

Sendo os segmentos do display do circuito da figura 4.1. acionados com nvel lgico 1, examine a tabela 7.1 do referencial terico (pgina 61) e responda: Qual comando far com que o display exiba o nmero 0? Resposta: P0=63;
Observao: Utilizar apenas os comandos de manipulao do Port inteiro (acesso ao Byte), e no o comando de acionamento de pino individual.

4.1. 4.2. 4.3. 4.4. 4.5. 4.6. 4.7. 4.8. 4.9.

Qual Qual Qual Qual Qual Qual Qual Qual Qual

comando comando comando comando comando comando comando comando comando

far far far far far far far far far

com com com com com com com com com

que que que que que que que que que

o o o o o o o o o

display display display display display display display display display

exiba exiba exiba exiba exiba exiba exiba exiba exiba

o o o o o o o o o

nmero nmero nmero nmero nmero nmero nmero nmero nmero

1? 2? 3? 4? 5? 6? 7? 8? 9?

4.10. Note que alm de ativar os segmentos do display, necessrio acionar o pino comum do display, o qual est conectado um transistor PNP. Qual comando far saturar o transistor PNP (ativa em nvel lgico baixo) e acionar o display de 7-segmentos?
Observao: Utilizar os comandos de acionamento de pino individual. Exemplo: P2_0=0;

3. Observe o trecho de programa abaixo.


#include<at89x52.h> #include<delay.h> void main(){

unsigned char unidade=0; P2_0=...; P0=63; delay_ms(2000);

www.u8051.com.br
//ativa display da unidade //exibe 0 no display //aguarda 2 segundos

O programa anterior consiste numa dica para a prxima atividade. Observe que o comando P2_0=...; est incompleto, pois os pontinhos devem ser substitudos pelo comando que corresponda ao comentrio, o qual foi respondido na questo 4.10. Digite e compile o programa no JFE Editor. Em seguida grave-o no microcontrolador para observar o seu funcionamento.
Cole aqui o cdigo fonte do seu programa.

4. Elabore um programa para o circuito da fig.4.1 que funcione como contador de 0 a 9, com incremento da contagem a cada 2 segundos.

5. Empregue a estrutura de repetio citada no referencial terico (8051 Teoria - pg. 54) para que o programa execute eternamente.
Cole aqui o cdigo fonte do seu programa.

6. Para otimizar o cdigo fonte e torn-lo til noutras aplicaes que necessitem do display de 7-segmentos, reescreva o programa do contador de 0 a 9 com incremento a cada 2 segundos empregando a estrutura de repetio if ilustrada a seguir:
#include <at89x52.h> #include <delay.h> int contagem=0; void main(){ ativa pino comum do display;

www.u8051.com.br
while(1){ if(condicao) if(condicao) if(condicao) if(condicao) P0=63; ... ... ... //envia //envia //envia //envia 0 1 2 3 para para para para os os os os segmentos; segmentos; segmentos; segmentos;

... demais condies; ... ... } } //aguarda por 2 segundos; //incrementa a varivel contagem;

7. Note que no programa anterior, o contador aparentemente, conta at 9. Na verdade, a varivel contagem continua incrementando, embora no seja possvel visualiza no display. Isto ocorre por que aps a varivel contagem atingir o valor 10, nenhuma condio if satisfeita e, portanto, o display no mais atualizado. Empregue a estrutura de controle if-else para que o contador execute a transio de 9 para zero e reinicie a contagem.

Se voc no dispe do CD-ROM de estudos, poder conferir esta atividade em videoaula acessando o seguinte canal do YouTube:

HTTP://www.youtube.com/user/cmg3k1#p/u/3/lWFjB0x8siw 8. De acordo com o livro 8051 Teoria (pgina 32), a linguagem C oferece diversos tipos de dados para que o programador faa o melhor uso da memria quanto lhe for possvel. No trecho de programa do captulo 3 desta atividade foi declarada uma varivel do tipo: unsigned char unidade=0; Ento pergunta-se:
a.

O tipo desta varivel (acima, em negrito) a que melhor otimiza o uso da memria do 8051?

www.u8051.com.br b. Existe algum outro tipo de declarao de varivel, que neste caso ofereceria otimizao similar ou melhor de memria RAM do que a unsigned char? Qual? c.

Que outros tipos de variveis funcionariam neste programa? Cite um exemplo e mencione tambm, se haveria alguma vantagem ou desvantagem.
O desenvolvimento desta atividade ser utilizado como base para a prxima atividade. Nos captulos 5 e 6 - questo 10 deste livro possvel encontrar uma dica para as atividades deste captulo confira!