SlideShare ist ein Scribd-Unternehmen logo
1 von 29
Downloaden Sie, um offline zu lesen
Display de 7 segmentos
Prof.MSc.Rodrigo Maximiano Antunes de Almeida
Universidade Federal de Itajub´a
rodrigomax@unifei.edu.br
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 1 / 29
Programa¸c˜ao dos Perif´ericos
Revis˜ao
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 2 / 29
Programa¸c˜ao dos Perif´ericos
Acesso `as portas do microcontrolador
Porta Endere¸co dos dados Endere¸co 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
Programa¸c˜ao dos Perif´ericos
Acesso `as portas do microcontrolador
1// d e f i n e s para p o r t a s de entrada e s a´ı d a
2#d e f i n e PORTD (∗( v o l a t i l e near unsigned char ∗) 0xF83 )
3#d e f i n e TRISD (∗( v o l a t i l e near unsigned char ∗) 0xF95 )
4// i n i c i o do programa
5void main ( void ) interrupt 0
6{
7 // configurando todos os pinos como s a´ı d a s
8 TRISD = 0b00000000 ;
9 // l i g a apenas os quatro ´u l t i m o s l e d s
10 PORTD = 0b11110000 ;
11 //mant´em o sistema 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
Programa¸c˜ao dos Perif´ericos
Acesso `as portas do microcontrolador
1// b a s i c o . h
2// fun¸c˜oes de b i t
3#d e f i n e BitSet ( arg , b i t ) (( arg ) |= (1<< b i t ) )
4#d e f i n e B i t C l r ( arg , b i t ) (( arg ) &= ˜(1<< b i t ) )
5#d e f i n e B i t F l p ( arg , b i t ) (( arg ) ˆ= (1<< b i t ) )
6#d e f i n e BitTst ( arg , b i t ) (( arg ) & (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 near unsigned char ∗) 0xF80 )
10#d e f i n e PORTB (∗( v o l a t i l e near unsigned char ∗) 0xF81 )
11#d e f i n e PORTC (∗( v o l a t i l e near unsigned char ∗) 0xF82 )
12#d e f i n e PORTD (∗( v o l a t i l e near unsigned char ∗) 0xF83 )
13#d e f i n e PORTE (∗( v o l a t i l e near unsigned char ∗) 0xF84 )
14
15#d e f i n e TRISA (∗( v o l a t i l e near unsigned char ∗) 0xF92 )
16#d e f i n e TRISB (∗( v o l a t i l e near unsigned char ∗) 0xF93 )
17#d e f i n e TRISC (∗( v o l a t i l e near unsigned char ∗) 0xF94 )
18#d e f i n e TRISD (∗( v o l a t i l e near unsigned char ∗) 0xF95 )
19#d e f i n e TRISE (∗( v o l a t i l e near unsigned char ∗) 0xF96 )
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 5 / 29
Programa¸c˜ao dos Perif´ericos
Configura¸c˜ao dos perif´ericos
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 6 / 29
Programa¸c˜ao dos Perif´ericos
Configura¸c˜ao dos perif´ericos
Term. Descri¸c˜ao
Configurar
como
Fun¸c˜ao
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
Evolu¸c˜ao das v´alvulas nixie
Objetivo: reproduzir algarismos (n´umeros) ar´abicos
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Efeito colateral: reproduzir letras
mai´usculas: A, C, E, F, H, J, L, P, S, U, Z
min´usculas: a, b, c, d, h, i, n, o, r, t, u
Reprodu¸c˜ao de pequenas mensagens
Reprodu¸c˜ao 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 d
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 n´umero 2: ´e necess´ario ligar apenas os segmentos/leds
a, b, g, e, d.1
Para acender o led ´e necess´ario saber se o display ´e de catodo ou
anˆodo comum.
catodo comum: cada led ´e aceso com 0 volts
anˆodo comum: cada led ´e aceso com 5 volts
1
Imagine a estrutura gfedcba, onde cada bit ´e um segmento. O n´umero 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
Aten¸c˜ao
Alguns displays possuem o ponto decimal embutido como no caso da
nossa placa. Para lig´a-lo ´e necess´ario setar o bit 7 (MSB) da vari´avel
PORTD, que est´a 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 liga¸c˜ao direta aos terminais do micro deve ser
acompanhada de um resistor de limita¸c˜ao de corrente.
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 14 / 29
Display de 7 segmentos
1void main ( void )
2{
3 // v e t o r que armazena a convers˜ao
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 unsigned i n t var , time ;
10 TRISD = 0x00 ;
11 TRISA = 0x00 ;
12 PORTA = 0xFF ;
13 f o r ( var = 0; var < 16; var++)
14 {
15 // c ol o ca os c a r a c t e r e s em s eq uˆen cia na s a´ı d a
16 PORTD = conv [ var ] ;
17 // apenas para contar 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
Multiplexa¸c˜ao de displays
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 16 / 29
Display de 7 segmentos
Multiplexa¸c˜ao dos displays
Multiplexar: Consiste em combinar diversos sinais num ´unico canal de
transmiss˜ao
Vantagens
Redu¸c˜ao de custos com cabeamento e tamanho de placa
Utiliza¸c˜ao de uma quantidade maior de dispositivos que sa´ıdas
dispon´ıveis
Desvantagens
Perda de tamanho de banda devido a efeitos de overhead
Discretiza¸c˜ao 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
Multiplexa¸c˜ao dos displays
Pelo esquema da liga¸c˜ao dos displays na placa de desenvolvimento
podemos notar que os segmentos semelhantes de cada um dos 4
displays est˜ao ligados a um mesmo terminal
Os displays podem ser ativados/desativados atrav´es das linhas de
comando que s˜ao 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
Multiplexa¸c˜ao dos displays
N˜ao ´e poss´ıvel apresentar n´umeros diferentes de modo simultˆaneo
em cada um dos displays
A solu¸c˜ao ´e realizar uma multiplexa¸c˜ao temporal
´E ligado apenas um display de cada vez.
O tempo ligado deve ser suficiente para que as c´elulas oculares sejam
sensibilizadas (percep¸c˜ao retiniana)
A mudan¸ca deve ser r´apida o suficiente para evitar flicker
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 20 / 29
Display de 7 segmentos
Multiplexa¸c˜ao 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 atrav´es da linha de comando
3 esperar um tempo adequado para evitar flicker
4 desligar o display
5 escolher o pr´oximo display (X+1)
6 voltar ao passo 1
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 21 / 29
Display de 7 segmentos
Cria¸c˜ao da biblioteca disp7seg
Fun¸c˜oes necess´arias para a cria¸c˜ao de uma biblioteca de acionamento de
um conjunto de displays de 7 segmentos multiplexados:
Inicializa¸c˜ao()
Configura os terminais de dados e de controle
MudaDigito()
Recebe um n´umero entre 0 e F e uma posi¸c˜ao
Armazena internamente os 4 n´umeros a serem exibidos
AtualizaDisplay() 2
Desliga o display atual, muda o n´umero e liga o pr´oximo display
2
N˜ao ´e recomendado que o tempo de exibi¸c˜ao seja feito dentro da fun¸c˜ao. Isto pode
atrapalhar em sistemas maiores, principalmente sistemas que possuem interrup¸c˜oes.
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 22 / 29
Display de 7 segmentos
Cria¸c˜ao da biblioteca disp7seg
Armazenamento de dados dentro de uma biblioteca
Usado sempre que for necess´ario passar valores entre fun¸c˜oes dentro
de um mesmo arquivo ou armazenar valores que n˜ao podem ser
perdidos ao longo da execu¸c˜ao do programa. Ex: o display que est´a
atualmente ligado
´E feito atrav´es de vari´aveis ”globais-locais”3
As vari´aveis devem possuir o atributo static
Usar sempre o menor tamanho poss´ıvel pois estas vari´aveis s˜ao
alocadas permanentemente, reduzindo a mem´oria RAM dispon´ıvel.
Devem ser inicializadas dentro da fun¸c˜ao principal da biblioteca
3
Global dentro do escopo da biblioteca, local pois n˜ao pode ser acessada fora do
arquivo
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 23 / 29
Display de 7 segmentos
Cria¸c˜ao da biblioteca disp7seg
1#i n c l u d e "disp7seg.h"
2// v e t o r para armazenar a convers˜ao 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 qual ´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 enviado ao ←
d i s p l a y
7void 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
Cria¸c˜ao da biblioteca disp7seg
1void InicializaDisplays ( void )
2{
3 // c o n f i g u r a ¸c˜a o dos pinos 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
Cria¸c˜ao da biblioteca disp7seg
1void AtualizaDisplay ( void ) {
2 PORTA = 0x00 ; // d e s l i g a todos os d i s p l a y s
3 PORTE = 0x00 ;
4 PORTD = 0x00 ; // d e s l i g a todos os l e d s
5 switch ( 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
Cria¸c˜ao da biblioteca disp7seg
Header4
1#i f n d e f DISP7SEG H
2 #define DISP7SEG_H
3 void MudaDigito ( char val , char pos ) ;
4 void AtualizaDisplay ( void ) ;
5 void InicializaDisplays ( void ) ;
6#e n d i f
4 ´E interessante notar que as vari´aveis foram declaradas apenas no arquivo .c,
portanto n˜ao s˜ao acess´ıveis fora do disp7seg.c. A ´unica maneira de mudar o valor delas
´e atrav´es da fun¸c˜ao MudaDigito() e AtualizaDisplay().
ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 27 / 29
Display de 7 segmentos
Utiliza¸c˜ao da biblioteca disp7seg
Utiliza¸c˜ao da biblioteca
A fun¸c˜ao AtualizaDisplay() deve ser chamada em intervalos regulares
dentro do programa principal
Ela deve ser repetida indefinidamente at´e o termino da execu¸c˜ao do
programa
1// i n i c i o do programa
2void main ( void )
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˜ao do c´odigo
6 //mudan¸ca dos v a l o r e s dos d i s p l a y s
7 f o r ( ; ; ) // loop 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
Utiliza¸c˜ao 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
7void main ( void )
8{
9 unsigned 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 // gasta 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

Weitere ähnliche Inhalte

Was ist angesagt?

Manual De Aterramento TemporáRio
Manual De Aterramento TemporáRioManual De Aterramento TemporáRio
Manual De Aterramento TemporáRio
Santos de Castro
 
Exercicios diodo-e-retificadores-v (1)
Exercicios diodo-e-retificadores-v (1)Exercicios diodo-e-retificadores-v (1)
Exercicios diodo-e-retificadores-v (1)
Ivanir Silva
 
Transistor bipolar
Transistor bipolarTransistor bipolar
Transistor bipolar
camarrotuga
 

Was ist angesagt? (20)

Curso de eletrônica basíca
Curso de eletrônica basícaCurso de eletrônica basíca
Curso de eletrônica basíca
 
Manual De Aterramento TemporáRio
Manual De Aterramento TemporáRioManual De Aterramento TemporáRio
Manual De Aterramento TemporáRio
 
Aula18(3)
Aula18(3)Aula18(3)
Aula18(3)
 
MANUAL MULTÍMETRO 8PJ DT830B
MANUAL MULTÍMETRO 8PJ DT830BMANUAL MULTÍMETRO 8PJ DT830B
MANUAL MULTÍMETRO 8PJ DT830B
 
Projeto da Fonte de Alimentação Regulada
Projeto da Fonte de Alimentação ReguladaProjeto da Fonte de Alimentação Regulada
Projeto da Fonte de Alimentação Regulada
 
Aulas 10 e 11 - Álgebra de Boole
Aulas 10 e 11 - Álgebra de BooleAulas 10 e 11 - Álgebra de Boole
Aulas 10 e 11 - Álgebra de Boole
 
Lista de exercícios potência ca e triângulo de potências
Lista de exercícios potência ca e triângulo de potênciasLista de exercícios potência ca e triângulo de potências
Lista de exercícios potência ca e triângulo de potências
 
Levantamento de carga
Levantamento de cargaLevantamento de carga
Levantamento de carga
 
Solucionário Capitulo4 FOX
Solucionário Capitulo4 FOXSolucionário Capitulo4 FOX
Solucionário Capitulo4 FOX
 
Principios de Eletronica
Principios de EletronicaPrincipios de Eletronica
Principios de Eletronica
 
Circuitos de corrente alternada
Circuitos de corrente alternadaCircuitos de corrente alternada
Circuitos de corrente alternada
 
Amplificador operacional
Amplificador operacionalAmplificador operacional
Amplificador operacional
 
Resolução do capítulo 3 franco brunetti
Resolução do capítulo 3   franco brunettiResolução do capítulo 3   franco brunetti
Resolução do capítulo 3 franco brunetti
 
Aula 07 derivadas - regras de derivação - parte 1
Aula 07   derivadas - regras de derivação - parte 1Aula 07   derivadas - regras de derivação - parte 1
Aula 07 derivadas - regras de derivação - parte 1
 
Exercicios diodo-e-retificadores-v (1)
Exercicios diodo-e-retificadores-v (1)Exercicios diodo-e-retificadores-v (1)
Exercicios diodo-e-retificadores-v (1)
 
Lista exercicio prova_1
Lista exercicio prova_1Lista exercicio prova_1
Lista exercicio prova_1
 
Lista exerc eletro-basica_resol
Lista exerc eletro-basica_resolLista exerc eletro-basica_resol
Lista exerc eletro-basica_resol
 
Transistor bipolar
Transistor bipolarTransistor bipolar
Transistor bipolar
 
96893253 tabela-centroides-de-areas
96893253 tabela-centroides-de-areas96893253 tabela-centroides-de-areas
96893253 tabela-centroides-de-areas
 
Arduino introdução - 10 projectos
Arduino   introdução - 10 projectosArduino   introdução - 10 projectos
Arduino introdução - 10 projectos
 

Andere mochten auch

Apostila de PIC
Apostila de PICApostila de PIC
Apostila de PIC
luizgraf
 
Microcontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoMicrocontroladores PIC - Introdução
Microcontroladores PIC - Introdução
Fabio Souza
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônica
Fabio Souza
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
Isvaldo Souza
 

Andere mochten auch (20)

Microcontroladores PIC - Exercícios para estudos de I/O digitais
Microcontroladores PIC - Exercícios para estudos de I/O digitaisMicrocontroladores PIC - Exercícios para estudos de I/O digitais
Microcontroladores PIC - Exercícios para estudos de I/O digitais
 
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem CMicrocontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
 
Resumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroCResumo linguagem c para microcontroladores PIC usando MikroC
Resumo linguagem c para microcontroladores PIC usando MikroC
 
Microcontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas DigitaisMicrocontroladores PIC - Entradas e saídas Digitais
Microcontroladores PIC - Entradas e saídas Digitais
 
Apostila pic 16f877
Apostila pic 16f877Apostila pic 16f877
Apostila pic 16f877
 
Apostila de PIC
Apostila de PICApostila de PIC
Apostila de PIC
 
Microcontroladores PIC - Introdução
Microcontroladores PIC - IntroduçãoMicrocontroladores PIC - Introdução
Microcontroladores PIC - Introdução
 
Contadores
ContadoresContadores
Contadores
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônica
 
Apostila Arduino - FBS Eletrônica
Apostila Arduino - FBS EletrônicaApostila Arduino - FBS Eletrônica
Apostila Arduino - FBS Eletrônica
 
Registradores contadores memórias_r2
Registradores contadores memórias_r2Registradores contadores memórias_r2
Registradores contadores memórias_r2
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
 
Curso de Arduino Completo
Curso de Arduino CompletoCurso de Arduino Completo
Curso de Arduino Completo
 
Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015
 
Display segmentos
Display segmentosDisplay segmentos
Display segmentos
 
Display de 7 segmentos
Display de 7 segmentosDisplay de 7 segmentos
Display de 7 segmentos
 
Comandos de Controle de Programa em C - Resumo
Comandos de Controle de Programa em C - ResumoComandos de Controle de Programa em C - Resumo
Comandos de Controle de Programa em C - Resumo
 
Linguagem C - Resumo dos comandos de controle de programa
Linguagem C - Resumo dos comandos de controle de programaLinguagem C - Resumo dos comandos de controle de programa
Linguagem C - Resumo dos comandos de controle de programa
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
Exercicios LCD E ADC
Exercicios LCD E ADCExercicios LCD E ADC
Exercicios LCD E ADC
 

Ähnlich wie Display de 7 segmentos multiplexados

Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registros
Rodrigo Almeida
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
elliando dias
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDF
engelrfs
 

Ähnlich wie Display de 7 segmentos multiplexados (20)

Acessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontroladorAcessando os periféricos de um microcontrolador
Acessando os periféricos de um microcontrolador
 
Introdução à programação embarcada
Introdução à programação embarcadaIntrodução à programação embarcada
Introdução à programação embarcada
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
LEON3 e KIT ALTERA.
LEON3 e KIT ALTERA.LEON3 e KIT ALTERA.
LEON3 e KIT ALTERA.
 
Revisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas EmbarcadosRevisão de linguagem C para Sistemas Embarcados
Revisão de linguagem C para Sistemas Embarcados
 
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novoArduino sist u_controlados_intro_eletrica_2019_keynote_novo
Arduino sist u_controlados_intro_eletrica_2019_keynote_novo
 
Ko 7 kdp-06
Ko 7 kdp-06Ko 7 kdp-06
Ko 7 kdp-06
 
Pro2 12p
Pro2 12pPro2 12p
Pro2 12p
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduino
 
Cartao referencia ccs
Cartao referencia ccsCartao referencia ccs
Cartao referencia ccs
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Circuitos combinatorios
Circuitos combinatoriosCircuitos combinatorios
Circuitos combinatorios
 
Workshop Microchip Curiosity Board
Workshop Microchip Curiosity BoardWorkshop Microchip Curiosity Board
Workshop Microchip Curiosity Board
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registros
 
UFCD-6072-Microcontroladores-Registos.pptx
UFCD-6072-Microcontroladores-Registos.pptxUFCD-6072-Microcontroladores-Registos.pptx
UFCD-6072-Microcontroladores-Registos.pptx
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
38698469 slides-arduino
38698469 slides-arduino38698469 slides-arduino
38698469 slides-arduino
 
Cheat sheet Mips 32 bits
Cheat sheet Mips 32 bitsCheat sheet Mips 32 bits
Cheat sheet Mips 32 bits
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDF
 

Mehr von Rodrigo Almeida

Projeto de uma controladora de drivers
Projeto de uma controladora de driversProjeto de uma controladora de drivers
Projeto de uma controladora de drivers
Rodrigo Almeida
 
Segurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virusSegurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virus
Rodrigo Almeida
 

Mehr von Rodrigo Almeida (20)

Embedded systems development Defcon 19
Embedded systems development Defcon 19Embedded systems development Defcon 19
Embedded systems development Defcon 19
 
As diferentes engenharias
As diferentes engenhariasAs diferentes engenharias
As diferentes engenharias
 
Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Testing de software en instrumentos de pesar de funcionamiento no automatico ...Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Testing de software en instrumentos de pesar de funcionamiento no automatico ...
 
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
 
Cryptology - Antônio Lacerda
Cryptology - Antônio LacerdaCryptology - Antônio Lacerda
Cryptology - Antônio Lacerda
 
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
 
Projeto de uma controladora de drivers
Projeto de uma controladora de driversProjeto de uma controladora de drivers
Projeto de uma controladora de drivers
 
Kernel com requisitos temporais
Kernel com requisitos temporaisKernel com requisitos temporais
Kernel com requisitos temporais
 
Kernel cooperativo
Kernel cooperativoKernel cooperativo
Kernel cooperativo
 
Definição de processos
Definição de processosDefinição de processos
Definição de processos
 
Ponteiros de Função
Ponteiros de FunçãoPonteiros de Função
Ponteiros de Função
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffers
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcados
 
Segurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virusSegurança de sistemas: invasões, engenharia reversa e análise de virus
Segurança de sistemas: invasões, engenharia reversa e análise de virus
 
Comunicação serial
Comunicação serialComunicação serial
Comunicação serial
 
Utilizando um Display de LCD
Utilizando um Display de LCDUtilizando um Display de LCD
Utilizando um Display de LCD
 
Leitura de teclas com arranjo matricial
Leitura de teclas com arranjo matricialLeitura de teclas com arranjo matricial
Leitura de teclas com arranjo matricial
 
Operações com Bits
Operações com BitsOperações com Bits
Operações com Bits
 

Kürzlich hochgeladen

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
Natalia Granato
 

Kürzlich hochgeladen (6)

Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Display de 7 segmentos multiplexados

  • 1. Display de 7 segmentos Prof.MSc.Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajub´a rodrigomax@unifei.edu.br ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 1 / 29
  • 2. Programa¸c˜ao dos Perif´ericos Revis˜ao ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 2 / 29
  • 3. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador Porta Endere¸co dos dados Endere¸co 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
  • 4. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1// d e f i n e s para p o r t a s de entrada e s a´ı d a 2#d e f i n e PORTD (∗( v o l a t i l e near unsigned char ∗) 0xF83 ) 3#d e f i n e TRISD (∗( v o l a t i l e near unsigned char ∗) 0xF95 ) 4// i n i c i o do programa 5void main ( void ) interrupt 0 6{ 7 // configurando todos os pinos como s a´ı d a s 8 TRISD = 0b00000000 ; 9 // l i g a apenas os quatro ´u l t i m o s l e d s 10 PORTD = 0b11110000 ; 11 //mant´em o sistema 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
  • 5. Programa¸c˜ao dos Perif´ericos Acesso `as portas do microcontrolador 1// b a s i c o . h 2// fun¸c˜oes de b i t 3#d e f i n e BitSet ( arg , b i t ) (( arg ) |= (1<< b i t ) ) 4#d e f i n e B i t C l r ( arg , b i t ) (( arg ) &= ˜(1<< b i t ) ) 5#d e f i n e B i t F l p ( arg , b i t ) (( arg ) ˆ= (1<< b i t ) ) 6#d e f i n e BitTst ( arg , b i t ) (( arg ) & (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 near unsigned char ∗) 0xF80 ) 10#d e f i n e PORTB (∗( v o l a t i l e near unsigned char ∗) 0xF81 ) 11#d e f i n e PORTC (∗( v o l a t i l e near unsigned char ∗) 0xF82 ) 12#d e f i n e PORTD (∗( v o l a t i l e near unsigned char ∗) 0xF83 ) 13#d e f i n e PORTE (∗( v o l a t i l e near unsigned char ∗) 0xF84 ) 14 15#d e f i n e TRISA (∗( v o l a t i l e near unsigned char ∗) 0xF92 ) 16#d e f i n e TRISB (∗( v o l a t i l e near unsigned char ∗) 0xF93 ) 17#d e f i n e TRISC (∗( v o l a t i l e near unsigned char ∗) 0xF94 ) 18#d e f i n e TRISD (∗( v o l a t i l e near unsigned char ∗) 0xF95 ) 19#d e f i n e TRISE (∗( v o l a t i l e near unsigned char ∗) 0xF96 ) ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 5 / 29
  • 6. Programa¸c˜ao dos Perif´ericos Configura¸c˜ao dos perif´ericos ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 6 / 29
  • 7. Programa¸c˜ao dos Perif´ericos Configura¸c˜ao dos perif´ericos Term. Descri¸c˜ao Configurar como Fun¸c˜ao 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
  • 8. Display de 7 segmentos Display de 7 segmentos ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 8 / 29
  • 9. Display de 7 segmentos ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 9 / 29
  • 10. Display de 7 segmentos Evolu¸c˜ao das v´alvulas nixie Objetivo: reproduzir algarismos (n´umeros) ar´abicos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Efeito colateral: reproduzir letras mai´usculas: A, C, E, F, H, J, L, P, S, U, Z min´usculas: a, b, c, d, h, i, n, o, r, t, u Reprodu¸c˜ao de pequenas mensagens Reprodu¸c˜ao de valores hexadecimal digitos hex: A, b, C, d, E, F ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 10 / 29
  • 11. Display de 7 segmentos http://www.hobbyprojects.com/the diode/seven segment d ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 11 / 29
  • 12. Display de 7 segmentos A montagem dos algarismos ´e feita ligando ou desligando cada um dos 7 segmentos. Por exemplo o n´umero 2: ´e necess´ario ligar apenas os segmentos/leds a, b, g, e, d.1 Para acender o led ´e necess´ario saber se o display ´e de catodo ou anˆodo comum. catodo comum: cada led ´e aceso com 0 volts anˆodo comum: cada led ´e aceso com 5 volts 1 Imagine a estrutura gfedcba, onde cada bit ´e um segmento. O n´umero 2 ´e representado por 0b1011011 ou 0x5B ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 12 / 29
  • 13. 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
  • 14. Display de 7 segmentos Aten¸c˜ao Alguns displays possuem o ponto decimal embutido como no caso da nossa placa. Para lig´a-lo ´e necess´ario setar o bit 7 (MSB) da vari´avel PORTD, que est´a 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 liga¸c˜ao direta aos terminais do micro deve ser acompanhada de um resistor de limita¸c˜ao de corrente. ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 14 / 29
  • 15. Display de 7 segmentos 1void main ( void ) 2{ 3 // v e t o r que armazena a convers˜ao 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 unsigned i n t var , time ; 10 TRISD = 0x00 ; 11 TRISA = 0x00 ; 12 PORTA = 0xFF ; 13 f o r ( var = 0; var < 16; var++) 14 { 15 // c ol o ca os c a r a c t e r e s em s eq uˆen cia na s a´ı d a 16 PORTD = conv [ var ] ; 17 // apenas para contar tempo 18 f o r ( time = 0; time < 65000; time++); 19 } 20} ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 15 / 29
  • 16. Display de 7 segmentos Multiplexa¸c˜ao de displays ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 16 / 29
  • 17. Display de 7 segmentos Multiplexa¸c˜ao dos displays Multiplexar: Consiste em combinar diversos sinais num ´unico canal de transmiss˜ao Vantagens Redu¸c˜ao de custos com cabeamento e tamanho de placa Utiliza¸c˜ao de uma quantidade maior de dispositivos que sa´ıdas dispon´ıveis Desvantagens Perda de tamanho de banda devido a efeitos de overhead Discretiza¸c˜ao do tempo no acionamento dos dispositivos Aumento da complexidade do sistema ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 17 / 29
  • 18. Display de 7 segmentos ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 18 / 29
  • 19. Display de 7 segmentos Multiplexa¸c˜ao dos displays Pelo esquema da liga¸c˜ao dos displays na placa de desenvolvimento podemos notar que os segmentos semelhantes de cada um dos 4 displays est˜ao ligados a um mesmo terminal Os displays podem ser ativados/desativados atrav´es das linhas de comando que s˜ao 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
  • 20. Display de 7 segmentos Multiplexa¸c˜ao dos displays N˜ao ´e poss´ıvel apresentar n´umeros diferentes de modo simultˆaneo em cada um dos displays A solu¸c˜ao ´e realizar uma multiplexa¸c˜ao temporal ´E ligado apenas um display de cada vez. O tempo ligado deve ser suficiente para que as c´elulas oculares sejam sensibilizadas (percep¸c˜ao retiniana) A mudan¸ca deve ser r´apida o suficiente para evitar flicker ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 20 / 29
  • 21. Display de 7 segmentos Multiplexa¸c˜ao 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 atrav´es da linha de comando 3 esperar um tempo adequado para evitar flicker 4 desligar o display 5 escolher o pr´oximo display (X+1) 6 voltar ao passo 1 ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 21 / 29
  • 22. Display de 7 segmentos Cria¸c˜ao da biblioteca disp7seg Fun¸c˜oes necess´arias para a cria¸c˜ao de uma biblioteca de acionamento de um conjunto de displays de 7 segmentos multiplexados: Inicializa¸c˜ao() Configura os terminais de dados e de controle MudaDigito() Recebe um n´umero entre 0 e F e uma posi¸c˜ao Armazena internamente os 4 n´umeros a serem exibidos AtualizaDisplay() 2 Desliga o display atual, muda o n´umero e liga o pr´oximo display 2 N˜ao ´e recomendado que o tempo de exibi¸c˜ao seja feito dentro da fun¸c˜ao. Isto pode atrapalhar em sistemas maiores, principalmente sistemas que possuem interrup¸c˜oes. ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 22 / 29
  • 23. Display de 7 segmentos Cria¸c˜ao da biblioteca disp7seg Armazenamento de dados dentro de uma biblioteca Usado sempre que for necess´ario passar valores entre fun¸c˜oes dentro de um mesmo arquivo ou armazenar valores que n˜ao podem ser perdidos ao longo da execu¸c˜ao do programa. Ex: o display que est´a atualmente ligado ´E feito atrav´es de vari´aveis ”globais-locais”3 As vari´aveis devem possuir o atributo static Usar sempre o menor tamanho poss´ıvel pois estas vari´aveis s˜ao alocadas permanentemente, reduzindo a mem´oria RAM dispon´ıvel. Devem ser inicializadas dentro da fun¸c˜ao principal da biblioteca 3 Global dentro do escopo da biblioteca, local pois n˜ao pode ser acessada fora do arquivo ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 23 / 29
  • 24. Display de 7 segmentos Cria¸c˜ao da biblioteca disp7seg 1#i n c l u d e "disp7seg.h" 2// v e t o r para armazenar a convers˜ao 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 qual ´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 enviado ao ← d i s p l a y 7void 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
  • 25. Display de 7 segmentos Cria¸c˜ao da biblioteca disp7seg 1void InicializaDisplays ( void ) 2{ 3 // c o n f i g u r a ¸c˜a o dos pinos 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
  • 26. Display de 7 segmentos Cria¸c˜ao da biblioteca disp7seg 1void AtualizaDisplay ( void ) { 2 PORTA = 0x00 ; // d e s l i g a todos os d i s p l a y s 3 PORTE = 0x00 ; 4 PORTD = 0x00 ; // d e s l i g a todos os l e d s 5 switch ( 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
  • 27. Display de 7 segmentos Cria¸c˜ao da biblioteca disp7seg Header4 1#i f n d e f DISP7SEG H 2 #define DISP7SEG_H 3 void MudaDigito ( char val , char pos ) ; 4 void AtualizaDisplay ( void ) ; 5 void InicializaDisplays ( void ) ; 6#e n d i f 4 ´E interessante notar que as vari´aveis foram declaradas apenas no arquivo .c, portanto n˜ao s˜ao acess´ıveis fora do disp7seg.c. A ´unica maneira de mudar o valor delas ´e atrav´es da fun¸c˜ao MudaDigito() e AtualizaDisplay(). ELT024 Display de 7 segmentos rodrigomax@unifei.edu.br 27 / 29
  • 28. Display de 7 segmentos Utiliza¸c˜ao da biblioteca disp7seg Utiliza¸c˜ao da biblioteca A fun¸c˜ao AtualizaDisplay() deve ser chamada em intervalos regulares dentro do programa principal Ela deve ser repetida indefinidamente at´e o termino da execu¸c˜ao do programa 1// i n i c i o do programa 2void main ( void ) 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˜ao do c´odigo 6 //mudan¸ca dos v a l o r e s dos d i s p l a y s 7 f o r ( ; ; ) // loop 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
  • 29. Display de 7 segmentos Utiliza¸c˜ao 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 7void main ( void ) 8{ 9 unsigned 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 // gasta 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