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

Mais conteúdo relacionado

Mais procurados

Laboratorio programacao pf 755 com ihm
Laboratorio programacao pf 755 com ihmLaboratorio programacao pf 755 com ihm
Laboratorio programacao pf 755 com ihm
confidencial
 
boas praticas.pptx
boas praticas.pptxboas praticas.pptx
boas praticas.pptx
PalomaPina2
 
Conservação dos alimentos pelo uso de aditivos
Conservação dos alimentos pelo uso de aditivosConservação dos alimentos pelo uso de aditivos
Conservação dos alimentos pelo uso de aditivos
Alvaro Galdos
 
Eletropneumática e eletro hidráulica i
Eletropneumática e eletro hidráulica iEletropneumática e eletro hidráulica i
Eletropneumática e eletro hidráulica i
Cesar Loureiro
 
Batalha Naval - UML
Batalha Naval - UMLBatalha Naval - UML
Batalha Naval - UML
JoaquimRibeiro
 
Alimentos minimamente processados
Alimentos minimamente processadosAlimentos minimamente processados
Alimentos minimamente processados
Izabela Martelozzo Pegorer
 
05 sensores atuadores (1)
05 sensores atuadores (1)05 sensores atuadores (1)
05 sensores atuadores (1)
Gustavo Oliveira
 
Microbiologia dos alimentos aula 1
Microbiologia dos alimentos aula 1Microbiologia dos alimentos aula 1
Microbiologia dos alimentos aula 1
Clelia Picinin
 
Alterações em alimentos
Alterações em alimentosAlterações em alimentos
Alterações em alimentos
GabsSerra
 
Alterações post mortem do pescado
Alterações post mortem do pescadoAlterações post mortem do pescado
Alterações post mortem do pescado
Luis Dantas
 
operações unitárias-processos de refrigeração e congelamento
operações unitárias-processos de refrigeração e congelamentooperações unitárias-processos de refrigeração e congelamento
operações unitárias-processos de refrigeração e congelamento
Flavia Alencar
 
Circuitos pneumaticos e hidraulicos
Circuitos pneumaticos e hidraulicosCircuitos pneumaticos e hidraulicos
Circuitos pneumaticos e hidraulicos
Jeffersonfrassi
 
Metodos de analises
Metodos de analisesMetodos de analises
Metodos de analises
Ernane Nogueira Nunes
 
71318936 reles-fusiveis-localizacao-gm-fiat-ford-vw
71318936 reles-fusiveis-localizacao-gm-fiat-ford-vw71318936 reles-fusiveis-localizacao-gm-fiat-ford-vw
71318936 reles-fusiveis-localizacao-gm-fiat-ford-vw
rush_br
 
Corrente nominal de motores trifásicos 220v
Corrente nominal de motores trifásicos 220vCorrente nominal de motores trifásicos 220v
Corrente nominal de motores trifásicos 220v
Planalto Engenharia e Automação
 
Iogurte
IogurteIogurte
Manual em portugues Mikrotik by eniak.docx
Manual em portugues Mikrotik by eniak.docxManual em portugues Mikrotik by eniak.docx
Manual em portugues Mikrotik by eniak.docx
wylliancassiano1
 
1 introdução
1  introdução1  introdução
1 introdução
Gledson Villarta
 
Manual de sintomas e falhas
Manual de sintomas e falhasManual de sintomas e falhas
Manual de sintomas e falhas
Robson Cavalheiro
 
Aula - CLP & Linguagem Ladder
Aula - CLP & Linguagem LadderAula - CLP & Linguagem Ladder
Aula - CLP & Linguagem Ladder
Anderson Pontes
 

Mais procurados (20)

Laboratorio programacao pf 755 com ihm
Laboratorio programacao pf 755 com ihmLaboratorio programacao pf 755 com ihm
Laboratorio programacao pf 755 com ihm
 
boas praticas.pptx
boas praticas.pptxboas praticas.pptx
boas praticas.pptx
 
Conservação dos alimentos pelo uso de aditivos
Conservação dos alimentos pelo uso de aditivosConservação dos alimentos pelo uso de aditivos
Conservação dos alimentos pelo uso de aditivos
 
Eletropneumática e eletro hidráulica i
Eletropneumática e eletro hidráulica iEletropneumática e eletro hidráulica i
Eletropneumática e eletro hidráulica i
 
Batalha Naval - UML
Batalha Naval - UMLBatalha Naval - UML
Batalha Naval - UML
 
Alimentos minimamente processados
Alimentos minimamente processadosAlimentos minimamente processados
Alimentos minimamente processados
 
05 sensores atuadores (1)
05 sensores atuadores (1)05 sensores atuadores (1)
05 sensores atuadores (1)
 
Microbiologia dos alimentos aula 1
Microbiologia dos alimentos aula 1Microbiologia dos alimentos aula 1
Microbiologia dos alimentos aula 1
 
Alterações em alimentos
Alterações em alimentosAlterações em alimentos
Alterações em alimentos
 
Alterações post mortem do pescado
Alterações post mortem do pescadoAlterações post mortem do pescado
Alterações post mortem do pescado
 
operações unitárias-processos de refrigeração e congelamento
operações unitárias-processos de refrigeração e congelamentooperações unitárias-processos de refrigeração e congelamento
operações unitárias-processos de refrigeração e congelamento
 
