En este tutorial vamos a conectar un teclado 4x4 (16 teclas) con el microcontrolador ATMEGA32A. Sabemos que el teclado es uno de los dispositivos de entrada más importantes utilizados en proyectos de electrónica. El teclado es una de las formas más fáciles de dar comandos o instrucciones a un sistema electrónico.
Componentes requeridos
Hardware: ATMEGA32, fuente de alimentación (5v), PROGRAMADOR AVR-ISP, JHD_162ALCD (16 * 2LCD), condensador de 100uF, condensador de 100nF, resistencia de 10KΩ (8 piezas).
Software: Atmel studio 6.1 o Atmel studio 6.2, progisp o flash magic.
Diagrama de circuito y explicación de trabajo
En el circuito PORTB de ATMEGA32 está conectado al puerto de datos LCD. Aquí uno debe recordar deshabilitar la comunicación JTAG en PORTC o ATMEGA cambiando los bytes del fusible, si se quiere usar el PORTC como un puerto de comunicación normal. En LCD de 16x2 hay 16 pines en total si hay luz de fondo, si no hay luz de fondo, habrá 14 pines. Uno puede encender o dejar los pines de luz de fondo. Ahora en los 14 pines hay 8 pines de datos (7-14 o D0-D7), 2 clavijas de alimentación de alimentación (1 y 2 o VSS y VDD o GND y + 5V), 3 rd pin para el control de contraste (Vee-controla cómo de espesor los caracteres deben estar mostrado) y 3 pines de control (RS & RW & E).
En el circuito, se puede observar que solo he tomado dos pines de control, esto le da la flexibilidad, el bit de contraste y READ / WRITE no se usan con frecuencia por lo que pueden cortocircuitarse a tierra. Esto coloca a la pantalla LCD en el modo de mayor contraste y lectura. Solo necesitamos controlar los pines ENABLE y RS para enviar caracteres y datos en consecuencia.
Las conexiones que se realizan para LCD se dan a continuación:
PIN1 o VSS a tierra
PIN2 o VDD o VCC a + 5v de potencia
PIN3 o VEE a tierra (ofrece el mejor contraste máximo para un principiante)
PIN4 o RS (Selección de registro) a PD6 de uC
PIN5 o RW (lectura / escritura) a tierra (pone la pantalla LCD en modo lectura facilita la comunicación para el usuario)
PIN6 o E (habilitado) a PD5 de uC
PIN7 o D0 a PB0 de uC
PIN8 o D1 a PB1 de uC
PIN9 o D2 a PB2 de uC
PIN10 o D3 a PB3 de uC
PIN11 o D4 a PB4 de uC
PIN12 o D5 a PB5 de uC
PIN13 o D6 a PB6 de uC
PIN14 o D7 a PB7 de uC
En el circuito se puede ver que hemos usado comunicación de 8 bits (D0-D7) sin embargo esto no es obligatorio, podemos usar comunicación de 4 bits (D4-D7) pero con comunicación de 4 bits el programa se vuelve un poco complejo. Por lo tanto, a partir de la mera observación de la tabla anterior, estamos conectando 10 pines de LCD al controlador en el que 8 pines son pines de datos y 2 pines para control.
Ahora hablemos del teclado, el teclado no es más que teclas multiplexadas. Los botones se conectan de forma multiplexada para reducir el uso de pines del sistema de control.
Considere que tenemos un teclado 4x4, en este teclado tenemos 16 botones, en casos normales necesitamos 16 pines del controlador para conectar 16 botones, pero esto no es bueno desde el punto de vista del sistema de control. Este uso de pines se puede reducir conectando los botones en forma multiplex.
Por ejemplo, considere que tenemos 16 botones y queremos adjuntarlo a un controlador para formar un teclado, estas teclas están organizadas como se muestra en la figura:
Estos botones están conectados por columnas comunes como se muestra en la figura:
Como se muestra en la figura, los extremos no marcados de cada cuatro botones se arrastran juntos para formar una columna, por lo que para 16 teclas tenemos cuatro columnas.
Si olvidamos las conexiones de las columnas anteriores y conectamos los extremos marcados comunes de cada cuatro botones para formar una fila:
Como se muestra en la figura, para 16 teclas tendremos cuatro filas como se muestra en la figura.
Ahora, cuando ambos se ven juntos, obtenemos algo como el siguiente circuito:
Aquí hemos conectado 16 teclas en forma multiplexada para reducir el uso de pines del controlador. En comparación con el primer caso de 16 teclas conectadas, necesitábamos 16 pines en el controlador, pero ahora, después de la multiplexación, solo necesitamos 8 pines del controlador para conectar 16 teclas.
Normalmente esto es lo que se presenta dentro de un teclado:
Como se muestra en la figura anterior, hay 16 teclas en el teclado anterior y cada una de estas teclas representa un botón en la configuración de botones multiplexados. Y también hay conexiones de 8 pines como se muestra en la figura anterior que simboliza la conexión multiplexada.
Ahora para trabajar:
El teclado aquí tiene cuatro columnas y cuatro filas, para la identificación del botón presionado, usaremos el método de referencia cruzada. Aquí primero vamos a conectar todas las columnas o todas las filas a vcc, por lo que si las filas están conectadas a vcc común, vamos a tomar las columnas como entradas al controlador.
Ahora, si se presiona el botón uno como se muestra en la figura:
Después de eso, una corriente fluye a través del circuito como se muestra en la siguiente figura:
Entonces tenemos C1 alto, para presionar un botón. En este mismo momento, vamos a cambiar los puertos de alimentación y entrada, es decir, vamos a alimentar las columnas y tomar filas como entradas, Por eso, habrá un flujo de energía como se muestra en la siguiente figura:
Entonces para la fila tenemos R1 alto.
A partir de ahora tenemos C1 alto en el primer caso y R1 alto en el segundo caso, por lo que tenemos la posición de matriz del botón, por lo tanto, el número "uno".
Si se presiona el segundo botón, tendremos C1 como columna pero la lógica alta que obtenemos en la columna común será 'R2'. Entonces tendremos C1 y R2, por lo tanto tendremos la posición de matriz del segundo botón.
Así es como vamos a escribir el programa, vamos a conectar ocho pines del teclado a ocho pines del controlador. Y para empezar alimentamos cuatro pines del controlador para alimentar cuatro filas de teclado, en este momento los otros cuatro pines se toman como entradas. Cuando se presiona el botón, el pin de la columna correspondiente se levanta y el pin del controlador se levanta, esto se reconocerá para cambiar la entrada a alimentación y la alimentación a entrada, por lo que tendremos filas como entradas.
Con esto obtenemos el botón presionado por el usuario. Esta matriz de direcciones se dirige al número correspondiente, y este número se muestra en la pantalla LCD.
El funcionamiento de la interfaz del teclado con el microcontrolador avr se explica paso a paso en el código C que se muestra a continuación. También puede comprobar: interfaz del teclado con el microcontrolador 8051.