SlideShare a Scribd company logo
1 of 37
Download to read 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

More Related Content

What's hot

Sistemas Distribuídos - Comunicação Distribuída – RPC
Sistemas Distribuídos - Comunicação Distribuída – RPCSistemas Distribuídos - Comunicação Distribuída – RPC
Sistemas Distribuídos - Comunicação Distribuída – RPC
Adriano Teixeira de Souza
 
Apresentação tcc power point
Apresentação tcc power pointApresentação tcc power point
Apresentação tcc power point
Kizzy Ørberg
 
Senai dispositivos de protecao
Senai dispositivos de protecaoSenai dispositivos de protecao
Senai dispositivos de protecao
ulisses25costa
 
Curso de-comandos-eletricos-e-simbologia
Curso de-comandos-eletricos-e-simbologiaCurso de-comandos-eletricos-e-simbologia
Curso de-comandos-eletricos-e-simbologia
Luciano Cruz
 
Sistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBASistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBA
Adriano Teixeira de Souza
 
Aula 07 - Projeto de Topologia e Exercícios - Parte II
Aula 07 - Projeto de Topologia e Exercícios - Parte IIAula 07 - Projeto de Topologia e Exercícios - Parte II
Aula 07 - Projeto de Topologia e Exercícios - Parte II
Dalton Martins
 
Modelo de currículo profissional de ti
Modelo de currículo   profissional de tiModelo de currículo   profissional de ti
Modelo de currículo profissional de ti
Fernando Palma
 

What's hot (20)

Sistemas Distribuídos - Comunicação Distribuída – RPC
Sistemas Distribuídos - Comunicação Distribuída – RPCSistemas Distribuídos - Comunicação Distribuída – RPC
Sistemas Distribuídos - Comunicação Distribuída – RPC
 
Apresentação tcc power point
Apresentação tcc power pointApresentação tcc power point
Apresentação tcc power point
 
Senai dispositivos de protecao
Senai dispositivos de protecaoSenai dispositivos de protecao
Senai dispositivos de protecao
 
Wd0000047
Wd0000047Wd0000047
Wd0000047
 
Clic 02-manual
Clic 02-manualClic 02-manual
Clic 02-manual
 
Curso de-comandos-eletricos-e-simbologia
Curso de-comandos-eletricos-e-simbologiaCurso de-comandos-eletricos-e-simbologia
Curso de-comandos-eletricos-e-simbologia
 
Sistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBASistemas Distribuídos - Comunicação Distribuída – CORBA
Sistemas Distribuídos - Comunicação Distribuída – CORBA
 
CURSO PROGRAMADOR WEB; Perguntas e respostas 2017
CURSO PROGRAMADOR WEB; Perguntas e respostas 2017CURSO PROGRAMADOR WEB; Perguntas e respostas 2017
CURSO PROGRAMADOR WEB; Perguntas e respostas 2017
 
Protocolo TCP/IP
Protocolo TCP/IPProtocolo TCP/IP
Protocolo TCP/IP
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
Aula 07 - Projeto de Topologia e Exercícios - Parte II
Aula 07 - Projeto de Topologia e Exercícios - Parte IIAula 07 - Projeto de Topologia e Exercícios - Parte II
Aula 07 - Projeto de Topologia e Exercícios - Parte II
 
Protocolo DHCP - Noções básicas - Bóson Treinamentos
Protocolo DHCP - Noções básicas - Bóson TreinamentosProtocolo DHCP - Noções básicas - Bóson Treinamentos
Protocolo DHCP - Noções básicas - Bóson Treinamentos
 
Diferenças entre IPV4 e IPV6
Diferenças entre IPV4 e IPV6Diferenças entre IPV4 e IPV6
Diferenças entre IPV4 e IPV6
 
Modelo de currículo profissional de ti
Modelo de currículo   profissional de tiModelo de currículo   profissional de ti
Modelo de currículo profissional de ti
 
Engastamento de postes
Engastamento de postesEngastamento de postes
Engastamento de postes
 
Aula 4 - Sistemas Gerenciadores de Banco de Dados
Aula 4 - Sistemas Gerenciadores de Banco de DadosAula 4 - Sistemas Gerenciadores de Banco de Dados
Aula 4 - Sistemas Gerenciadores de Banco de Dados
 
05-Subsistemas de Cabeamento Estruturado.pdf
05-Subsistemas de Cabeamento Estruturado.pdf05-Subsistemas de Cabeamento Estruturado.pdf
05-Subsistemas de Cabeamento Estruturado.pdf
 
Sql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumoSql básico - Teoria e prática: Um grande resumo
Sql básico - Teoria e prática: Um grande resumo
 
Desenvolvimento Web com Java Script Full Stack
Desenvolvimento Web com Java Script Full StackDesenvolvimento Web com Java Script Full Stack
Desenvolvimento Web com Java Script Full Stack
 

Similar to Utilizando um Display de LCD

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
luizgraf
 

Similar to 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
 

More from 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
 
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
 
Acesso à memória e registros
Acesso à memória e registrosAcesso à memória e registros
Acesso à memória e registros
Rodrigo Almeida
 

More from 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
 

Recently uploaded

Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
rfmbrandao
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
LidianeLill2
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 

Recently uploaded (20)

Sistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturasSistema articular aula 4 (1).pdf articulações e junturas
Sistema articular aula 4 (1).pdf articulações e junturas
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdfRepública Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
República Velha (República da Espada e Oligárquica)-Sala de Aula.pdf
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
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...
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
Questões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LPQuestões de Língua Portuguesa - gincana da LP
Questões de Língua Portuguesa - gincana da LP
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptxSlides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
Slides Lição 06, Central Gospel, O Anticristo, 1Tr24.pptx
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM  POLÍGON...
Polígonos, Diagonais de um Polígono, SOMA DOS ANGULOS INTERNOS DE UM POLÍGON...
 
Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)Sopa de letras | Dia da Europa 2024 (nível 1)
Sopa de letras | Dia da Europa 2024 (nível 1)
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 

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