Circuitos pneumaticos e hidraulicos
Circuitos pneumaticos e hidraulicosCircuitos pneumaticos e hidraulicos
Circuitos pneumaticos e hidraulicos
 
Metodos de analises
Metodos de analisesMetodos de analises
Metodos de analises
 
71318936 reles-fusiveis-localizacao-gm-fiat-ford-vw
71318936 reles-fusiveis-localizacao-gm-fiat-ford-vw71318936 reles-fusiveis-localizacao-gm-fiat-ford-vw
71318936 reles-fusiveis-localizacao-gm-fiat-ford-vw
 
Corrente nominal de motores trifásicos 220v
Corrente nominal de motores trifásicos 220vCorrente nominal de motores trifásicos 220v
Corrente nominal de motores trifásicos 220v
 
Iogurte
IogurteIogurte
Iogurte
 
Manual em portugues Mikrotik by eniak.docx
Manual em portugues Mikrotik by eniak.docxManual em portugues Mikrotik by eniak.docx
Manual em portugues Mikrotik by eniak.docx
 
1 introdução
1  introdução1  introdução
1 introdução
 
Manual de sintomas e falhas
Manual de sintomas e falhasManual de sintomas e falhas
Manual de sintomas e falhas
 
Aula - CLP & Linguagem Ladder
Aula - CLP & Linguagem LadderAula - CLP & Linguagem Ladder
Aula - CLP & Linguagem Ladder
 

Semelhante a Leitura de teclas com arranjo matricial

Utilizando um Display de LCD
Utilizando um Display de LCDUtilizando um Display de LCD
Utilizando um Display de LCD
Rodrigo Almeida
 
38698469 slides-arduino
38698469 slides-arduino38698469 slides-arduino
38698469 slides-arduino
Rui Alves
 
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
 
MIPS Pipeline
MIPS Pipeline MIPS Pipeline
MIPS Pipeline
Diego Streck
 
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
LojaTotalseg
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registros
Rodrigo Almeida
 
Mini Curso Introdutório ao Arduino
Mini Curso Introdutório ao ArduinoMini Curso Introdutório ao Arduino
Mini Curso Introdutório ao Arduino
Crescencio Rodrigues Lima Neto
 
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
Marcos Basilio
 
Mini Curso Sistemas Embarcados
Mini Curso Sistemas EmbarcadosMini Curso Sistemas Embarcados
Mini Curso Sistemas Embarcados
Suzana Viana Mota
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
Rodrigo 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 gurgel
Pablo Mariano
 
Ac16 conjunto de instruções v2
Ac16   conjunto de instruções v2Ac16   conjunto de instruções v2
Ac16 conjunto de instruções v2
Elaine Cecília Gatto
 
gk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfgk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdf
MicaelMarques13
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
Globalcode
 
Pic aula1
Pic   aula1Pic   aula1
Pic aula1
profwtelles
 
PROCESSADOR.pptx
PROCESSADOR.pptxPROCESSADOR.pptx
PROCESSADOR.pptx
FranciscoAntonioMelo
 
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
Elaine Cecília Gatto
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
Francisco Fambrini
 
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
Cláudio Alves
 

Semelhante a Leitura de teclas com arranjo matricial (20)

Utilizando um Display de LCD
Utilizando um Display de LCDUtilizando um Display de LCD
Utilizando um Display de LCD
 
38698469 slides-arduino
38698469 slides-arduino38698469 slides-arduino
38698469 slides-arduino
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao 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 ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
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
 

Mais de Rodrigo Almeida

Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015Embedded systems design @ defcon 2015
Embedded systems design @ defcon 2015
Rodrigo Almeida
 
Embedded systems development Defcon 19
Embedded systems development Defcon 19Embedded systems development Defcon 19
Embedded systems development Defcon 19
Rodrigo Almeida
 
As diferentes engenharias
As diferentes engenhariasAs diferentes engenharias
As diferentes engenharias
Rodrigo 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 Lacerda
Rodrigo 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 drivers
Rodrigo Almeida
 
Kernel com requisitos temporais
Kernel com requisitos temporaisKernel com requisitos temporais
Kernel com requisitos temporais
Rodrigo Almeida
 
Kernel cooperativo
Kernel cooperativoKernel cooperativo
Kernel cooperativo
Rodrigo Almeida
 
Definição de processos
Definição de processosDefinição de processos
Definição de processos
Rodrigo Almeida
 
Ponteiros de Função
Ponteiros de FunçãoPonteiros de Função
Ponteiros de Função
Rodrigo Almeida
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffers
Rodrigo Almeida
 
Introdução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcadosIntrodução aos sistemas operacionais embarcados
Introdução aos sistemas operacionais embarcados
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
 
Comunicação serial
Comunicação serialComunicação serial
Comunicação serial
Rodrigo Almeida
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexados
Rodrigo 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 microcontrolador
Rodrigo Almeida
 

Mais 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
 

Último

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
WELITONNOGUEIRA3
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
Momento da Informática
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
joaovmp3
 

Último (8)

Manual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdfManual-de-Credenciamento ANATER 2023.pdf
Manual-de-Credenciamento ANATER 2023.pdf
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdfDESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
DESENVOLVIMENTO DE SOFTWARE I_aula1-2.pdf
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Certificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdfCertificado Jornada Python Da Hashtag.pdf
Certificado Jornada Python Da Hashtag.pdf
 

Leitura de teclas com arranjo 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