SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

PDF
Lista de verificação super completa (check list)
PDF
Microcontroladores PIC - Interface com displays de 7 segmentos
PPTX
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
PDF
Instrumentação Industrial Básica
PDF
75091103 funcoes-ci-7404-7408-7432-7400
DOCX
Check list veronesi 2008
PDF
Check List Cinto Segurança
DOCX
A taxa de frequência de acidente
Lista de verificação super completa (check list)
Microcontroladores PIC - Interface com displays de 7 segmentos
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Instrumentação Industrial Básica
75091103 funcoes-ci-7404-7408-7432-7400
Check list veronesi 2008
Check List Cinto Segurança
A taxa de frequência de acidente

Mais procurados (20)

DOCX
Uart
PDF
Manual de segurança da carpintaria
PDF
Prova nr 33 espaco confinado
PDF
Permissão para trabalho
PPTX
PEMT NR18.pptx
PDF
Disjuntores Siemens
PPTX
Analise Ergonômica do Trabalho de Operadores de Check out
PDF
EPIs - NR6 - AULA 7.pdf
PDF
Ab funcoes-logicas-portas-logicas
PDF
Circuitos combinacionais
PDF
Tabela g eral_conversão_unidades
PDF
5 linguagem-de-programac3a7c3a3o-do-clp
PDF
PPT
Curso da CIPA
PDF
Cálculo de concentração de poeira e limite de tolerância de poeira respirável...
PPT
Entrada e permanencia em espacos confinados
PDF
Temas dds civil
PPT
Treinamento de PPP.ppt
PDF
Capitulo 004 logica ladder - logica combinacional
PPT
Certificado nr 12
Uart
Manual de segurança da carpintaria
Prova nr 33 espaco confinado
Permissão para trabalho
PEMT NR18.pptx
Disjuntores Siemens
Analise Ergonômica do Trabalho de Operadores de Check out
EPIs - NR6 - AULA 7.pdf
Ab funcoes-logicas-portas-logicas
Circuitos combinacionais
Tabela g eral_conversão_unidades
5 linguagem-de-programac3a7c3a3o-do-clp
Curso da CIPA
Cálculo de concentração de poeira e limite de tolerância de poeira respirável...
Entrada e permanencia em espacos confinados
Temas dds civil
Treinamento de PPP.ppt
Capitulo 004 logica ladder - logica combinacional
Certificado nr 12
Anúncio

Destaque (20)

PDF
Microcontroladores PIC - Exercícios para estudos de I/O digitais
PDF
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
PDF
Resumo linguagem c para microcontroladores PIC usando MikroC
PDF
Microcontroladores PIC - Entradas e saídas Digitais
PDF
Apostila pic 16f877
PDF
Apostila de PIC
PDF
Microcontroladores PIC - Introdução
PDF
Contadores
PDF
Apresentação curso pic básico fbs eletrônica
PDF
Apostila Arduino - FBS Eletrônica
PPTX
Registradores contadores memórias_r2
PDF
Arduino introdução - 10 projectos
PDF
Apostila para Programar Arduino
PPT
Curso de Arduino Completo
PPTX
Embedded systems design @ defcon 2015
PDF
Display segmentos
DOCX
Display de 7 segmentos
PDF
Comandos de Controle de Programa em C - Resumo
PPTX
Linguagem C - Resumo dos comandos de controle de programa
PDF
Microcontroladores pic ling c unicamp
Microcontroladores PIC - Exercícios para estudos de I/O digitais
Microcontroladores PIC - Manipulação de pinos de I/O com a Linguagem C
Resumo linguagem c para microcontroladores PIC usando MikroC
Microcontroladores PIC - Entradas e saídas Digitais
Apostila pic 16f877
Apostila de PIC
Microcontroladores PIC - Introdução
Contadores
Apresentação curso pic básico fbs eletrônica
Apostila Arduino - FBS Eletrônica
Registradores contadores memórias_r2
Arduino introdução - 10 projectos
Apostila para Programar Arduino
Curso de Arduino Completo
Embedded systems design @ defcon 2015
Display segmentos
Display de 7 segmentos
Comandos de Controle de Programa em C - Resumo
Linguagem C - Resumo dos comandos de controle de programa
Microcontroladores pic ling c unicamp
Anúncio

Semelhante a Display de 7 segmentos multiplexados (20)

PPTX
Display de leds de 7 segmentos com Arduíno.pptx
DOCX
Display 7 seguimentos.
PDF
Acessando os periféricos de um microcontrolador
DOC
PPT
8085 2
PDF
Desenvolvimento de drivers para sistemas embarcados
PDF
Circuitos combinatorios
PDF
Curso básico de eletrônica digital parte 12
PPTX
Apres2 - 07-12-2022.pptx sistemas digitais
PDF
Rel3-81715-81731-81138
PDF
Acesso à memória e registros
PDF
eletronica digital
 
PDF
Webinar: Porque o RTOS não faz o que eu quero?
PPT
microcontroladores6_8.pptsadsadsadasdasdasdasssad
PDF
Utilizando um Display de LCD
PPTX
Introdução a plataforma arduino
DOC
computaçao
PPTX
Arquitetura de Computadores: Assembly
Display de leds de 7 segmentos com Arduíno.pptx
Display 7 seguimentos.
Acessando os periféricos de um microcontrolador
8085 2
Desenvolvimento de drivers para sistemas embarcados
Circuitos combinatorios
Curso básico de eletrônica digital parte 12
Apres2 - 07-12-2022.pptx sistemas digitais
Rel3-81715-81731-81138
Acesso à memória e registros
eletronica digital
 
Webinar: Porque o RTOS não faz o que eu quero?
microcontroladores6_8.pptsadsadsadasdasdasdasssad
Utilizando um Display de LCD
Introdução a plataforma arduino
computaçao
Arquitetura de Computadores: Assembly

Mais de Rodrigo Almeida (20)

PDF
Embedded systems development Defcon 19
PDF
As diferentes engenharias
PDF
Testing de software en instrumentos de pesar de funcionamiento no automatico ...
PDF
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
PDF
Cryptology - Antônio Lacerda
PDF
Troca de contexto segura em sistemas operacionais embarcados utilizando de té...
PDF
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
PDF
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
PDF
Projeto de uma controladora de drivers
PDF
Kernel com requisitos temporais
PDF
Kernel cooperativo
PDF
Definição de processos
PDF
Ponteiros de Função
PDF
Conceitos de ponteiros struct e buffers
PDF
Introdução aos sistemas operacionais embarcados
PDF
Segurança de sistemas: invasões, engenharia reversa e análise de virus
PDF
Comunicação serial
PDF
Leitura de teclas com arranjo matricial
PDF
Operações com Bits
PDF
Revisão de linguagem C para Sistemas Embarcados
Embedded systems development Defcon 19
As diferentes engenharias
Testing de software en instrumentos de pesar de funcionamiento no automatico ...
Seguridad de sistemas embebidos para el ámbito regulado - Alejandro Bertello ...
Cryptology - Antônio Lacerda
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...
Projeto de uma controladora de drivers
Kernel com requisitos temporais
Kernel cooperativo
Definição de processos
Ponteiros de Função
Conceitos de ponteiros struct e buffers
Introdução aos sistemas operacionais embarcados
Segurança de sistemas: invasões, engenharia reversa e análise de virus
Comunicação serial
Leitura de teclas com arranjo matricial
Operações com Bits
Revisão de linguagem C para Sistemas Embarcados

Último (16)

PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Processos na gestão de transportes, TM100 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
COBITxITIL-Entenda as diferença em uso governança TI
Arquitetura de computadores - Memórias Secundárias
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf

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