SlideShare uma empresa Scribd logo
1 de 37
Baixar para ler offline
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
Teclado




Revisão




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
1    void main(void) interrupt 0 {
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
   Circuito básico




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

1    //processo de varredura
2
3    for(i = 0; i < 2; 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
Display de LCD




Display de LCD




   ELT024   Leitura de teclas e teclado matricial
Display de LCD




  ELT024   Leitura de teclas e teclado matricial
Display de LCD



• Display de LCD
    • Utiliza-se do conceito de polarização da luz para formar a
       imagem
    • Os pixels são formados por retenção de luz 1
    • Geralmente possue um microcontrolador integrado
    • São encontrados em formato de 7 segmentos ou matricial 2
    • No formato matricial é possivel representar as letras, números
       e diversos simbolos




1
    No caso dos displays com leds, os pixels são formados por emissão de luz.
2
    Os formatos matriciais mais comuns são 5x7 e 5x8
                               ELT024    Leitura de teclas e teclado matricial
Display de LCD




• Este tipo de display pode ser visto como uma solução de
  exibição completa:
    •   O microcontrolador faz o papel da placa de vídeo
    •   O display faz o papel do monitor
    •   A comunicação é feita através de um barramento paralelo
    •   O barramento é comandado por 3 sinais de controle




                          ELT024   Leitura de teclas e teclado matricial
Display de LCD




  ELT024   Leitura de teclas e teclado matricial
Display de LCD



1   Terra                             9   Bit 2
2   VCC (+5V)                        10   Bit 3
3   Ajuste do contraste              11   Bit 4
4   Seleção de registro(RS)          12   Bit 5
5   Read/Write (RW)                  13   Bit 6
6   Clock, Enable (EN)               14   Bit 7
7   Bit 0                            15   Backlight +
8   Bit 1                            16   Backlight Gnd




                          ELT024   Leitura de teclas e teclado matricial
Display de LCD




Atenção
Cuidado com a pinagem do display. O que está em uso na aula é
15, 16, 1, 2, ... 14. Os pinos não estão em ordem. A
troca/substituição do display tem que ser realizada com atenção
pois a placa está pronta para receber apenas esse tipo de display.




                           ELT024   Leitura de teclas e teclado matricial
Display de LCD




  ELT024   Leitura de teclas e teclado matricial
Display de LCD



  • Rotina para envio de dados/comando para o LCD
      • Para comando RS = 0; Para dados RS = 1;
      • Habilitar a escrita (RW=1) ou leitura (RW=0)
      • Acionar terminal EN (enable)
      • Delay para o LCD entender o comando
      • Desabilita o terminal EN
      • Retorna os terminais (RW e RS) para nível baixo                 3




   3
     Para melhor uso é interessante retornar os terminais para o valor que
tinham antes de chamar a rotina, já que eles estão multiplexados com outros
dispositivos
                              ELT024    Leitura de teclas e teclado matricial
Display de LCD




http://www.sparkfun.com/datasheets/LCD/HD44780.pdf - Datasheet Hitachi
                           ELT024    Leitura de teclas e teclado matricial
Display de LCD




http://www.sparkfun.com/datasheets/LCD/HD44780.pdf - Datasheet Hitachi
                           ELT024    Leitura de teclas e teclado matricial
Display de LCD

         Formação dos comandos para controle do                  LCD:
                       Dados (bit)                                            Tempo
Instrução RS RW
                       7 6 5 4 3 2                                1      0    (máx.)
Limpa       0    0     0 0 0 0 0 0                                0      1    37 us
Reset       0    0     0 0 0 0 0 0                                1      -    1.5ms
Config.      0    0     0 0 0 0 0 1                                ID     S    37 us
Config.      0    0     0 0 0 0 1 D                                C      B    37 us
Movim.      0    0     0 0 0 1 SC RL                              -      -    37 us
Config.      0    0     0 0 1 DL N F                               -      -    37 us
Move(l,c) 0      0     1 X 0 0 Coluna                                         37 us
Ocup.       0    1     BF -    -   -   -    -                     -      -    10 us
 http://www.sparkfun.com/datasheets/LCD/HD44780.pdf - Datasheet Hitachi
                              (Modificado)



                            ELT024    Leitura de teclas e teclado matricial
Display de LCD


• Definições:
    • ID: 1 – Incrementa, 0 – Decrementa
    • S: 1 – O display acompanha o deslocamento
    • SC: 1 – Desloca o display, 0 – Desloca o cursor
    • RL: 1 – Move para direita, 0 – Move para esquerda
    • DL: 1 – 8 bits, 0 – 4 bits
    • N: 1 – 2 linhas, 0 – 1 linha
    • F: 1 – 5x10 pontos, 0 – 5x8 pontos
    • BF: 1 – Ocupado, 0 – Disponível
    • X: 1 – 2a linha, 0 – 1a linha
    • Coluna: nibble indicativo da coluna




                        ELT024   Leitura de teclas e teclado matricial
Display de LCD




• Desenvolvimento da biblioteca
    • Criação de rotinas de delay (2ms e 40us)
    • Função para enviar comandos
    • Função para enviar dados
    • Função de inicialização




                         ELT024   Leitura de teclas e teclado matricial
Display de LCD
1    #include "lcd.h"
2    #include "basico.h"
3    #define RS 0
4    #define EN 1
5    #define RW 2
6
7    void Delay40us(void){
8    //para um cristal de 8MHz cada instrução
9    //gasta 0,5 us: 40/0,5 = 80 instruções
10       unsigned char i;
11   //3 + 3 * 25 = 78
12       for(i=0; i < 25; i++);
13   }
14
15   void Delay2ms(void){
16       unsigned char i;
17       for(i=0; i < 200; i++)
18       {
19           Delay40us();
20       }
21   }

                                  ELT024   Leitura de teclas e teclado matricial
Display de LCD
1    void EnviaComando(unsigned char cmd){
2        BitClr(PORTE,RS); //comando
3        BitClr(PORTE,RW); // habilita escrita
4        PORTD = cmd;
5        BitSet(PORTE,EN); //habilita leitura
6        Delay2ms();
7        BitClr(PORTE,EN); //termina leitura
8        BitClr(PORTE,RS); //deixa em nível baixo
9        BitClr(PORTE,RW); //deixa em nível baixo
10       Delay2ms();
11   }
12
13   void EnviaDados(unsigned char valor){
14       BitSet(PORTE,RS); //dados
15       BitClr(PORTE,RW); // habilita escrita
16       PORTD = valor;
17       BitSet(PORTE,EN); //habilita leitura
18       Delay40us();
19       BitClr(PORTE,EN); //termina leitura
20       BitClr(PORTE,RS); //deixa em nível baixo
21       BitClr(PORTE,RW); //deixa em nível baixo
22       Delay40us();
23   }
                                 ELT024    Leitura de teclas e teclado matricial
Display de LCD
1    void InicializaLCD(void){
2        Delay2ms(); // garante inicialização do LCD
3        Delay2ms();
4        Delay2ms();
5        Delay2ms();
6        Delay2ms();
7    // configurações de direção dos terminais
8        BitClr(TRISE,RS);    //RS
9        BitClr(TRISE,EN);    //EN
10       BitClr(TRISE,RW);    //RW
11       TRISD = 0x00;        //dados
12       ADCON1 = 0b00001110;
13   //configura o display
14       EnviaComando(0x38); //8bits, 2 linhas, 5x8
15       EnviaComando(0x06); //modo incremental
16       EnviaComando(0x0F); //display, cursor e blinking ON
17       EnviaComando(0x03); //zera contadores internos
18       EnviaComando(0x01); //limpar display
19       EnviaComando(0x80); //posição inicial
20   }


                                 ELT024    Leitura de teclas e teclado matricial
Display de LCD




1   #ifndef LCD_H
2       #define LCD_H
3       void EnviaComando(unsigned char cmd);
4       void EnviaDados(unsigned char valor);
5       void InicializaLCD(void);
6   #endif //LCD_H




                                ELT024    Leitura de teclas e teclado matricial
Display de LCD

1    #include "basico.h"
2    #include "config.h"
3    #include "lcd.h"
4
5    //inicio do programa
6    void main(void) interrupt 0
7    {
8        unsigned int i,j;
9        char msg[] = "Hello World!";
10       InicializaLCD();
11       for(i=0;i<11;i++)
12       {
13           EnviaDados(msg[i]);
14           for(j = 0; j < 65000; j++);
15       }
16       for(;;);
17   }




                                 ELT024    Leitura de teclas e teclado matricial
Teclado




Desenhando imagens no LCD




         ELT024   Leitura de teclas e teclado matricial
Display de LCD




• A maioria dos LCD’s permite a criação de caracteres
  customizados
• Para os display’s compatíveis com a controladora HD44780:
    •   8 caracteres disponíveis
    •   Formato binário e matricial de 8*5
    •   Armazenados a partir do endereço 0x40
    •   Os valores são salvos por linha de caracter




                           ELT024   Leitura de teclas e teclado matricial
Display de LCD


0x40
       Caracter 0
0x47
                       0x50    1a linha      0x04
0x48
       Caracter 1      0x51    2a linha     0x0E
0x4F
                       0x52    3a linha     0x0E
0x50
       Caracter 2      0x53    4a linha     0x0E
0x57
                       0x54    5a linha     0x0E

           ...         0x55    6a linha      0x1F
                       0x56    7a linha      0x00
0x70
       Caracter 6      0x57    8a linha      0x04
0x77
0x78
       Caracter 7
0x7F                                                      Apenas 5 bits por linha!



                      ELT024     Leitura de teclas e teclado matricial
Display de LCD


1    //Cada linha é representada por um caracter
2    char sino[8] =
3            {0x04, 0x0E, 0x0E, 0x0E, 0x0E, 0x1F, 0x00, 0x04};
4
5    //Configura para a primeira posição de memória
6    EnviaComando(0x40);
7

8    //Envia cada uma das linhas em ordem
9    for(i=0; i<8; i++){
10       EnviaDados(sino[i]);
11   }




                            ELT024   Leitura de teclas e teclado matricial
Display de LCD




• É possível criar um desenho/imagem de até 40*16 pixels (4*2
  caracteres)
• A imagem será binária, apenas pixels brancos ou pretos
• Existe uma separação entre os caracteres, que pode prejudicar
  de certa maneira a imagem em questão




                        ELT024   Leitura de teclas e teclado matricial
Display de LCD




• Passos para geração de uma imagem:
    • 1 - Criar uma imagem binária com o desenho desejado;
    • 2 - Segmentar a imagem em retângulos de 8x5;
    • 3 - Transcrever cada linha em binário/hexadecimal;
    • 4 - Gerar o código fonte.




                        ELT024   Leitura de teclas e teclado matricial
Display de LCD
1 - Criar uma imagem binária com o desenho desejado;




                         ELT024   Leitura de teclas e teclado matricial
Display de LCD
2 - Segmentar a imagem em retângulos de 8x5;




                         ELT024   Leitura de teclas e teclado matricial
Display de LCD
3 - Transcrever cada linha em binário/hexadecimal;

            0x01 0   0   0   0   1   0x11   1   0   0     0   1   0x10 1   0   0   0   0
            0x03 0   0   0   1   1   0x1F 1     1   1     1   1   0x18 1   1   0   0   0
            0x03 0   0   0   1   1   0x00 0     0   0     0   0   0x18 1   1   0   0   0
            0x0E 0   1   1   1   0   0x01 0     0   0     0   1   0x0E 0   1   1   1   0
            0x1C 1   1   1   0   0   0x1F 1     1   1     1   1   0x07 0   0   1   1   1
            0x18 1   1   0   0   0   0x12 1     0   0     1   0   0x03 0   0   0   1   1
            0x08 0   1   0   0   0   0x14 1     0   1     0   0   0x02 0   0   0   1   0
            0x08 0   1   0   0   0   0x1F 1     1   1     1   1   0x02 0   0   0   1   0


            0x08 0   1   0   0   0   0x12 1     0   0     1   0   0x02 0   0   0   1   0
            0x18 1   1   0   0   0   0x14 1     0   1     0   0   0x03 0   0   0   1   1
            0x1C 1   1   1   0   0   0x1F 1     1   1     1   1   0x07 0   0   1   1   1
            0x0E 0   1   1   1   0   0x08 0     1   0     0   0   0x0E 0   1   1   1   0
            0x03 0   0   0   1   1   0x00 0     0   0     0   0   0x18 1   1   0   0   0
            0x03 0   0   0   1   1   0x1F 1     1   1     1   1   0x18 1   1   0   0   0
            0x01 0   0   0   0   1   0x11   1   0   0     0   1   0x10 1   0   0   0   0
            0x00 0   0   0   0   0   0x00 0     0   0     0   0   0x00 0   0   0   0   0




                                     ELT024             Leitura de teclas e teclado matricial
Display de LCD
     4 - Gerar o código fonte.
1    //Cada linha é representada          por um caracter
2    char unifei[48] = {
3        0x01, 0x03, 0x03, 0x0E,          0x1C,   0x18,      0x08,      0x08,       //0,0
4        0x11, 0x1F, 0x00, 0x01,          0x1F,   0x12,      0x14,      0x1F,       //0,1
5        0x10, 0x18, 0x18, 0x0E,          0x07,   0x03,      0x02,      0x02,       //0,2
6        0x08, 0x18, 0x1C, 0x0E,          0x03,   0x03,      0x01,      0x00,       //1,0
7        0x11, 0x1F, 0x00, 0x01,          0x1F,   0x12,      0x14,      0x1F,       //1,1
8        0x02, 0x03, 0x07, 0x0E,          0x18,   0x18,      0x10,      0x00        //1,2
9    };
10
11   EnviaComando(0x40); //Configura para a primeira posição de memór
12   //Envia cada uma das linhas em ordem
13   for(i=0; i<48; i++){
14       EnviaDados(unifei[i]);
15   }

                                 ELT024     Leitura de teclas e teclado matricial
Display de LCD
Resultado:




               ELT024   Leitura de teclas e teclado matricial

Mais conteúdo relacionado

Mais procurados

Elementos de comandos eletricos
Elementos de comandos eletricosElementos de comandos eletricos
Elementos de comandos eletricosIsaac Lima
 
Guia orientativo para elaboracao de projeto eletrico residencial
Guia orientativo para elaboracao de projeto eletrico residencialGuia orientativo para elaboracao de projeto eletrico residencial
Guia orientativo para elaboracao de projeto eletrico residencialRanieri Abrantes Sarmento
 
Apostila principal de desenho técnico mecânico i
Apostila principal de desenho técnico mecânico iApostila principal de desenho técnico mecânico i
Apostila principal de desenho técnico mecânico iPablisson Martins
 
Mit 162601 obra por particular 03.07.2012
Mit 162601   obra por particular 03.07.2012Mit 162601   obra por particular 03.07.2012
Mit 162601 obra por particular 03.07.2012Renato Vasconcelos
 
Nbr 8400 calculo de equipamento para levantamento e movimentacao de cargas
Nbr 8400   calculo de equipamento para levantamento e movimentacao de cargasNbr 8400   calculo de equipamento para levantamento e movimentacao de cargas
Nbr 8400 calculo de equipamento para levantamento e movimentacao de cargasteyson
 
ufcd_6033_-_transformadores.pptx
ufcd_6033_-_transformadores.pptxufcd_6033_-_transformadores.pptx
ufcd_6033_-_transformadores.pptxRicardo Santos
 
Simbologia pneumatica
Simbologia pneumaticaSimbologia pneumatica
Simbologia pneumaticaGleiton Kunde
 
Catálogo tigre agua fria
Catálogo tigre agua friaCatálogo tigre agua fria
Catálogo tigre agua friaMarcelohft
 
Instalações elétricas prática - SENAI
Instalações elétricas   prática - SENAIInstalações elétricas   prática - SENAI
Instalações elétricas prática - SENAILeonardo Chaves
 

Mais procurados (20)

Elementos de comandos eletricos
Elementos de comandos eletricosElementos de comandos eletricos
Elementos de comandos eletricos
 
Esquemas de aterramento
Esquemas de aterramentoEsquemas de aterramento
Esquemas de aterramento
 
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
 
Guia orientativo para elaboracao de projeto eletrico residencial
Guia orientativo para elaboracao de projeto eletrico residencialGuia orientativo para elaboracao de projeto eletrico residencial
Guia orientativo para elaboracao de projeto eletrico residencial
 
Apostila principal de desenho técnico mecânico i
Apostila principal de desenho técnico mecânico iApostila principal de desenho técnico mecânico i
Apostila principal de desenho técnico mecânico i
 
Mit 162601 obra por particular 03.07.2012
Mit 162601   obra por particular 03.07.2012Mit 162601   obra por particular 03.07.2012
Mit 162601 obra por particular 03.07.2012
 
Esquema de ligacao
Esquema de ligacaoEsquema de ligacao
Esquema de ligacao
 
Disjuntor siemens
Disjuntor siemensDisjuntor siemens
Disjuntor siemens
 
Soft ssw05
Soft ssw05Soft ssw05
Soft ssw05
 
Eletrotecnica
EletrotecnicaEletrotecnica
Eletrotecnica
 
Projetos com microcontroladores
Projetos com microcontroladoresProjetos com microcontroladores
Projetos com microcontroladores
 
Nbr 8400 calculo de equipamento para levantamento e movimentacao de cargas
Nbr 8400   calculo de equipamento para levantamento e movimentacao de cargasNbr 8400   calculo de equipamento para levantamento e movimentacao de cargas
Nbr 8400 calculo de equipamento para levantamento e movimentacao de cargas
 
Controladores - PID
Controladores - PIDControladores - PID
Controladores - PID
 
ufcd_6033_-_transformadores.pptx
ufcd_6033_-_transformadores.pptxufcd_6033_-_transformadores.pptx
ufcd_6033_-_transformadores.pptx
 
Amplificador operacional
Amplificador operacionalAmplificador operacional
Amplificador operacional
 
Simbologia pneumatica
Simbologia pneumaticaSimbologia pneumatica
Simbologia pneumatica
 
Tabela condutores-cobre-awg-x-mm
Tabela condutores-cobre-awg-x-mmTabela condutores-cobre-awg-x-mm
Tabela condutores-cobre-awg-x-mm
 
Multimetros
MultimetrosMultimetros
Multimetros
 
Catálogo tigre agua fria
Catálogo tigre agua friaCatálogo tigre agua fria
Catálogo tigre agua fria
 
Instalações elétricas prática - SENAI
Instalações elétricas   prática - SENAIInstalações elétricas   prática - SENAI
Instalações elétricas prática - SENAI
 

Semelhante a Utilizando um Display de LCD

Leitura de teclas com arranjo matricial
Leitura de teclas com arranjo matricialLeitura de teclas com arranjo matricial
Leitura de teclas com arranjo matricialRodrigo Almeida
 
gk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfgk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfMicaelMarques13
 
Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051 Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051 SANTIAGO PABLO ALBERTO
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladoresDanilo Morais Pagano
 
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
 
Arduino - Parte 3.pdf
Arduino - Parte 3.pdfArduino - Parte 3.pdf
Arduino - Parte 3.pdfprofwtelles
 
Comunicação PC - PC via porta paralela
Comunicação PC - PC via porta paralelaComunicação PC - PC via porta paralela
Comunicação PC - PC via porta paralelaluizgraf
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosRodrigo Almeida
 
Arduino - iniciação à linguagem C: LCD 1602
Arduino - iniciação à linguagem C: LCD 1602Arduino - iniciação à linguagem C: LCD 1602
Arduino - iniciação à linguagem C: LCD 1602Ana Carneirinho
 

Semelhante a Utilizando um Display de LCD (20)

Leitura de teclas com arranjo matricial
Leitura de teclas com arranjo matricialLeitura de teclas com arranjo matricial
Leitura de teclas com arranjo matricial
 
Comunicação serial
Comunicação serialComunicação serial
Comunicação serial
 
gk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdfgk_2021_01_Aula07-twi.pdf
gk_2021_01_Aula07-twi.pdf
 
Pic aula1
Pic   aula1Pic   aula1
Pic aula1
 
Roteiro exp9
Roteiro exp9Roteiro exp9
Roteiro exp9
 
Clp ab avancado
Clp ab avancadoClp ab avancado
Clp ab avancado
 
Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051 Microcontroladores: El microcontrolador 8051
Microcontroladores: El microcontrolador 8051
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Pic18xx
Pic18xxPic18xx
Pic18xx
 
Programação básica de microcontroladores
Programação básica de microcontroladoresProgramação básica de microcontroladores
Programação básica de microcontroladores
 
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
 
Arduino - Parte 3.pdf
Arduino - Parte 3.pdfArduino - Parte 3.pdf
Arduino - Parte 3.pdf
 
Circuitos combinatorios
Circuitos combinatoriosCircuitos combinatorios
Circuitos combinatorios
 
Comunicação PC - PC via porta paralela
Comunicação PC - PC via porta paralelaComunicação PC - PC via porta paralela
Comunicação PC - PC via porta paralela
 
ARM
ARMARM
ARM
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexados
 
Arduino - iniciação à linguagem C: LCD 1602
Arduino - iniciação à linguagem C: LCD 1602Arduino - iniciação à linguagem C: LCD 1602
Arduino - iniciação à linguagem C: LCD 1602
 
Aula1 30-07-120922184742-phpapp02
Aula1 30-07-120922184742-phpapp02Aula1 30-07-120922184742-phpapp02
Aula1 30-07-120922184742-phpapp02
 
MIPS Pipeline
MIPS Pipeline MIPS Pipeline
MIPS Pipeline
 

Mais 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
 
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
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registrosRodrigo 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
 
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
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registros
 
Operações com Bits
Operações com BitsOperações com Bits
Operações com Bits
 

Último

Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...HELENO FAVACHO
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*Viviane Moreiras
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxFlviaGomes64
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxLeonardoGabriel65
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeitotatianehilda
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPaulaYaraDaasPedro
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...Francisco Márcio Bezerra Oliveira
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 

Último (20)

Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Produção de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptxProdução de Texto - 5º ano - CRÔNICA.pptx
Produção de Texto - 5º ano - CRÔNICA.pptx
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 

Utilizando um Display de LCD

  • 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. Teclado Revisão ELT024 Leitura de teclas e teclado matricial
  • 3. 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
  • 4. Leitura de Teclas Debounce Circuito com bouncing http://www.labbookpages.co.uk/electronics/debounce.html - Dr. Greensted ELT024 Leitura de teclas e teclado matricial
  • 5. Leitura de Teclas Debounce 1 void main(void) interrupt 0 { 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
  • 6. Leitura Matricial Circuito básico ELT024 Leitura de teclas e teclado matricial
  • 7. Leitura Matricial Processo de Varredura 1 //processo de varredura 2 3 for(i = 0; i < 2; 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
  • 8. Display de LCD Display de LCD ELT024 Leitura de teclas e teclado matricial
  • 9. Display de LCD ELT024 Leitura de teclas e teclado matricial
  • 10. Display de LCD • Display de LCD • Utiliza-se do conceito de polarização da luz para formar a imagem • Os pixels são formados por retenção de luz 1 • Geralmente possue um microcontrolador integrado • São encontrados em formato de 7 segmentos ou matricial 2 • No formato matricial é possivel representar as letras, números e diversos simbolos 1 No caso dos displays com leds, os pixels são formados por emissão de luz. 2 Os formatos matriciais mais comuns são 5x7 e 5x8 ELT024 Leitura de teclas e teclado matricial
  • 11. Display de LCD • Este tipo de display pode ser visto como uma solução de exibição completa: • O microcontrolador faz o papel da placa de vídeo • O display faz o papel do monitor • A comunicação é feita através de um barramento paralelo • O barramento é comandado por 3 sinais de controle ELT024 Leitura de teclas e teclado matricial
  • 12. Display de LCD ELT024 Leitura de teclas e teclado matricial
  • 13. Display de LCD 1 Terra 9 Bit 2 2 VCC (+5V) 10 Bit 3 3 Ajuste do contraste 11 Bit 4 4 Seleção de registro(RS) 12 Bit 5 5 Read/Write (RW) 13 Bit 6 6 Clock, Enable (EN) 14 Bit 7 7 Bit 0 15 Backlight + 8 Bit 1 16 Backlight Gnd ELT024 Leitura de teclas e teclado matricial
  • 14. Display de LCD Atenção Cuidado com a pinagem do display. O que está em uso na aula é 15, 16, 1, 2, ... 14. Os pinos não estão em ordem. A troca/substituição do display tem que ser realizada com atenção pois a placa está pronta para receber apenas esse tipo de display. ELT024 Leitura de teclas e teclado matricial
  • 15. Display de LCD ELT024 Leitura de teclas e teclado matricial
  • 16. Display de LCD • Rotina para envio de dados/comando para o LCD • Para comando RS = 0; Para dados RS = 1; • Habilitar a escrita (RW=1) ou leitura (RW=0) • Acionar terminal EN (enable) • Delay para o LCD entender o comando • Desabilita o terminal EN • Retorna os terminais (RW e RS) para nível baixo 3 3 Para melhor uso é interessante retornar os terminais para o valor que tinham antes de chamar a rotina, já que eles estão multiplexados com outros dispositivos ELT024 Leitura de teclas e teclado matricial
  • 17. Display de LCD http://www.sparkfun.com/datasheets/LCD/HD44780.pdf - Datasheet Hitachi ELT024 Leitura de teclas e teclado matricial
  • 18. Display de LCD http://www.sparkfun.com/datasheets/LCD/HD44780.pdf - Datasheet Hitachi ELT024 Leitura de teclas e teclado matricial
  • 19. Display de LCD Formação dos comandos para controle do LCD: Dados (bit) Tempo Instrução RS RW 7 6 5 4 3 2 1 0 (máx.) Limpa 0 0 0 0 0 0 0 0 0 1 37 us Reset 0 0 0 0 0 0 0 0 1 - 1.5ms Config. 0 0 0 0 0 0 0 1 ID S 37 us Config. 0 0 0 0 0 0 1 D C B 37 us Movim. 0 0 0 0 0 1 SC RL - - 37 us Config. 0 0 0 0 1 DL N F - - 37 us Move(l,c) 0 0 1 X 0 0 Coluna 37 us Ocup. 0 1 BF - - - - - - - 10 us http://www.sparkfun.com/datasheets/LCD/HD44780.pdf - Datasheet Hitachi (Modificado) ELT024 Leitura de teclas e teclado matricial
  • 20. Display de LCD • Definições: • ID: 1 – Incrementa, 0 – Decrementa • S: 1 – O display acompanha o deslocamento • SC: 1 – Desloca o display, 0 – Desloca o cursor • RL: 1 – Move para direita, 0 – Move para esquerda • DL: 1 – 8 bits, 0 – 4 bits • N: 1 – 2 linhas, 0 – 1 linha • F: 1 – 5x10 pontos, 0 – 5x8 pontos • BF: 1 – Ocupado, 0 – Disponível • X: 1 – 2a linha, 0 – 1a linha • Coluna: nibble indicativo da coluna ELT024 Leitura de teclas e teclado matricial
  • 21. Display de LCD • Desenvolvimento da biblioteca • Criação de rotinas de delay (2ms e 40us) • Função para enviar comandos • Função para enviar dados • Função de inicialização ELT024 Leitura de teclas e teclado matricial
  • 22. Display de LCD 1 #include "lcd.h" 2 #include "basico.h" 3 #define RS 0 4 #define EN 1 5 #define RW 2 6 7 void Delay40us(void){ 8 //para um cristal de 8MHz cada instrução 9 //gasta 0,5 us: 40/0,5 = 80 instruções 10 unsigned char i; 11 //3 + 3 * 25 = 78 12 for(i=0; i < 25; i++); 13 } 14 15 void Delay2ms(void){ 16 unsigned char i; 17 for(i=0; i < 200; i++) 18 { 19 Delay40us(); 20 } 21 } ELT024 Leitura de teclas e teclado matricial
  • 23. Display de LCD 1 void EnviaComando(unsigned char cmd){ 2 BitClr(PORTE,RS); //comando 3 BitClr(PORTE,RW); // habilita escrita 4 PORTD = cmd; 5 BitSet(PORTE,EN); //habilita leitura 6 Delay2ms(); 7 BitClr(PORTE,EN); //termina leitura 8 BitClr(PORTE,RS); //deixa em nível baixo 9 BitClr(PORTE,RW); //deixa em nível baixo 10 Delay2ms(); 11 } 12 13 void EnviaDados(unsigned char valor){ 14 BitSet(PORTE,RS); //dados 15 BitClr(PORTE,RW); // habilita escrita 16 PORTD = valor; 17 BitSet(PORTE,EN); //habilita leitura 18 Delay40us(); 19 BitClr(PORTE,EN); //termina leitura 20 BitClr(PORTE,RS); //deixa em nível baixo 21 BitClr(PORTE,RW); //deixa em nível baixo 22 Delay40us(); 23 } ELT024 Leitura de teclas e teclado matricial
  • 24. Display de LCD 1 void InicializaLCD(void){ 2 Delay2ms(); // garante inicialização do LCD 3 Delay2ms(); 4 Delay2ms(); 5 Delay2ms(); 6 Delay2ms(); 7 // configurações de direção dos terminais 8 BitClr(TRISE,RS); //RS 9 BitClr(TRISE,EN); //EN 10 BitClr(TRISE,RW); //RW 11 TRISD = 0x00; //dados 12 ADCON1 = 0b00001110; 13 //configura o display 14 EnviaComando(0x38); //8bits, 2 linhas, 5x8 15 EnviaComando(0x06); //modo incremental 16 EnviaComando(0x0F); //display, cursor e blinking ON 17 EnviaComando(0x03); //zera contadores internos 18 EnviaComando(0x01); //limpar display 19 EnviaComando(0x80); //posição inicial 20 } ELT024 Leitura de teclas e teclado matricial
  • 25. Display de LCD 1 #ifndef LCD_H 2 #define LCD_H 3 void EnviaComando(unsigned char cmd); 4 void EnviaDados(unsigned char valor); 5 void InicializaLCD(void); 6 #endif //LCD_H ELT024 Leitura de teclas e teclado matricial
  • 26. Display de LCD 1 #include "basico.h" 2 #include "config.h" 3 #include "lcd.h" 4 5 //inicio do programa 6 void main(void) interrupt 0 7 { 8 unsigned int i,j; 9 char msg[] = "Hello World!"; 10 InicializaLCD(); 11 for(i=0;i<11;i++) 12 { 13 EnviaDados(msg[i]); 14 for(j = 0; j < 65000; j++); 15 } 16 for(;;); 17 } ELT024 Leitura de teclas e teclado matricial
  • 27. Teclado Desenhando imagens no LCD ELT024 Leitura de teclas e teclado matricial
  • 28. Display de LCD • A maioria dos LCD’s permite a criação de caracteres customizados • Para os display’s compatíveis com a controladora HD44780: • 8 caracteres disponíveis • Formato binário e matricial de 8*5 • Armazenados a partir do endereço 0x40 • Os valores são salvos por linha de caracter ELT024 Leitura de teclas e teclado matricial
  • 29. Display de LCD 0x40 Caracter 0 0x47 0x50 1a linha 0x04 0x48 Caracter 1 0x51 2a linha 0x0E 0x4F 0x52 3a linha 0x0E 0x50 Caracter 2 0x53 4a linha 0x0E 0x57 0x54 5a linha 0x0E ... 0x55 6a linha 0x1F 0x56 7a linha 0x00 0x70 Caracter 6 0x57 8a linha 0x04 0x77 0x78 Caracter 7 0x7F Apenas 5 bits por linha! ELT024 Leitura de teclas e teclado matricial
  • 30. Display de LCD 1 //Cada linha é representada por um caracter 2 char sino[8] = 3 {0x04, 0x0E, 0x0E, 0x0E, 0x0E, 0x1F, 0x00, 0x04}; 4 5 //Configura para a primeira posição de memória 6 EnviaComando(0x40); 7 8 //Envia cada uma das linhas em ordem 9 for(i=0; i<8; i++){ 10 EnviaDados(sino[i]); 11 } ELT024 Leitura de teclas e teclado matricial
  • 31. Display de LCD • É possível criar um desenho/imagem de até 40*16 pixels (4*2 caracteres) • A imagem será binária, apenas pixels brancos ou pretos • Existe uma separação entre os caracteres, que pode prejudicar de certa maneira a imagem em questão ELT024 Leitura de teclas e teclado matricial
  • 32. Display de LCD • Passos para geração de uma imagem: • 1 - Criar uma imagem binária com o desenho desejado; • 2 - Segmentar a imagem em retângulos de 8x5; • 3 - Transcrever cada linha em binário/hexadecimal; • 4 - Gerar o código fonte. ELT024 Leitura de teclas e teclado matricial
  • 33. Display de LCD 1 - Criar uma imagem binária com o desenho desejado; ELT024 Leitura de teclas e teclado matricial
  • 34. Display de LCD 2 - Segmentar a imagem em retângulos de 8x5; ELT024 Leitura de teclas e teclado matricial
  • 35. Display de LCD 3 - Transcrever cada linha em binário/hexadecimal; 0x01 0 0 0 0 1 0x11 1 0 0 0 1 0x10 1 0 0 0 0 0x03 0 0 0 1 1 0x1F 1 1 1 1 1 0x18 1 1 0 0 0 0x03 0 0 0 1 1 0x00 0 0 0 0 0 0x18 1 1 0 0 0 0x0E 0 1 1 1 0 0x01 0 0 0 0 1 0x0E 0 1 1 1 0 0x1C 1 1 1 0 0 0x1F 1 1 1 1 1 0x07 0 0 1 1 1 0x18 1 1 0 0 0 0x12 1 0 0 1 0 0x03 0 0 0 1 1 0x08 0 1 0 0 0 0x14 1 0 1 0 0 0x02 0 0 0 1 0 0x08 0 1 0 0 0 0x1F 1 1 1 1 1 0x02 0 0 0 1 0 0x08 0 1 0 0 0 0x12 1 0 0 1 0 0x02 0 0 0 1 0 0x18 1 1 0 0 0 0x14 1 0 1 0 0 0x03 0 0 0 1 1 0x1C 1 1 1 0 0 0x1F 1 1 1 1 1 0x07 0 0 1 1 1 0x0E 0 1 1 1 0 0x08 0 1 0 0 0 0x0E 0 1 1 1 0 0x03 0 0 0 1 1 0x00 0 0 0 0 0 0x18 1 1 0 0 0 0x03 0 0 0 1 1 0x1F 1 1 1 1 1 0x18 1 1 0 0 0 0x01 0 0 0 0 1 0x11 1 0 0 0 1 0x10 1 0 0 0 0 0x00 0 0 0 0 0 0x00 0 0 0 0 0 0x00 0 0 0 0 0 ELT024 Leitura de teclas e teclado matricial
  • 36. Display de LCD 4 - Gerar o código fonte. 1 //Cada linha é representada por um caracter 2 char unifei[48] = { 3 0x01, 0x03, 0x03, 0x0E, 0x1C, 0x18, 0x08, 0x08, //0,0 4 0x11, 0x1F, 0x00, 0x01, 0x1F, 0x12, 0x14, 0x1F, //0,1 5 0x10, 0x18, 0x18, 0x0E, 0x07, 0x03, 0x02, 0x02, //0,2 6 0x08, 0x18, 0x1C, 0x0E, 0x03, 0x03, 0x01, 0x00, //1,0 7 0x11, 0x1F, 0x00, 0x01, 0x1F, 0x12, 0x14, 0x1F, //1,1 8 0x02, 0x03, 0x07, 0x0E, 0x18, 0x18, 0x10, 0x00 //1,2 9 }; 10 11 EnviaComando(0x40); //Configura para a primeira posição de memór 12 //Envia cada uma das linhas em ordem 13 for(i=0; i<48; i++){ 14 EnviaDados(unifei[i]); 15 } ELT024 Leitura de teclas e teclado matricial
  • 37. Display de LCD Resultado: ELT024 Leitura de teclas e teclado matricial