Neste tutorial, faremos a interface de um teclado 4x4 (16 teclas) com o microcontrolador ATMEGA32A. Sabemos que o teclado é um dos dispositivos de entrada mais importantes usados em projetos eletrônicos. O teclado é uma das maneiras mais fáceis de dar comandos ou instruções a um sistema eletrônico.
Componentes necessários
Hardware: ATMEGA32, fonte de alimentação (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), capacitor 100uF, capacitor 100nF, resistor 10KΩ (8 peças).
Software: Atmel studio 6.1 ou Atmel studio 6.2, progisp ou flash magic.
Diagrama de circuito e explicação de trabalho
No circuito, o PORTB do ATMEGA32 está conectado à porta de dados LCD. Aqui, deve-se lembrar de desabilitar a comunicação JTAG em PORTC ou ATMEGA alterando os bytes do fusível, caso se queira usar o PORTC como uma porta de comunicação normal. No LCD 16x2, existem 16 pinos ao todo, se houver uma luz de fundo, se não houver luz de fundo, haverá 14 pinos. Pode-se ligar ou deixar os pinos da luz de fundo. Agora, nos 14 pinos, há 8 pinos de dados (7-14 ou D0-D7), 2 pinos de fonte de alimentação (1 e 2 ou VSS e VDD ou gnd e + 5v), 3º pino para controle de contraste (VEE-controla a espessura dos caracteres mostrado) e 3 pinos de controle (RS & RW e E).
No circuito, você pode observar que eu peguei apenas dois pinos de controle, isso dá a flexibilidade, o bit de contraste e READ / WRITE não são usados com frequência, então eles podem estar em curto com o terra. Isso coloca o LCD em maior contraste e modo de leitura. Precisamos apenas controlar os pinos ENABLE e RS para enviar caracteres e dados de acordo.
As conexões que são feitas para LCD são fornecidas abaixo:
PIN1 ou VSS para aterrar
PIN2 ou VDD ou VCC para alimentação de + 5v
PIN3 ou VEE para aterrar (oferece contraste máximo, melhor para um iniciante)
PIN4 ou RS (seleção de registro) para PD6 de uC
PIN5 ou RW (leitura / gravação) para aterrar (coloca o LCD no modo de leitura facilita a comunicação para o usuário)
PIN6 ou E (habilitar) para PD5 de uC
PIN7 ou D0 a PB0 de uC
PIN8 ou D1 a PB1 de uC
PIN9 ou D2 a PB2 de uC
PIN10 ou D3 a PB3 de uC
PIN11 ou D4 a PB4 de uC
PIN12 ou D5 a PB5 de uC
PIN13 ou D6 a PB6 de uC
PIN14 ou D7 a PB7 de uC
No circuito você pode ver que usamos comunicação de 8 bits (D0-D7) porém não é obrigatória, podemos usar comunicação de 4 bits (D4-D7) mas com 4 bits o programa de comunicação torna-se um pouco complexo. Portanto, pela mera observação da tabela acima, estamos conectando 10 pinos do LCD ao controlador, em que 8 pinos são pinos de dados e 2 pinos para controle.
Agora vamos falar sobre o teclado, o teclado nada mais é do que teclas multiplexadas. Os botões são conectados de forma multiplexada para reduzir o uso de pinos do sistema de controle.
Considere que temos um teclado 4x4, neste teclado temos 16 botões, em casos normais precisamos de 16 pinos do controlador para fazer a interface de 16 botões, mas isso não é bom do ponto de vista do sistema de controle. O uso de pinos pode ser reduzido conectando os botões em formato multiplex.
Por exemplo, considere que temos 16 botões e queremos anexá-los a um controlador para formar um teclado, essas teclas são organizadas como mostrado na figura:
Esses botões são conectados por colunas comuns, conforme mostrado na figura:
Conforme mostrado na figura, as extremidades não marcadas de cada quatro botões são arrastadas para formar uma coluna e, portanto, para 16 chaves, temos quatro colunas.
Se esquecermos as conexões das colunas acima, e as extremidades marcadas comuns conectadas de cada quatro botões juntos para formar uma linha:
Conforme mostrado na figura, para 16 chaves teremos quatro linhas conforme mostrado na figura.
Agora, quando os dois são vistos juntos, obtemos algo como o circuito abaixo:
Aqui, conectamos 16 chaves de forma multiplexada para reduzir o uso de pinos do controlador. Em comparação com o primeiro caso de 16 chaves conectadas, precisávamos de 16 pinos no controlador, mas agora, após a multiplexação, precisamos simplesmente de 8 pinos de controlador para conectar 16 chaves.
Normalmente é o que é apresentado dentro de um teclado:
Conforme mostrado na figura acima, existem 16 teclas no teclado acima e cada uma dessas teclas representa um botão na configuração de botão multiplexado. E também há conexões de 8 pinos, conforme mostrado na figura acima, simbolizando a conexão multiplexada.
Agora para trabalhar:
O teclado aqui tem quatro colunas e quatro linhas, para identificação do botão pressionado, vamos usar o método de referência cruzada. Aqui, primeiro vamos conectar todas as colunas ou todas as linhas ao vcc, portanto, se as linhas estiverem conectadas ao vcc comum, usaremos as colunas como entradas para o controlador.
Agora, se o botão um for pressionado conforme mostrado na figura:
Depois disso, uma corrente flui através do circuito, conforme mostrado na figura abaixo:
Portanto, temos C1 alto, para pressionar um botão. Neste exato momento, vamos mudar a alimentação e as portas de entrada, ou seja, vamos alimentar as colunas e tomar as linhas como entradas, Com isso, haverá um fluxo de energia conforme mostrado na figura abaixo:
Portanto, para a linha, temos R1 alto.
A partir de agora temos C1 alto no primeiro caso e R1 alto no segundo caso, então temos a posição da matriz do botão, portanto, o número “um”.
Se o segundo botão for pressionado, teremos C1 como coluna, mas a lógica superior que obtemos na coluna comum será 'R2'. Portanto, teremos C1 e R2, portanto, teremos a posição da matriz do segundo botão.
É assim que vamos escrever o programa, vamos conectar oito pinos do teclado a oito pinos do controlador. E para começar alimentamos quatro pinos do controlador para alimentar quatro linhas do teclado, neste momento os outros quatro pinos são tomados como entradas. Quando o botão é pressionado, o pino da coluna correspondente é puxado para cima e o pino do controlador é puxado para cima, isso será reconhecido para alterar a entrada para alimentação e alimentação para entrada, portanto, teremos linhas como entradas.
Com isso, obtemos o botão pressionado pelo usuário. Os endereços desta matriz são direcionados ao número correspondente, e este número é mostrado no LCD.
O funcionamento da interface do teclado com o microcontrolador AVR é explicado passo a passo no código C fornecido abaixo. Você também pode verificar: interface do teclado com o microcontrolador 8051.