PIC do Zero

Programação em C para Microcontroladores PIC

Aula 22 – Teclado Matricial 4x4 com PIC

Nesta aula vamos estudar o teclado matricial 4x4, muito utilizado em sistemas embarcados para entrada de senhas, navegação em menus, configuração de parâmetros e criação de pequenas IHMs com PIC.

1. O que é um teclado matricial?

Um teclado matricial é formado por linhas e colunas. Em vez de usar um pino para cada tecla, as teclas são organizadas em forma de matriz, economizando entradas e saídas do microcontrolador.

Teclado 4x4:
4 linhas
4 colunas
16 teclas

2. Layout comum do teclado 4x4

1   2   3   A
4   5   6   B
7   8   9   C
*   0   #   D

3. Linhas e colunas

Normalmente o teclado possui 8 fios:

R1, R2, R3, R4 = Linhas
C1, C2, C3, C4 = Colunas

4. Princípio de funcionamento

Quando uma tecla é pressionada, ela conecta uma linha a uma coluna. O PIC identifica qual linha e qual coluna foram conectadas e descobre a tecla pressionada.

Tecla pressionada = interseção entre linha e coluna

5. Exemplo

Se a linha 2 e a coluna 3 forem conectadas, a tecla pressionada é:

Linha 2
Coluna 3

Tecla = 6

6. Varredura do teclado

O processo de leitura do teclado é chamado de varredura ou scan. O PIC ativa uma linha por vez e verifica em qual coluna aparece o sinal.

Ativa Linha 1 → lê colunas
Ativa Linha 2 → lê colunas
Ativa Linha 3 → lê colunas
Ativa Linha 4 → lê colunas

7. Ligação com PIC

Podemos ligar as linhas como saídas e as colunas como entradas.

R1 → RB0
R2 → RB1
R3 → RB2
R4 → RB3

C1 → RB4
C2 → RB5
C3 → RB6
C4 → RB7

8. Configuração dos pinos

TRISB = 0b11110000;

// RB0 a RB3 = saídas
// RB4 a RB7 = entradas

9. Pull-up nas colunas

As colunas devem possuir pull-up para evitar leituras falsas quando nenhuma tecla estiver pressionada.

Coluna solta      = 1
Tecla pressionada = 0

10. Debounce

Quando uma tecla é pressionada, os contatos mecânicos podem gerar vários pulsos rápidos. Esse efeito é chamado de bounce.

Pressionou uma vez
PIC pode ler várias vezes

Para reduzir esse problema, usamos debounce por software.

__delay_ms(20);

11. Mapa de teclas

O mapa associa cada posição da matriz ao caractere correspondente.

char teclas[4][4] =
{
    {'1','2','3','A'},
    {'4','5','6','B'},
    {'7','8','9','C'},
    {'*','0','#','D'}
};

12. Função de leitura do teclado

char ler_teclado()
{
    // A função deve ativar linha por linha
    // e verificar qual coluna foi acionada.
    // Quando encontrar uma tecla, retorna o caractere.
}

13. Exemplo simplificado

char tecla;

tecla = ler_teclado();

if(tecla != 0)
{
    // Uma tecla foi pressionada
}

14. Exibindo tecla no LCD

Integrando o teclado com o LCD 16x2 da Aula 21, podemos mostrar a tecla pressionada.

tecla = ler_teclado();

if(tecla != 0)
{
    Lcd_Chr(1,1,tecla);
}

15. Sistema de senha

Um uso muito comum do teclado matricial é a criação de senha de acesso.

Senha correta: 1234
Digite no teclado: 1 2 3 4
PIC compara os valores

16. Exemplo lógico de senha

if(senha_digitada == senha_correta)
{
    // Acesso liberado
}
else
{
    // Acesso negado
}

17. Menus de navegação

As teclas A, B, C e D podem ser usadas como funções especiais.

TeclaFunção sugerida
AEntrar no menu
BVoltar
CAumentar valor
DDiminuir valor
#Confirmar
*Cancelar

18. Configuração de parâmetros

Com LCD + teclado, podemos criar sistemas para configurar:

  • Setpoint de temperatura.
  • Tempo de partida.
  • Velocidade desejada.
  • Senha de acesso.
  • Endereço Modbus.
  • Parâmetros de manutenção.

19. Aplicações industriais

Teclados matriciais são usados em controladores, painéis, alarmes, balanças, sistemas de acesso, equipamentos de laboratório e pequenas IHMs industriais.

20. Cuidados importantes

  • Utilize pull-up ou pull-down corretamente.
  • Implemente debounce.
  • Evite fios longos sem proteção.
  • Proteja entradas em ambientes industriais.
  • Organize o código em funções.

21. Exercícios

Exercício 1: Quantas teclas possui um teclado 4x4?

16 teclas

Exercício 2: Quantos fios normalmente possui o teclado 4x4?

8 fios

Exercício 3: O que é varredura?

É o processo de ativar linhas e ler colunas para descobrir a tecla pressionada.

Exercício 4: Para que serve o debounce?

Para evitar múltiplas leituras causadas pelo contato mecânico da tecla.

22. Laboratório prático

Monte um PIC com LCD 16x2 e teclado matricial 4x4. O objetivo é exibir no LCD a tecla pressionada pelo usuário.

Teclado 4x4 → PORTB
LCD 16x2    → PORTD

Ao pressionar uma tecla:
LCD mostra: TECLA = X

23. Projeto integrador

Criar um pequeno sistema de acesso com senha.

Digite senha:
****

Senha correta:
ACESSO LIBERADO

Senha incorreta:
ACESSO NEGADO

24. Resumo da Aula

  • Teclado 4x4 possui 4 linhas e 4 colunas.
  • A tecla é identificada pela interseção linha/coluna.
  • Varredura é o processo de leitura do teclado.
  • Debounce evita leituras duplicadas.
  • LCD + teclado permite criar pequenas IHMs.
  • É possível criar senhas, menus e configuração de parâmetros.

Próxima Aula – Aula 23

Na próxima aula vamos estudar Memória EEPROM Interna do PIC, aprendendo a salvar configurações, senhas, setpoints e parâmetros mesmo após desligar o equipamento.