SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Leitura de teclas e teclado matricial

Prof.MSc.Rodrigo Maximiano Antunes de Almeida

           Universidade Federal de Itajubá


         rodrigomax@unifei.edu.br




                  ELT024    Leitura de teclas e teclado matricial
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 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
Display de 7 segmentos




      ELT024   Leitura de teclas e teclado matricial
Display de 7 segmentos
                           Multiplexaçã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 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
Atenção




ATENÇÃO




 ELT024   Leitura de teclas e teclado matricial
Atenção




É sério, cai na prova!




       ELT024   Leitura de teclas e teclado matricial
Atenção




Cai 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 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 acessada
fora do arquivo
                               ELT024    Leitura de teclas e teclado matricial
Leitura de Teclas




Leitura 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 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
Leitura de Teclas
                           Circuito básico



Exemplo Eletrônico




                     http://www.scienceprog.com/how-does-tri-state-buffers-
                               work/




                          ELT024    Leitura de teclas e teclado matricial
Leitura de Teclas
                          Circuito básico



Exemplo Eletro-mecânico




                 http://www.labbookpages.co.uk/electronics/debounce.html -
                        Dr. Andrew Greensted




                          ELT024    Leitura de teclas e teclado matricial
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
Leitura de Teclas
                              Debounce

                      Circuito com bouncing




http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted

                           ELT024    Leitura de teclas e teclado matricial
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
Leitura de Teclas
                      Debounce




http://www.ikalogic.com/debouncing.php - Ibrahim Kamal




                   ELT024    Leitura de teclas e teclado matricial
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
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 2




2
    Um PIC com cristal de 8MHz tem cada ciclo com duração de 0,5 (µs)
                             ELT024   Leitura de teclas e teclado matricial
Leitura de Teclas
                                  Debounce
1    void main(void) {
2        unsigned char valTemp, valAtual, tempo;
3        //inserir as configurações necessárias aqui
4        for(;;){
5            while(valAtual==PORTB);     //aguarda uma mudança na porta B
6            valTemp = PORTB;            //na mudança, aguarda um tempo
7            tempo = 22;
8            while (tempo > 0) {
9                if (valTemp == PORTB) { // se não mudar continua a contar
10                   tempo--;
11               } else {
12                   valTemp = PORTB;    // se mudar, atualiza e reinicia
13                   tempo = 22;
14               }
15           }
16           valAtual = valTemp;         //valor atualizado;
17           //Aqui a variável está pronta para ser usada
18       }
19   }
                               ELT024   Leitura de teclas e teclado matricial
Leitura Matricial




Leitura Matricial




     ELT024   Leitura de teclas e teclado matricial
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 encapsulamento
SMD/QFP ou BGA
                            ELT024      Leitura de teclas e teclado matricial
Leitura Matricial
   Circuito básico




   ELT024   Leitura de teclas e teclado matricial
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 N
chaves para ( N )2 chaves
              2
                             ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                               Configurações

1    void main(void)
2    {
3        unsigned char i,j;
4    //armazena valor de cada chave
5        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 interno
8        BitClr(INTCON2,0);
9    //apenas AN0 é analógico, os demais são digitais
10       ADCON1 = 0b00001110;
11   //os 4 últimos bits são entradas, os 4 primeiros saídas
12       TRISB = 0xF0;
13       TRISD = 0x00;
14       for(;;)
15       {
16          //processo de varredura
17       }
18   }
                               ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                               Processo de Varredura

1    //processo de varredura
2
3    for(i = 0; i < 4; i++){
4        PORTB = 0xff;                     //liga todas as colunas
5        for(j = 0; j < 100; j++);
6        BitClr(PORTB,i);                  //desliga coluna a ser testada
7        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 bit
10               chave[i][j] = 1;          //atualiza a matriz
11               BitSet(PORTD,j+4*i);      //mostra na porta D
12           }else{
13               chave[i][j] = 0;
14               BitClr(PORTD,j+4*i);
15           }
16       }
17   }

                                  ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                      Processo de Varredura




