Buscar

elt024 06 displayDe7segmentos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 29 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Continue navegando


Prévia do material em texto

Display de 7 segmentos
Prof.MSc.Rodrigo Maximiano Antunes de Almeida
Universidade Federal de Itajuba´
rodrigomax@unifei.edu.br
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 1 / 29
Programac¸a˜o dos Perife´ricos
Revisa˜o
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 2 / 29
Programac¸a˜o dos Perife´ricos
Acesso a`s portas do microcontrolador
Porta Enderec¸o dos dados Enderec¸o de config. (TRIS)
PORTA 0xF80 0xF92
PORTB 0xF81 0xF93
PORTC 0xF82 0xF94
PORTD 0xF83 0xF95
PORTE 0xF84 0xF96
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 3 / 29
Programac¸a˜o dos Perife´ricos
Acesso a`s portas do microcontrolador
1// d e f i n e s para p o r t a s de e n t r a d a e s a ı´ d a
2#d e f i n e PORTD (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF83 )
3#d e f i n e TRISD (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF95 )
4// i n i c i o do programa
5 v o i d main ( v o i d ) interrupt 0
6{
7 // c o n f i g u r a n d o t o d o s os p i n o s como s a ı´ d a s
8 TRISD = 0b00000000 ;
9 // l i g a apenas os q u a t r o u´ l t i m o s l e d s
10 PORTD = 0b11110000 ;
11 //mante´m o s i s t e m a l i g a d o i n d e f i n i d a m e n t e
12 f o r ( ; ; ) ;
13}
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 4 / 29
Programac¸a˜o dos Perife´ricos
Acesso a`s portas do microcontrolador
1// b a s i c o . h
2// f u n c¸ o˜ e s de b i t
3#d e f i n e B i t S e t ( arg , b i t ) ( ( a r g ) |= (1<< b i t ) )
4#d e f i n e B i t C l r ( arg , b i t ) ( ( a r g ) &= ˜(1<< b i t ) )
5#d e f i n e B i t F l p ( arg , b i t ) ( ( a r g ) ˆ= (1<< b i t ) )
6#d e f i n e B i t T s t ( arg , b i t ) ( ( a r g ) & (1<< b i t ) )
7
8// d e f i n e s para r e g i s t r o s e s p e c i a i s
9#d e f i n e PORTA (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF80 )
10#d e f i n e PORTB (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF81 )
11#d e f i n e PORTC (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF82 )
12#d e f i n e PORTD (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF83 )
13#d e f i n e PORTE (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF84 )
14
15#d e f i n e TRISA (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF92 )
16#d e f i n e TRISB (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF93 )
17#d e f i n e TRISC (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF94 )
18#d e f i n e TRISD (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF95 )
19#d e f i n e TRISE (∗ ( v o l a t i l e n e a r uns igned char ∗) 0 xF96 )
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 5 / 29
Programac¸a˜o dos Perife´ricos
Configurac¸a˜o dos perife´ricos
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 6 / 29
Programac¸a˜o dos Perife´ricos
Configurac¸a˜o dos perife´ricos
Term. Descric¸a˜o
Configurar
como
Func¸a˜o
4 RA2/AN2/VREF-/CVREF RA2 Display 2
7 RA5/AN4/SS/C2OUT RA5 Display 1
8 RE0/AN5/CK1SPP RE0 RS-LCD / Display 3
10 RE2/AN7/OESPP RE2 RW-LCD / Display 4
19 RD0/SPP0 RD0
Barramento de dados
para o LCD/7seg/Led
20 RD1/SPP1 RD1
21 RD2/SPP2 RD2
22 RD3/SPP3 RD3
27 RD4/SPP4 RD4
Barramento de dados
para o LCD / 7seg /
Led
28 RD5/SPP5/P1B RD5
29 RD6/SPP6/P1C RD6
30 RD7/SPP7/P1D RD7
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 7 / 29
Display de 7 segmentos
Display de 7 segmentos
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 8 / 29
Display de 7 segmentos
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 9 / 29
Display de 7 segmentos
Evoluc¸a˜o das va´lvulas nixie
Objetivo: reproduzir algarismos (nu´meros) ara´bicos
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Efeito colateral: reproduzir letras
maiu´sculas: A, C, E, F, H, J, L, P, S, U, Z
minu´sculas: a, b, c, d, h, i, n, o, r, t, u
Reproduc¸a˜o de pequenas mensagens
Reproduc¸a˜o de valores hexadecimal
digitos hex: A, b, C, d, E, F
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 10 / 29
Display de 7 segmentos
http://www.hobbyprojects.com/the diode/seven segment display.html
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 11 / 29
Display de 7 segmentos
A montagem dos algarismos e´ feita ligando ou desligando cada um
dos 7 segmentos.
Por exemplo o nu´mero 2: e´ necessa´rio ligar apenas os segmentos/leds
a, b, g, e, d.1
Para acender o led e´ necessa´rio saber se o display e´ de catodo ou
anoˆdo comum.
catodo comum: cada led e´ aceso com 0 volts
anoˆdo comum: cada led e´ aceso com 5 volts
1Imagine a estrutura gfedcba, onde cada bit e´ um segmento. O nu´mero 2 e´
representado por 0b1011011 ou 0x5B
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 12 / 29
Display de 7 segmentos
Display g f e d c b a Hex. (0gfedcba)
0 0 1 1 1 1 1 1 3F
1 0 0 0 0 1 1 0 06
2 1 0 1 1 0 1 1 5B
3 1 0 0 1 1 1 1 4F
4 1 1 0 0 1 1 0 66
5 1 1 0 1 1 0 1 6D
6 1 1 1 1 1 0 1 7D
7 0 0 0 0 1 1 1 07
8 1 1 1 1 1 1 1 7F
9 1 1 0 1 1 1 1 6F
A 1 1 1 0 1 1 1 77
b 1 1 1 1 1 0 0 7C
C 0 1 1 1 0 0 1 39
d 1 0 1 1 1 1 0 5E
E 1 1 1 1 0 0 1 79
F 1 1 1 0 0 0 1 71
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 13 / 29
Display de 7 segmentos
Atenc¸a˜o
Alguns displays possuem o ponto decimal embutido como no caso da
nossa placa. Para liga´-lo e´ necessa´rio setar o bit 7 (MSB) da varia´vel
PORTD, que esta´ ligada diretamente ao display.
Cada segmento opera com um led que possue caracter´ısticas similares
aos leds discretos. Portanto cada um consome de 15 a 20 mA de
corrente. A ligac¸a˜o direta aos terminais do micro deve ser
acompanhada de um resistor de limitac¸a˜o de corrente.
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 14 / 29
Display de 7 segmentos
1 v o i d main ( v o i d )
2{
3 // v e t o r que armazena a c o n v e r s a˜ o
4 // dos a l g a r i s m o s para o d i s p l a y 7 seg
5 const char conv [ ] = {0x3F , 0x06 , 0x5B , 0x4F ,
6 0x66 , 0x6D , 0x7D , 0x07 ,
7 0x7F , 0x6F , 0x77 , 0x7C ,
8 0x39 , 0x5E , 0x79 , 0x71 } ;
9 uns igned i n t var , time ;
10 TRISD = 0x00 ;
11 TRISA = 0x00 ;
12 PORTA = 0xFF ;
13 f o r ( var = 0 ; var < 1 6 ; var++)
14 {
15 // c o l o c a os c a r a c t e r e s em s e q u eˆ n c i a na s a ı´ d a
16 PORTD = conv [ var ] ;
17 // apenas para c o n t a r tempo
18 f o r ( time = 0 ; time < 65000 ; time++) ;
19 }
20}
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 15 / 29
Display de 7 segmentos
Multiplexac¸a˜o de displays
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 16 / 29
Display de 7 segmentos
Multiplexac¸a˜o dos displays
Multiplexar: Consiste em combinar diversos sinais num u´nico canal de
transmissa˜o
Vantagens
Reduc¸a˜o de custos com cabeamento e tamanho de placa
Utilizac¸a˜o de uma quantidade maior de dispositivos que sa´ıdas
dispon´ıveis
Desvantagens
Perda de tamanho de banda devido a efeitos de overhead
Discretizac¸a˜o do tempo no acionamento dos dispositivos
Aumento da complexidade do sistema
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 17 / 29
Display de 7 segmentos
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 18 / 29
Display de 7 segmentos
Multiplexac¸a˜o dos displays
Pelo esquema da ligac¸a˜o dos displays na placa de desenvolvimento
podemos notar que os segmentos semelhantes de cada um dos 4
displays esta˜o ligados a um mesmo terminal
Os displays podem ser ativados/desativados atrave´s das linhas de
comando que sa˜o operadas cada uma por um bit:
Disp1 - RA5
Disp2 - RA2
Disp3 - RE0
Disp4 - RE2
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 19 / 29
Display de 7 segmentos
Multiplexac¸a˜o dos displays
Na˜o e´ poss´ıvel apresentar nu´meros diferentes de modo simultaˆneo
em cada um dos displays
A soluc¸a˜o e´ realizar uma multiplexac¸a˜o temporal
E´ ligadoapenas um display de cada vez.
O tempo ligado deve ser suficiente para que as ce´lulas oculares sejam
sensibilizadas (percepc¸a˜o retiniana)
A mudanc¸a deve ser ra´pida o suficiente para evitar flicker
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 20 / 29
Display de 7 segmentos
Multiplexac¸a˜o dos displays
Rotina para acionar displays de 7 segmentos multiplexados:
1 colocar no barramento de dados o valor a ser mostrado no display X
2 ligar o display X atrave´s da linha de comando
3 esperar um tempo adequado para evitar flicker
4 desligar o display
5 escolher o pro´ximo display (X+1)
6 voltar ao passo 1
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 21 / 29
Display de 7 segmentos
Criac¸a˜o da biblioteca disp7seg
Func¸o˜es necessa´rias para a criac¸a˜o de uma biblioteca de acionamento de
um conjunto de displays de 7 segmentos multiplexados:
Inicializac¸a˜o()
Configura os terminais de dados e de controle
MudaDigito()
Recebe um nu´mero entre 0 e F e uma posic¸a˜o
Armazena internamente os 4 nu´meros a serem exibidos
AtualizaDisplay() 2
Desliga o display atual, muda o nu´mero e liga o pro´ximo display
2Na˜o e´ recomendado que o tempo de exibic¸a˜o seja feito dentro da func¸a˜o. Isto pode
atrapalhar em sistemas maiores, principalmente sistemas que possuem interrupc¸o˜es.
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 22 / 29
Display de 7 segmentos
Criac¸a˜o da biblioteca disp7seg
Armazenamento de dados dentro de uma biblioteca
Usado sempre que for necessa´rio passar valores entre func¸o˜es dentro
de um mesmo arquivo ou armazenar valores que na˜o podem ser
perdidos ao longo da execuc¸a˜o do programa. Ex: o display que esta´
atualmente ligado
E´ feito atrave´s de varia´veis ”globais-locais”3
As varia´veis devem possuir o atributo static
Usar sempre o menor tamanho poss´ıvel pois estas varia´veis sa˜o
alocadas permanentemente, reduzindo a memo´ria RAM dispon´ıvel.
Devem ser inicializadas dentro da func¸a˜o principal da biblioteca
3Global dentro do escopo da biblioteca, local pois na˜o pode ser acessada fora do
arquivo
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 23 / 29
Display de 7 segmentos
Criac¸a˜o da biblioteca disp7seg
1#i n c l u d e "disp7seg.h"
2// v e t o r para armazenar a c o n v e r s a˜ o do d i s p l a y
3 s t a t i c const char valor [ ] = {0x3F , 0x06 , 0x5B , 0x4F , 0x66 , 0x6D ,
4 0x7D , 0x07 , 0x7F , 0x6F , 0x77 , 0x7C , 0x39 , 0x5E , 0x79 , 0x71 } ;
5 s t a t i c char display ; // armazena q u a l e´ o d i s p l a y d i s p o n ı´ v e l
6 s t a t i c char v0 , v1 , v2 , v3 ; // armazena o v a l o r a s e r e n v i a d o ao ←↩
d i s p l a y
7 v o i d MudaDigito ( char val , char pos ) {
8 i f ( pos == 0) {
9 v0 = val ;
10 }
11 i f ( pos == 1) {
12 v1 = val ;
13 }
14 i f ( pos == 2) {
15 v2 = val ;
16 }
17 i f ( pos == 3) {
18 v3 = val ;
19 }
20}
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 24 / 29
Display de 7 segmentos
Criac¸a˜o da biblioteca disp7seg
1 v o i d InicializaDisplays ( v o i d )
2{
3 // c o n f i g u r a c¸ a˜ o dos p i n o s de c o n t r o l e
4 BitClr ( TRISA , 2 ) ;
5 BitClr ( TRISA , 5 ) ;
6 BitClr ( TRISE , 0 ) ;
7 BitClr ( TRISE , 2 ) ;
8 // i n i c i a l i z a c¸ a˜ o das v a r i a´ v e i s
9 v0 = 0 ;
10 v1 = 0 ;
11 v2 = 0 ;
12 v3 = 0 ;
13 disp = 0 ;
14 // apenas AN0 e´ a n a l o´ g i c o
15 ADCON1 = 0b00001110 ;
16 // Porta de dados
17 TRISD = 0b00000000 ;
18}
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 25 / 29
Display de 7 segmentos
Criac¸a˜o da biblioteca disp7seg
1 v o i d AtualizaDisplay ( v o i d ) {
2 PORTA = 0x00 ; // d e s l i g a t o d o s os d i s p l a y s
3 PORTE = 0x00 ;
4 PORTD = 0x00 ; // d e s l i g a t o d o s os l e d s
5 s w i t c h ( display ) { // l i g a apenas o d i s p l a y da vez
6 case 0 :
7 PORTD = valor [ v0 ] ; BitSet ( PORTA , 5 ) ; display = 1 ;
8 break ;
9 case 1 :
10 PORTD = valor [ v1 ] ; BitSet ( PORTA , 2 ) ; display = 2 ;
11 break ;
12 case 2 :
13 PORTD = valor [ v2 ] ; BitSet ( PORTE , 0 ) ; display = 3 ;
14 break ;
15 case 3 :
16 PORTD = valor [ v3 ] ; BitSet ( PORTE , 2 ) ; display = 0 ;
17 break ;
18 d e f a u l t :
19 display = 0 ;
20 break ;
21 }
22}
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 26 / 29
Display de 7 segmentos
Criac¸a˜o da biblioteca disp7seg
Header4
1#i f n d e f DISP7SEG H
2 #define DISP7SEG_H
3 v o i d MudaDigito ( char val , char pos ) ;
4 v o i d AtualizaDisplay ( v o i d ) ;
5 v o i d InicializaDisplays ( v o i d ) ;
6#e n d i f
4E´ interessante notar que as varia´veis foram declaradas apenas no arquivo .c,
portanto na˜o sa˜o acess´ıveis fora do disp7seg.c. A u´nica maneira de mudar o valor delas
e´ atrave´s da func¸a˜o MudaDigito() e AtualizaDisplay().
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 27 / 29
Display de 7 segmentos
Utilizac¸a˜o da biblioteca disp7seg
Utilizac¸a˜o da biblioteca
A func¸a˜o AtualizaDisplay() deve ser chamada em intervalos regulares
dentro do programa principal
Ela deve ser repetida indefinidamente ate´ o termino da execuc¸a˜o do
programa
1// i n i c i o do programa
2 v o i d main ( v o i d )
3{
4 // d e c l a r a c¸ a˜ o de v a r i a´ v e i s
5 // execu c¸ a˜o do c o´ d i g o
6 // mudanc¸a dos v a l o r e s dos d i s p l a y s
7 f o r ( ; ; ) // l o o p i n f i n i t o
8 {
9 // a t u a l i z a c¸ a˜ o do d i s p l a y
10 }
11}
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 28 / 29
Display de 7 segmentos
Utilizac¸a˜o da biblioteca disp7seg
1// programa exemplo de u t i l i z a c¸ a˜ o da b i b l i o t e c a d i s p 7 s e g
2#i n c l u d e "basico.h"
3#i n c l u d e "config.h"
4#i n c l u d e "disp7seg.h"
5
6// i n i c i o do programa
7 v o i d main ( v o i d )
8{
9 uns igned i n t tempo ;
10 InicializaDisplays ( ) ;
11 MudaDigito ( 0 , 0 ) ;
12 MudaDigito ( 1 , 1 ) ;
13 MudaDigito ( 2 , 2 ) ;
14 MudaDigito ( 3 , 3 ) ;
15 f o r ( ; ; )
16 {
17 AtualizaDisplay ( ) ;
18 // g a s t a um tempo para e v i t a r o e f e i t o f l i c k e r
19 f o r ( tempo=0;tempo<1000; tempo++) ;
20 }
21}
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 29 / 29