Buscar

elt024 07 tecladoMatricial

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

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

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

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Leitura de teclas e teclado matricial
Prof.MSc.Rodrigo Maximiano Antunes de Almeida
Universidade Federal de Itajuba´
rodrigomax@unifei.edu.br
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 1 / 31
Display de 7 segmentos
Revisa˜o
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 2 / 31
Display de 7 segmentos
Multiplexac¸a˜o dos displays
Multiplexar: Consiste em combinar diversos sinais num u´nico canal de
transmissa˜o
Vantagens
Reduc¸a˜o de custos com cabeamento e tamanho de placa
Utilizac¸a˜o de uma quantitade maior de dispositivos que sa´ıdas
dispon´ıveis
Desvantagens
Perda de tamanho de banda devido a efeitos de overhead
Discretizac¸a˜o do tempo no acionamento dos dispositivos
Aumento da complexidade do sistema
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 3 / 31
Display de 7 segmentos
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 4 / 31
Display de 7 segmentos
Multiplexac¸a˜o dos displays
Rotina para acionar displays de 7 segmentos multiplexados:
1 colocar no barramento de dados o valor a ser mostrado no display X
2 ligar o display X atrave´s da linha de comando
3 esperar um tempo adequado para evitar flicker
4 desligar o display
5 escolher o pro´ximo display (X+1)
6 voltar ao passo 1
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 5 / 31
Atenc¸a˜o
ATENC¸A˜O
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 6 / 31
Varia´veis globais-locais
Armazenamento de dados dentro de uma biblioteca
Usado sempre que for necessa´rio passar valores entre func¸o˜es dentro
de um mesmo arquivo ou armazenar valores que na˜o podem ser
perdidos ao longo da execuc¸a˜o do programa. Ex: o display que esta´
atualmente ligado
E´ feito atrave´s de varia´veis ”globais-locais”1
As varia´veis devem possuir o atributo static
Usar sempre o menor tamanho poss´ıvel pois estas varia´veis sa˜o
alocadas permanentemente, reduzindo a memo´ria RAM dispon´ıvel.
Devem ser inicializadas dentro da func¸a˜o principal da biblioteca
1Global dentro do escopo da biblioteca, local pois na˜o pode ser acessada fora do
arquivo
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 7 / 31
Leitura de Teclas
Leitura de Teclas
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 8 / 31
Display de 7 segmentos
Criac¸a˜o da biblioteca disp7seg
Criac¸a˜o de um circuito para entrada de informac¸a˜o digital
A sa´ıda deve possuir apenas dois estados
O consumo de energia deve ser o m´ınimo poss´ıvel
As tenso˜es devem ser compat´ıveis com o circuito (TTL, CMOS, etc...)
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 9 / 31
Leitura de Teclas
Circuito ba´sico
Exemplo Eletroˆnico
http://www.scienceprog.com/how-does-tri-state-buffers-work/
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 10 / 31
Leitura de Teclas
Circuito ba´sico
Exemplo Eletro-mecaˆnico
http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Andrew Greensted
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 11 / 31
Leitura de Teclas
Debounce
Problema de bouncing
Causado pela oscilac¸a˜o mecaˆnica da chave
Pode gerar acionamentos indevidos no sistema
Soluc¸o˜es
Via hardware atrave´s de circuito dedicado
Via software atrave´s de confirmac¸a˜o temporal
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 12 / 31
Leitura de Teclas
Debounce
Circuito com bouncing
http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 13 / 31
Leitura de Teclas
Debounce
Debounce por hardware
Na˜o gasta processamento
Protege o circuito contra surtos
Auxilia na estabilidade do sistema pois funciona como filtro
Gera delay de R × C na resposta
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 14 / 31
Leitura de Teclas
Debounce
http://www.ikalogic.com/debouncing.php - Ibrahim Kamal
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 15 / 31
Leitura de Teclas
Debounce
Circuito sem bouncing - debounce
http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted (modificado)
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 16 / 31
Leitura de Teclas
Debounce
Debounce por software
Consome tempo e recurso do processador
Na˜o necessita de hardware ($$$) extra
Gera delay de acordo com a rotina desenvolvida
E´ preciso conhecer aproximadamente o tempo de estabilizac¸a˜o da chave
Ex: Para debounce de 150 (µs) = 300 ciclos de clock 2
2Um PIC com cristal de 8MHz tem cada ciclo com durac¸a˜o de 0,5 (µs)
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 17 / 31
Leitura de Teclas
Debounce
1 v o i d main ( v o i d ) {
2 uns igned char valTemp , valAtual , tempo ;
3 // i n s e r i r as c o n f i g u r a c¸ o˜ e s n e c e s s a´ r i a s a q u i
4 f o r ( ; ; ) {
5 w h i l e ( valAtual==PORTB ) ; // aguarda uma mudanc¸a na p o r t a B
6 valTemp = PORTB ; // na mudanc¸a , aguarda um tempo
7 tempo = 2 2 ;
8 w h i l e ( tempo > 0) {
9 i f ( valTemp == PORTB ) {// s e na˜o mudar c o n t i n u a a c o n t a r
10 tempo−−;
11 } e l s e {
12 valTemp = PORTB ; // s e mudar , a t u a l i z a e r e i n i c i a
13 tempo = 2 2 ;
14 }
15 }
16 valAtual = valTemp ; // v a l o r a t u a l i z a d o ;
17 // Aqui a v a r i a´ v e l e s t a´ p r o n t a para s e r usada
18 }
19 }
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 18 / 31
Leitura Matricial
Leitura Matricial
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 19 / 31
Leitura Matricial
Introduc¸a˜o
Para cada tecla inserida no projeto, do modo apresentado ate´ agora, e´
necessa´rio um terminal de I/O no microcontrolador
Projetos que exigem muitos terminais sa˜o mais caros por va´rios
motivos
O encapsulamento pode gerar entre 5 e 30% de diferenc¸a no prec¸o 3
O processo de inserc¸a˜o e soldagem de compontentes e´ mais caro 4
O tamanho e complexidade da placa aumenta (quantidade da camadas,
roteamento, etc...)
Para entradas digitais tipo teclado existe uma alternativa: Leitura por
varredura matricial
3PIC18F4550 TQFP = US$4,42, DIP = US$5,36
4Geralmente componentes com muitos terminais tem encapsulamento SMD/QFP ou
BGA
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 20 / 31
Leitura Matricial
Circuito ba´sico
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 21 / 31
Leitura Matricial
Vantagens e Desvantagens
Na leitura por varredura matricial temos:
Aumento da quantidade de chaves que podem ser lidas 5
Aumento da complexidade do software
Atraso na detecc¸a˜o de eventos (devido a` varredura)
5Para N terminais dispon´ıveis no microcontrolador, temos um aumento de N chaves
para ( N
2
)2 chaves
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 22 / 31
Leitura Matricial
Configurac¸o˜es
1 v o i d main ( v o i d )
2 {
3 uns igned char i , j ;
4 // armazena v a l o r de cada chave
5 uns igned char chave [ 4 ] [ 4 ] = {{0 , 0 , 0 , 0} ,{0 , 0 , 0 , 0} ,
6 {0 , 0 , 0 , 0} ,{0 , 0 , 0 , 0}} ;
7 // h a b i l i t a p u l l−up i n t e r n o
8 BitClr ( INTCON2 , 0 ) ;
9 // apenas AN0 e´ a n a l o´ g i c o , os demais s a˜o d i g i t a i s
10 ADCON1 = 0b00001110 ;
11 // os 4 u´ l t i m o s b i t s s a˜o e n t r a d a s , os 4 p r i m e i r o s s a ı´ d a s
12 TRISB = 0xF0 ;
13 TRISD = 0x00 ;
14 f o r ( ; ; )
15 {
16 // p r o c e s s o de v a r r e d u r a
17 }
18 }
ELT024 Leitura de teclase teclado matricial rodrigomax@unifei.edu.br 23 / 31
Leitura Matricial
Processo de Varredura
1 // p r o c e s s o de v a r r e d u r a
2 f o r ( i = 0 ; i < 4 ; i++){
3 PORTB = 0xff ; // l i g a t o d a s as c o l u n a s
4 f o r ( j = 0 ; j < 1 0 0 ; j++) ;
5 BitClr ( PORTB , i ) ; // d e s l i g a c o l u n a a s e r t e s t a d a
6 // g a s t o de tempo ( e s t a b i l i d a d e do s i n a l )
7 f o r ( j = 0 ; j < 1 0 0 ; j++) ;
8
9 f o r ( j = 0 ; j < 4 ; j++){
10 i f ( ! BitTst ( PORTB , j+4) ) { // r e a l i z a o t e s t e para cada b i t
11 chave [ i ] [ j ] = 1 ; // a t u a l i z a a m a t r i z
12 BitSet ( PORTD , j+4∗i ) ; // mostra na p o r t a D
13 } e l s e {
14 chave [ i ] [ j ] = 0 ;
15 BitClr ( PORTD , j+4∗i ) ;
16 }
17 }
18 }
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 24 / 31
Leitura Matricial
Processo de Varredura
Atenc¸a˜o
O co´digo na˜o apresenta debounce em software para as teclas.
A operac¸a˜o com uma matriz gasta muito processamento e memo´ria.
Para minimizar estes gastos podemos representar cada chave como
um bit numa varia´vel.
A operac¸a˜o de debounce sera´ apresentada nas func¸o˜es a seguir.
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 25 / 31
Leitura Matricial
Criac¸a˜o da biblioteca teclado
Func¸o˜es necessa´rias para a criac¸a˜o de uma biblioteca que realiza a leitura
de um teclado matricial e disponibiliza as teclas pressionadas:
Inicializac¸a˜o()
Configura os terminais de acionamento e de leitura
Debounce()
Realiza a leitura das teclas (varredura)
Realiza o debounce dos valores
Armazena internamente as teclas pressionadas
LerTeclas()
Retorna uma varia´vel unsigned int
Cada bit desta varia´vel representa uma tecla
0 = desligado, 1 = pressionado
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 26 / 31
Leitura Matricial
Criac¸a˜o da biblioteca teclado
1 #include "teclado.h"
2 #include "basico.h"
3 s t a t i c uns igned i n t valor = 0x0000 ;
4 s t a t i c uns igned char tempo ;
5 v o i d InicializaTeclado ( v o i d )
6 {
7 TRISB = 0xF0 ; // q u a t r o e n t r a d a s e q u a t r o s a ı´ d a s
8 BitClr ( INTCON2 , 0 ) ; // h a b i l i t a p u l l−up
9 ADCON1 = 0b00001110 ; // apenas AN0 e´ a n a l o´ g i c o
10 SPPCFG = 0x00 ; // a p o r t a B na˜o o p e r a como p a r a l e l a
11 tempo = 1 0 ; // tempo para debounce
12 }
13
14 uns igned i n t LerTeclas ( v o i d )
15 {
16 r e t u r n valor ;
17 }
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 27 / 31
Leitura Matricial
Criac¸a˜o da biblioteca teclado
1 v o i d DebounceTeclas ( v o i d ) {
2 uns igned char i , j ;
3 uns igned i n t valorNovo = 0x0000 ;
4 uns igned i n t valorAntigo = 0x0000 ;
5 f o r ( i = 0 ; i < 4 ; i++){
6 PORTB |= 0x0F ; // d e s l i g a t o d a s as c o l u n a s
7 BitClr ( PORTB , ( i ) ) ; // l i g a a c o l u n a c o r r e s p o n d e n t e
8 f o r ( j=0;j<100;j++) ; // g a s t a tempo ( e s t a b i l i d a d e )
9 f o r ( j = 0 ; j < 4 ; j++){// t e s t e para cada b i t , a t u a l i z a a ←↩
v a r i a´ v e l
10 i f ( ! BitTst ( PORTB , j+4) ) {
11 BitSet ( valorNovo , ( i ∗4)+j ) ;
12 } e l s e {
13 BitClr ( valorNovo , ( i ∗4)+j ) ;
14 }
15 }
16 }
17 // c o n t i n u a
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 28 / 31
Leitura Matricial
Criac¸a˜o da biblioteca teclado
18 // r o t i n a de debounce
19 // a cada chamada o tempo e´ decrementado em 1un .
20 i f ( valorAntigo == valorNovo ) {
21 tempo −−;
22 } e l s e {
23 tempo = 1 0 ;
24 valorAntigo = valorNovo ;
25 }
26 i f ( tempo == 0) {
27 valor = valorAntigo ;
28 }
29 }
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 29 / 31
Leitura Matricial
Header
Header
1 #ifndef TECLADO_H
2 #define TECLADO_H
3
4 uns igned i n t LerTeclas ( v o i d ) ;
5 v o i d DebounceTeclas ( v o i d ) ;
6 v o i d InicializaTeclado ( v o i d ) ;
7 #endif //TECLADO H
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 30 / 31
Leitura Matricial
Uso da Biblioteca
Exemplo de uso da biblioteca
1 #include "basico.h"
2 #include "config.h"
3 #include "teclado.h"
4
5 // i n i c i o do programa
6 v o i d main ( v o i d )
7 {
8 InicializaTeclado ( ) ;
9 TRISD = 0x00 ; // C o n f i g u r a a p o r t a D como s a ı´ d a
10 PORTD = 0xFF ; // d e s l i g a t o d o s os l e d s
11 w h i l e (1==1)
12 {
13 DebounceTeclas ( ) ;
14 PORTD = LerTeclas ( ) ;
15 }
16 }
ELT024 Leitura de teclas e teclado matricial rodrigomax@unifei.edu.br 31 / 31

Outros materiais