Atenção
O código não apresenta debounce em software para as teclas. Além
disso a operação com matriz gasta muito processamento e memória.
Para minimizar estes gastos podemos representar cada chave como
um bit numa variável.
A operação de debounce será apresentada nas funções a seguir.




                         ELT024   Leitura de teclas e teclado matricial
Leitura Matricial
                     Criação da biblioteca teclado


Funções necessárias para a criação de uma biblioteca que realiza a
leitura de um teclado matricial e disponibiliza as teclas
pressionadas:
   • 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
Leitura Matricial
                         Criação da biblioteca teclado

1    #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ídas
8        BitClr(INTCON2,0);   //habilita pull-up
9        ADCON1 = 0b00001110; //apenas AN0 é analógico
10       SPPCFG = 0x00;       //a porta B não opera como paralela
11       tempo = 10;          //tempo para debounce
12   }
13
14   unsigned int LerTeclas(void)
15   {
16       return valor;
17   }

                               ELT024    Leitura de teclas e teclado matricial
Leitura Matricial
                         Criação da biblioteca teclado

1    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 colunas
7            BitClr(PORTB,(i));     //liga a coluna correspondente
8            for(j=0;j<100;j++);    //gasta tempo (estabilidade)
9            for(j = 0; j < 4; j++){//teste para cada bit, atualiza a variáve
10               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
Leitura Matricial
                         Criação da biblioteca teclado




18       //rotina de debounce
19       //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
Leitura Matricial
                                   Header




    Header
1   #ifndef TECLADO_H
2       #define TECLADO_H
3
4       unsigned int LerTeclas(void);
5       void DebounceTeclas(void);
6       void InicializaTeclado(void);
7   #endif //TECLADO_H




                               ELT024   Leitura de teclas e teclado matricial
Leitura Matricial
                              Uso da Biblioteca

     Exemplo de uso da biblioteca
1    #include "basico.h"
2    #include "config.h"
3    #include "teclado.h"
4
5    //inicio do programa
6    void main(void)
7    {
8        InicializaTeclado();
9        TRISD = 0x00;    //Configura a porta D como saída
10       PORTD = 0xFF;    //desliga todos os leds
11       while (1==1)
12       {
13           DebounceTeclas();
14           PORTD = LerTeclas();
15       }
16   }

                               ELT024   Leitura de teclas e teclado matricial

Más contenido relacionado

La actualidad más candente

Tp python dauphine
Tp python dauphineTp python dauphine
Tp python dauphinenoussa krid
 
Excel ppt.ppt
Excel ppt.pptExcel ppt.ppt
Excel ppt.pptBadarSaf
 
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdfChapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdfRazaneLAMARA
 
List , tuples, dictionaries and regular expressions in python
List , tuples, dictionaries and regular expressions in pythonList , tuples, dictionaries and regular expressions in python
List , tuples, dictionaries and regular expressions in pythonchanna basava
 
Powerpoint over mijn hobby
Powerpoint over mijn hobbyPowerpoint over mijn hobby
Powerpoint over mijn hobbyfieux
 
Analyse de données avec Excel, Powerpivot et DAX
Analyse de données avec Excel, Powerpivot et DAXAnalyse de données avec Excel, Powerpivot et DAX
Analyse de données avec Excel, Powerpivot et DAXJean-pierre Bontront
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionECAM Brussels Engineering School
 
Structure machine : Les registres
Structure machine : Les registresStructure machine : Les registres
Structure machine : Les registreslinuxscout
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Nombres réels et négatifs en binaire
Nombres réels et négatifs en binaireNombres réels et négatifs en binaire
Nombres réels et négatifs en binairevalentin Victoire
 

La actualidad más candente (20)

Excel 2010
Excel 2010Excel 2010
Excel 2010
 
Tp python dauphine
Tp python dauphineTp python dauphine
Tp python dauphine
 
Excel ppt.ppt
Excel ppt.pptExcel ppt.ppt
Excel ppt.ppt
 
C言語講習会1
C言語講習会1C言語講習会1
C言語講習会1
 
Bitwise operators
Bitwise operatorsBitwise operators
Bitwise operators
 
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdfChapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
Chapitre-2_SYSTEMES DE NUMERATION ET CODAGE.pdf
 
List , tuples, dictionaries and regular expressions in python
List , tuples, dictionaries and regular expressions in pythonList , tuples, dictionaries and regular expressions in python
List , tuples, dictionaries and regular expressions in python
 
Função PROCV
Função PROCVFunção PROCV
Função PROCV
 
Powerpoint over mijn hobby
Powerpoint over mijn hobbyPowerpoint over mijn hobby
Powerpoint over mijn hobby
 
Analyse de données avec Excel, Powerpivot et DAX
Analyse de données avec Excel, Powerpivot et DAXAnalyse de données avec Excel, Powerpivot et DAX
Analyse de données avec Excel, Powerpivot et DAX
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Python avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exceptionPython avancé : Gestion d'erreurs et mécanisme d'exception
Python avancé : Gestion d'erreurs et mécanisme d'exception
 
Structure machine : Les registres
Structure machine : Les registresStructure machine : Les registres
Structure machine : Les registres
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Chapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et InstructionsChapitre 02 : Variables, Expressions et Instructions
Chapitre 02 : Variables, Expressions et Instructions
 
Apresentacaosobre vba
Apresentacaosobre vbaApresentacaosobre vba
Apresentacaosobre vba
 
Les enregistrements
Les enregistrements Les enregistrements
Les enregistrements
 
Algorithmique
AlgorithmiqueAlgorithmique
Algorithmique
 
Nombres réels et négatifs en binaire
Nombres réels et négatifs en binaireNombres réels et négatifs en binaire
Nombres réels et négatifs en binaire
 
Recursividade
RecursividadeRecursividade
Recursividade
 

Similar a Leitura teclas matricial

Utilizando um Display de LCD
Utilizando um Display de LCDUtilizando um Display de LCD
Utilizando um Display de LCDRodrigo Almeida
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
38698469 slides-arduino
38698469 slides-arduino38698469 slides-arduino
38698469 slides-arduinoRui Alves
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFengelrfs
 
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.br
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.brManual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.br
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.brLojaTotalseg
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registrosRodrigo Almeida
 
Aula 07 8 periféricos de um
Aula 07  8 periféricos de umAula 07  8 periféricos de um
Aula 07 8 periféricos de umMarcos Basilio
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosSuzana Viana Mota
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 
Apostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelApostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelPablo Mariano
 
gk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfgk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfMicaelMarques13
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerGlobalcode
 
Arquitetura de Computadores: Memórias - Nível lógico
Arquitetura de Computadores: Memórias - Nível lógicoArquitetura de Computadores: Memórias - Nível lógico
Arquitetura de Computadores: Memórias - Nível lógicoElaine Cecília Gatto
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Cláudio Alves
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicampFrancisco Fambrini
 

Similar a Leitura teclas matricial (20)

Utilizando um Display de LCD
Utilizando um Display de LCDUtilizando um Display de LCD
Utilizando um Display de LCD
 
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
 
Apostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDFApostila - Tutorial Arduino (Básico).PDF
Apostila - Tutorial Arduino (Básico).PDF
 
MIPS Pipeline
MIPS Pipeline MIPS Pipeline
MIPS Pipeline
 
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.br
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.brManual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.br
Manual do Terminal Inteligente TI 4245 Intelbras - LojaTotalseg.com.br
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registros
 
Mini Curso Introdutório ao Arduino
Mini Curso Introdutório ao ArduinoMini Curso Introdutório ao Arduino
Mini Curso Introdutório ao Arduino
 
Aula 07 8 periféricos de um
Aula 07  8 periféricos de umAula 07  8 periféricos de um
Aula 07 8 periféricos de um
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Apostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelApostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgel
 
Ac16 conjunto de instruções v2
Ac16   conjunto de instruções v2Ac16   conjunto de instruções v2
Ac16 conjunto de instruções v2
 
gk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfgk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdf
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
Pic aula1
Pic   aula1Pic   aula1
Pic aula1
 
PROCESSADOR.pptx
PROCESSADOR.pptxPROCESSADOR.pptx
PROCESSADOR.pptx
 
Arquitetura de Computadores: Memórias - Nível lógico
Arquitetura de Computadores: Memórias - Nível lógicoArquitetura de Computadores: Memórias - Nível lógico
Arquitetura de Computadores: Memórias - Nível lógico
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 

Más de Rodrigo Almeida

Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Rodrigo Almeida
 
Embedded systems development Defcon 19
Embedded systems development Defcon 19Embedded systems development Defcon 19
Embedded systems development Defcon 19Rodrigo Almeida
 
As diferentes engenharias
As diferentes engenhariasAs diferentes engenharias
As diferentes engenhariasRodrigo Almeida
 
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 ...Rodrigo Almeida
 
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 ...Rodrigo Almeida
 
Cryptology - Antônio Lacerda
Cryptology - Antônio LacerdaCryptology - Antônio Lacerda
Cryptology - Antônio LacerdaRodrigo Almeida
 
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é...Rodrigo Almeida
 
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...Rodrigo Almeida
 
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...Rodrigo Almeida
 
Projeto de uma controladora de drivers
Projeto de uma controladora de driversProjeto de uma controladora de drivers
Projeto de uma controladora de driversRodrigo Almeida
 
Kernel com requisitos temporais
Kernel com requisitos temporaisKernel com requisitos temporais
Kernel com requisitos temporaisRodrigo Almeida
 
Definição de processos
Definição de processosDefinição de processos
Definição de processosRodrigo Almeida
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersRodrigo Almeida
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosRodrigo 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 virusRodrigo Almeida
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosRodrigo Almeida
 
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 microcontroladorRodrigo Almeida
 

Más de Rodrigo Almeida (20)

Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015
 
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
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexados
 
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
 

Leitura teclas matricial

  • 1. Leitura de teclas e teclado matricial Prof.MSc.Rodrigo Maximiano Antunes de Almeida Universidade Federal de Itajubá rodrigomax@unifei.edu.br ELT024 Leitura de teclas e teclado matricial
  • 2. Display de 7 segmentos Revisão ELT024 Leitura de teclas e teclado matricial
  • 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. Display de 7 segmentos ELT024 Leitura de teclas e teclado matricial
  • 5. Display de 7 segmentos Multiplexaçã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 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. Atenção ATENÇÃO ELT024 Leitura de teclas e teclado matricial
  • 7. Atenção É sério, cai na prova! ELT024 Leitura de teclas e teclado matricial
  • 8. Atenção Cai MESMO! ELT024 Leitura de teclas e teclado matricial
  • 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 acessada fora do arquivo ELT024 Leitura de teclas e teclado matricial
  • 10. Leitura de Teclas Leitura de Teclas ELT024 Leitura de teclas e teclado matricial
  • 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. Leitura de Teclas Circuito básico Exemplo Eletrônico http://www.scienceprog.com/how-does-tri-state-buffers- work/ ELT024 Leitura de teclas e teclado matricial
  • 13. Leitura de Teclas Circuito básico Exemplo Eletro-mecânico http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Andrew Greensted ELT024 Leitura de teclas e teclado matricial
  • 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. Leitura de Teclas Debounce Circuito com bouncing http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted ELT024 Leitura de teclas e teclado matricial
  • 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. Leitura de Teclas Debounce http://www.ikalogic.com/debouncing.php - Ibrahim Kamal ELT024 Leitura de teclas e teclado matricial
  • 18. 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
  • 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 2 2 Um PIC com cristal de 8MHz tem cada ciclo com duração de 0,5 (µs) ELT024 Leitura de teclas e teclado matricial
  • 20. Leitura de Teclas Debounce 1 void main(void) { 2 unsigned char valTemp, valAtual, tempo; 3 //inserir as configurações necessárias aqui 4 for(;;){ 5 while(valAtual==PORTB); //aguarda uma mudança na porta B 6 valTemp = PORTB; //na mudança, aguarda um tempo 7 tempo = 22; 8 while (tempo > 0) { 9 if (valTemp == PORTB) { // se não mudar continua a contar 10 tempo--; 11 } else { 12 valTemp = PORTB; // se mudar, atualiza e reinicia 13 tempo = 22; 14 } 15 } 16 valAtual = valTemp; //valor atualizado; 17 //Aqui a variável está pronta para ser usada 18 } 19 } ELT024 Leitura de teclas e teclado matricial
  • 21. Leitura Matricial Leitura Matricial ELT024 Leitura de teclas e teclado matricial
  • 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 encapsulamento SMD/QFP ou BGA ELT024 Leitura de teclas e teclado matricial
  • 23. Leitura Matricial Circuito básico ELT024 Leitura de teclas e teclado matricial
  • 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 N chaves para ( N )2 chaves 2 ELT024 Leitura de teclas e teclado matricial
  • 25. Leitura Matricial Configurações 1 void main(void) 2 { 3 unsigned char i,j; 4 //armazena valor de cada chave 5 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 interno 8 BitClr(INTCON2,0); 9 //apenas AN0 é analógico, os demais são digitais 10 ADCON1 = 0b00001110; 11 //os 4 últimos bits são entradas, os 4 primeiros saídas 12 TRISB = 0xF0; 13 TRISD = 0x00; 14 for(;;) 15 { 16 //processo de varredura 17 } 18 } ELT024 Leitura de teclas e teclado matricial
  • 26. Leitura Matricial Processo de Varredura 1 //processo de varredura 2 3 for(i = 0; i < 4; i++){ 4 PORTB = 0xff; //liga todas as colunas 5 for(j = 0; j < 100; j++); 6 BitClr(PORTB,i); //desliga coluna a ser testada 7 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 bit 10 chave[i][j] = 1; //atualiza a matriz 11 BitSet(PORTD,j+4*i); //mostra na porta D 12 }else{ 13 chave[i][j] = 0; 14 BitClr(PORTD,j+4*i); 15 } 16 } 17 } ELT024 Leitura de teclas e teclado matricial
  • 27. Leitura Matricial Processo de Varredura Atenção O código não apresenta debounce em software para as teclas. Além disso a operação com matriz gasta muito processamento e memória. Para minimizar estes gastos podemos representar cada chave como um bit numa variável. A operação de debounce será apresentada nas funções a seguir. ELT024 Leitura de teclas e teclado matricial
  • 28. Leitura Matricial Criação da biblioteca teclado Funções necessárias para a criação de uma biblioteca que realiza a leitura de um teclado matricial e disponibiliza as teclas pressionadas: • 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. Leitura Matricial Criação da biblioteca teclado 1 #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ídas 8 BitClr(INTCON2,0); //habilita pull-up 9 ADCON1 = 0b00001110; //apenas AN0 é analógico 10 SPPCFG = 0x00; //a porta B não opera como paralela 11 tempo = 10; //tempo para debounce 12 } 13 14 unsigned int LerTeclas(void) 15 { 16 return valor; 17 } ELT024 Leitura de teclas e teclado matricial
  • 30. Leitura Matricial Criação da biblioteca teclado 1 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 colunas 7 BitClr(PORTB,(i)); //liga a coluna correspondente 8 for(j=0;j<100;j++); //gasta tempo (estabilidade) 9 for(j = 0; j < 4; j++){//teste para cada bit, atualiza a variáve 10 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. Leitura Matricial Criação da biblioteca teclado 18 //rotina de debounce 19 //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. Leitura Matricial Header Header 1 #ifndef TECLADO_H 2 #define TECLADO_H 3 4 unsigned int LerTeclas(void); 5 void DebounceTeclas(void); 6 void InicializaTeclado(void); 7 #endif //TECLADO_H ELT024 Leitura de teclas e teclado matricial
  • 33. Leitura Matricial Uso da Biblioteca Exemplo de uso da biblioteca 1 #include "basico.h" 2 #include "config.h" 3 #include "teclado.h" 4 5 //inicio do programa 6 void main(void) 7 { 8 InicializaTeclado(); 9 TRISD = 0x00; //Configura a porta D como saída 10 PORTD = 0xFF; //desliga todos os leds 11 while (1==1) 12 { 13 DebounceTeclas(); 14 PORTD = LerTeclas(); 15 } 16 } ELT024 Leitura de teclas e teclado matricial