Leitura de teclas e teclado matricialProf.MSc.Rodrigo Maximiano Antunes de Almeida           Universidade Federal de Itaju...
Display de 7 segmentos      Revisão      ELT024   Leitura de teclas e teclado matricial
Display de 7 segmentos                     Multiplexação dos displays• Multiplexar: Consiste em combinar diversos sinais n...
Display de 7 segmentos      ELT024   Leitura de teclas e teclado matricial
Display de 7 segmentos                           Multiplexação dos displaysRotina para acionar displays de 7 segmentos mul...
AtençãoATENÇÃO ELT024   Leitura de teclas e teclado matricial
AtençãoÉ sério, cai na prova!       ELT024   Leitura de teclas e teclado matricial
AtençãoCai MESMO!  ELT024   Leitura de teclas e teclado matricial
Variáveis globais-locais  • Armazenamento de dados dentro de uma biblioteca      • Usado sempre que for necessário passar ...
Leitura de TeclasLeitura de Teclas     ELT024   Leitura de teclas e teclado matricial
Display de 7 segmentos                  Criação da biblioteca disp7seg• Criação de um circuito para entrada de informação ...
Leitura de Teclas                           Circuito básicoExemplo Eletrônico                     http://www.scienceprog.c...
Leitura de Teclas                          Circuito básicoExemplo Eletro-mecânico                 http://www.labbookpages....
Leitura de Teclas                           Debounce• Problema de bouncing    • Causado pela oscilação mecânica da chave  ...
Leitura de Teclas                              Debounce                      Circuito com bouncinghttp://www.labbookpages....
Leitura de Teclas                            Debounce• Debounce por hardware    • Não gasta processamento    • Protege o c...
Leitura de Teclas                      Debouncehttp://www.ikalogic.com/debouncing.php - Ibrahim Kamal                   EL...
Leitura de Teclas                              Debounce               Circuito sem bouncing - debouncehttp://www.labbookpa...
Leitura de Teclas                                Debounce• Debounce por software    • Consome tempo e recurso do processad...
Leitura de Teclas                                  Debounce1    void main(void) {2        unsigned char valTemp, valAtual,...
Leitura MatricialLeitura Matricial     ELT024   Leitura de teclas e teclado matricial
Leitura Matricial                              Introdução  • Para cada tecla inserida no projeto, do modo apresentado até ...
Leitura Matricial   Circuito básico   ELT024   Leitura de teclas e teclado matricial
Leitura Matricial                        Vantagens e Desvantagens  • Na leitura por varredura matricial temos:      • Aume...
Leitura Matricial                               Configurações1    void main(void)2    {3        unsigned char i,j;4    //ar...
Leitura Matricial                               Processo de Varredura1    //processo de varredura23    for(i = 0; i < 4; i...
Leitura Matricial                      Processo de VarreduraAtençãoO código não apresenta debounce em software para as tec...
Leitura Matricial                     Criação da biblioteca tecladoFunções necessárias para a criação de uma biblioteca qu...
Leitura Matricial                         Criação da biblioteca teclado1    #include "teclado.h"2    #include "basico.h"3 ...
Leitura Matricial                         Criação da biblioteca teclado1    void DebounceTeclas(void){2        unsigned ch...
Leitura Matricial                         Criação da biblioteca teclado18       //rotina de debounce19       //a cada cham...
Leitura Matricial                                   Header    Header1   #ifndef TECLADO_H2       #define TECLADO_H34      ...
Leitura Matricial                              Uso da Biblioteca     Exemplo de uso da biblioteca1    #include "basico.h"2...
Próximos SlideShares
Carregando em…5
×

Leitura de teclas com arranjo matricial

4.752 visualizações

Publicada em

Operação com teclas em arranjo matricial, debounce por software, processo de varredura

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
4.752
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
70
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Leitura de teclas com arranjo matricial

  1. 1. Leitura de teclas e teclado matricialProf.MSc.Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajubá rodrigomax@unifei.edu.br ELT024 Leitura de teclas e teclado matricial
  2. 2. Display de 7 segmentos Revisão ELT024 Leitura de teclas e teclado matricial
  3. 3. Display de 7 segmentos Multiplexação dos displays• Multiplexar: Consiste em combinar diversos sinais num único canal de transmissão• Vantagens • Redução de custos com cabeamento e tamanho de placa • Utilização de uma quantitade maior de dispositivos que saídas disponíveis• Desvantagens • Perda de tamanho de banda devido a efeitos de overhead • Discretização do tempo no acionamento dos dispositivos • Aumento da complexidade do sistema ELT024 Leitura de teclas e teclado matricial
  4. 4. Display de 7 segmentos ELT024 Leitura de teclas e teclado matricial
  5. 5. Display de 7 segmentos Multiplexação dos displaysRotina 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és da linha de comando 3 esperar um tempo adequado para evitar flicker 4 desligar o display 5 escolher o próximo display (X+1) 6 voltar ao passo 1 ELT024 Leitura de teclas e teclado matricial
  6. 6. AtençãoATENÇÃO ELT024 Leitura de teclas e teclado matricial
  7. 7. AtençãoÉ sério, cai na prova! ELT024 Leitura de teclas e teclado matricial
  8. 8. AtençãoCai MESMO! ELT024 Leitura de teclas e teclado matricial
  9. 9. Variáveis globais-locais • Armazenamento de dados dentro de uma biblioteca • Usado sempre que for necessário passar valores entre funções dentro de um mesmo arquivo ou armazenar valores que não podem ser perdidos ao longo da execução do programa. Ex: o display que está atualmente ligado • É feito através de variáveis "globais-locais"1 • As variáveis devem possuir o atributo static • Usar sempre o menor tamanho possível pois estas variáveis são alocadas permanentemente, reduzindo a memória RAM disponível. • Devem ser inicializadas dentro da função principal da biblioteca 1 Global dentro do escopo da biblioteca, local pois não pode ser acessadafora do arquivo ELT024 Leitura de teclas e teclado matricial
  10. 10. Leitura de TeclasLeitura de Teclas ELT024 Leitura de teclas e teclado matricial
  11. 11. Display de 7 segmentos Criação da biblioteca disp7seg• Criação de um circuito para entrada de informação digital • A saída deve possuir apenas dois estados • O consumo de energia deve ser o mínimo possível • As tensões devem ser compatíveis com o circuito (TTL, CMOS, etc...) ELT024 Leitura de teclas e teclado matricial
  12. 12. Leitura de Teclas Circuito básicoExemplo Eletrônico http://www.scienceprog.com/how-does-tri-state-buffers- work/ ELT024 Leitura de teclas e teclado matricial
  13. 13. Leitura de Teclas Circuito básicoExemplo Eletro-mecânico http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Andrew Greensted ELT024 Leitura de teclas e teclado matricial
  14. 14. Leitura de Teclas Debounce• Problema de bouncing • Causado pela oscilação mecânica da chave • Pode gerar acionamentos indevidos no sistema• Soluções • Via hardware através de circuito dedicado • Via software através de confirmação temporal ELT024 Leitura de teclas e teclado matricial
  15. 15. Leitura de Teclas Debounce Circuito com bouncinghttp://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted ELT024 Leitura de teclas e teclado matricial
  16. 16. Leitura de Teclas Debounce• Debounce por hardware • Nã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
  17. 17. Leitura de Teclas Debouncehttp://www.ikalogic.com/debouncing.php - Ibrahim Kamal ELT024 Leitura de teclas e teclado matricial
  18. 18. Leitura de Teclas Debounce Circuito sem bouncing - debouncehttp://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted (modificado) ELT024 Leitura de teclas e teclado matricial
  19. 19. Leitura de Teclas Debounce• Debounce por software • Consome tempo e recurso do processador • Não necessita de hardware ($$$) extra • Gera delay de acordo com a rotina desenvolvida • É preciso conhecer aproximadamente o tempo de estabilização da chave• Ex: Para debounce de 150 (µs) = 300 ciclos de clock 22 Um PIC com cristal de 8MHz tem cada ciclo com duração de 0,5 (µs) ELT024 Leitura de teclas e teclado matricial
  20. 20. Leitura de Teclas Debounce1 void main(void) {2 unsigned char valTemp, valAtual, tempo;3 //inserir as configurações necessárias aqui4 for(;;){5 while(valAtual==PORTB); //aguarda uma mudança na porta B6 valTemp = PORTB; //na mudança, aguarda um tempo7 tempo = 22;8 while (tempo > 0) {9 if (valTemp == PORTB) { // se não mudar continua a contar10 tempo--;11 } else {12 valTemp = PORTB; // se mudar, atualiza e reinicia13 tempo = 22;14 }15 }16 valAtual = valTemp; //valor atualizado;17 //Aqui a variável está pronta para ser usada18 }19 } ELT024 Leitura de teclas e teclado matricial
  21. 21. Leitura MatricialLeitura Matricial ELT024 Leitura de teclas e teclado matricial
  22. 22. Leitura Matricial Introdução • Para cada tecla inserida no projeto, do modo apresentado até agora, é necessário um terminal de I/O no microcontrolador • Projetos que exigem muitos terminais são mais caros por vários motivos • O encapsulamento pode gerar até 10% de diferença no preço 3 • O processo de inserção e soldagem de compontentes é 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 3 PIC18F4550 TQFP = US$4,42, DIP = US$7,00 4 Geralmente componentes com muitos terminais tem encapsulamentoSMD/QFP ou BGA ELT024 Leitura de teclas e teclado matricial
  23. 23. Leitura Matricial Circuito básico ELT024 Leitura de teclas e teclado matricial
  24. 24. 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 detecção de eventos (devido à varredura) 5 Para N terminais disponíveis no microcontrolador, temos um aumento de Nchaves para ( N )2 chaves 2 ELT024 Leitura de teclas e teclado matricial
  25. 25. Leitura Matricial Configurações1 void main(void)2 {3 unsigned char i,j;4 //armazena valor de cada chave5 unsigned char chave[4][4] = {{0,0,0,0},{0,0,0,0},6 {0,0,0,0},{0,0,0,0}};7 //habilita pull-up interno8 BitClr(INTCON2,0);9 //apenas AN0 é analógico, os demais são digitais10 ADCON1 = 0b00001110;11 //os 4 últimos bits são entradas, os 4 primeiros saídas12 TRISB = 0xF0;13 TRISD = 0x00;14 for(;;)15 {16 //processo de varredura17 }18 } ELT024 Leitura de teclas e teclado matricial
  26. 26. Leitura Matricial Processo de Varredura1 //processo de varredura23 for(i = 0; i < 4; i++){4 PORTB = 0xff; //liga todas as colunas5 for(j = 0; j < 100; j++);6 BitClr(PORTB,i); //desliga coluna a ser testada7 for(j = 0; j < 100; j++); //gasta tempo (garantir estabilidade)8 for(j = 0; j < 4; j++){9 if (!BitTst(PORTB,j+4)){ //realiza o teste para cada bit10 chave[i][j] = 1; //atualiza a matriz11 BitSet(PORTD,j+4*i); //mostra na porta D12 }else{13 chave[i][j] = 0;14 BitClr(PORTD,j+4*i);15 }16 }17 } ELT024 Leitura de teclas e teclado matricial
  27. 27. Leitura Matricial Processo de VarreduraAtençãoO código não apresenta debounce em software para as teclas. Alémdisso a operação com matriz gasta muito processamento e memória.Para minimizar estes gastos podemos representar cada chave comoum bit numa variável.A operação de debounce será apresentada nas funções a seguir. ELT024 Leitura de teclas e teclado matricial
  28. 28. Leitura Matricial Criação da biblioteca tecladoFunções necessárias para a criação de uma biblioteca que realiza aleitura de um teclado matricial e disponibiliza as teclaspressionadas: • Inicializaçã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 variável unsigned int • Cada bit desta variável representa uma tecla • 0 = desligado, 1 = pressionado ELT024 Leitura de teclas e teclado matricial
  29. 29. Leitura Matricial Criação da biblioteca teclado1 #include "teclado.h"2 #include "basico.h"3 static unsigned int valor = 0x0000;4 static unsigned char tempo;5 void InicializaTeclado(void)6 {7 TRISB = 0xF0; //quatro entradas e quatro saídas8 BitClr(INTCON2,0); //habilita pull-up9 ADCON1 = 0b00001110; //apenas AN0 é analógico10 SPPCFG = 0x00; //a porta B não opera como paralela11 tempo = 10; //tempo para debounce12 }1314 unsigned int LerTeclas(void)15 {16 return valor;17 } ELT024 Leitura de teclas e teclado matricial
  30. 30. Leitura Matricial Criação da biblioteca teclado1 void DebounceTeclas(void){2 unsigned char i,j;3 unsigned int valorNovo = 0x0000;4 unsigned int valorAntigo = 0x0000;5 for(i = 0; i < 4; i++){6 PORTB |= 0x0F; //desliga todas as colunas7 BitClr(PORTB,(i)); //liga a coluna correspondente8 for(j=0;j<100;j++); //gasta tempo (estabilidade)9 for(j = 0; j < 4; j++){//teste para cada bit, atualiza a variáve10 if (!BitTst(PORTB,j+4)){11 BitSet(valorNovo,(i*4)+j);12 }else{13 BitClr(valorNovo,(i*4)+j);14 }15 }16 }17 //continua ELT024 Leitura de teclas e teclado matricial
  31. 31. Leitura Matricial Criação da biblioteca teclado18 //rotina de debounce19 //a cada chamada o tempo é decrementado em 1un.20 if (valorAntigo == valorNovo){21 tempo --;22 }else{23 tempo = 10;24 valorAntigo = valorNovo;25 }26 if (tempo == 0){27 valor = valorAntigo;28 }29 } ELT024 Leitura de teclas e teclado matricial
  32. 32. Leitura Matricial Header Header1 #ifndef TECLADO_H2 #define TECLADO_H34 unsigned int LerTeclas(void);5 void DebounceTeclas(void);6 void InicializaTeclado(void);7 #endif //TECLADO_H ELT024 Leitura de teclas e teclado matricial
  33. 33. Leitura Matricial Uso da Biblioteca Exemplo de uso da biblioteca1 #include "basico.h"2 #include "config.h"3 #include "teclado.h"45 //inicio do programa6 void main(void)7 {8 InicializaTeclado();9 TRISD = 0x00; //Configura a porta D como saída10 PORTD = 0xFF; //desliga todos os leds11 while (1==1)12 {13 DebounceTeclas();14 PORTD = LerTeclas();15 }16 } ELT024 Leitura de teclas e teclado matricial

×