SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
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

Más contenido relacionado

La actualidad más candente

Amplification Bipolaire
Amplification BipolaireAmplification Bipolaire
Amplification Bipolaire
inali123
 
Conversion numérique analogique
Conversion numérique analogiqueConversion numérique analogique
Conversion numérique analogique
N NASRI
 
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
 
37248247 cours-hyperfrequences-parametres-s-antennes (1)
37248247 cours-hyperfrequences-parametres-s-antennes (1)37248247 cours-hyperfrequences-parametres-s-antennes (1)
37248247 cours-hyperfrequences-parametres-s-antennes (1)
khaalidkk
 
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-16
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-16Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-16
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-16
Shiwam Isrie
 

La actualidad más candente (20)

Amplification Bipolaire
Amplification BipolaireAmplification Bipolaire
Amplification Bipolaire
 
[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階[嵌入式系統] 嵌入式系統進階
[嵌入式系統] 嵌入式系統進階
 
Pic 16f877 ..
Pic 16f877 ..Pic 16f877 ..
Pic 16f877 ..
 
Processeur FPGA
Processeur FPGAProcesseur FPGA
Processeur FPGA
 
Microcontrôleur
MicrocontrôleurMicrocontrôleur
Microcontrôleur
 
Fstm deust mip-e141_cee_chap_v_les filtres passifs
Fstm deust mip-e141_cee_chap_v_les filtres passifsFstm deust mip-e141_cee_chap_v_les filtres passifs
Fstm deust mip-e141_cee_chap_v_les filtres passifs
 
Conversion numérique analogique
Conversion numérique analogiqueConversion numérique analogique
Conversion numérique analogique
 
08 resposta em frequencia de amplificadores
08 resposta em frequencia de amplificadores08 resposta em frequencia de amplificadores
08 resposta em frequencia de amplificadores
 
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
 
Tp1 electronique
Tp1 electroniqueTp1 electronique
Tp1 electronique
 
Operational Amplifier Design
Operational Amplifier DesignOperational Amplifier Design
Operational Amplifier Design
 
Cours capteur final
Cours capteur finalCours capteur final
Cours capteur final
 
Circuitos integrados
Circuitos integradosCircuitos integrados
Circuitos integrados
 
Introduction to FPGA, VHDL
Introduction to FPGA, VHDL  Introduction to FPGA, VHDL
Introduction to FPGA, VHDL
 
Analyse+Fonctionnelle+Interne+-2022.pptx
Analyse+Fonctionnelle+Interne+-2022.pptxAnalyse+Fonctionnelle+Interne+-2022.pptx
Analyse+Fonctionnelle+Interne+-2022.pptx
 
37248247 cours-hyperfrequences-parametres-s-antennes (1)
37248247 cours-hyperfrequences-parametres-s-antennes (1)37248247 cours-hyperfrequences-parametres-s-antennes (1)
37248247 cours-hyperfrequences-parametres-s-antennes (1)
 
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-16
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-16Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-16
Electronic devices-and-circuit-theory-10th-ed-boylestad-chapter-16
 
Apostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançadoApostila sobre controlador lógico programável avançado
Apostila sobre controlador lógico programável avançado
 
Clp aprendizagem clic2 weg
Clp aprendizagem clic2 wegClp aprendizagem clic2 weg
Clp aprendizagem clic2 weg
 
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
 

Destacado

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
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
Isvaldo Souza
 

Destacado (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
 
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
 
Arduino introdução - 10 projectos
Arduino   introdução - 10 projectosArduino   introdução - 10 projectos
Arduino introdução - 10 projectos
 
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
 

Similar a 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
 

Similar a 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
 

Más de 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
 

Más de 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
 

Último

Último (9)

ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.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
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_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