En aquest tutorial farem una interfície d’un teclat 4x4 (16 tecles) amb un microcontrolador ATMEGA32A. Sabem que el teclat és un dels dispositius d’entrada més importants que s’utilitzen en projectes electrònics. El teclat és una de les maneres més senzilles de donar ordres o instruccions a un sistema electrònic.
Components necessaris
Maquinari: ATMEGA32, font d'alimentació (5v), PROGRAMADOR AVR-ISP, JHD_162ALCD (16 * 2LCD), condensador 100uF, condensador 100nF, resistència 10KΩ (8 peces).
Programari: Atmel studio 6.1 o Atmel studio 6.2, progisp o flash magic.
Diagrama de circuits i explicació de treball

Al circuit PORTB d'ATMEGA32 està connectat al port de dades LCD. Aquí s'ha de recordar desactivar la comunicació JTAG a PORTC o ATMEGA canviant els bytes del fusible, si es vol utilitzar el PORTC com a port de comunicació normal. A la pantalla LCD de 16x2 hi ha 16 pins sobre tot si hi ha llum de fons, si no hi ha llum de fons hi haurà 14 pins. Es pot alimentar o deixar els passadors de llum de fons. Ara en els 14 pins hi ha 8 pins de dades (7-14 o D0-D7), 2 clavilles d'alimentació d'alimentació (1 i 2 o VSS i VDD o GND i + 5V), 3 rd pin per al control de contrast (Vee-controla com de gruix dels caràcters han d'estar mostrat), i 3 pins de control (RS & RW & E).
Al circuit, podeu observar que només he agafat dos pins de control, cosa que dóna flexibilitat, el bit de contrast i READ / WRITE no s’utilitzen sovint, de manera que es poden fer curtcircuits a terra. D’aquesta manera, la pantalla LCD té un contrast i un mode de lectura més alts. Només hem de controlar els pins ENABLE i RS per enviar caràcters i dades en conseqüència.
Les connexions que es fan per a LCD es donen a continuació:
PIN1 o VSS a terra
PIN2 o VDD o VCC a una potència de + 5v
PIN3 o VEE a terra (proporciona el màxim contrast possible per a principiants)
PIN4 o RS (Selecció de registre) a PD6 de uC
PIN5 o RW (lectura / escriptura) a terra (posa la pantalla LCD en mode lectura facilita la comunicació per a l'usuari)
PIN6 o E (Habilita) 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
Al circuit podeu veure que hem utilitzat la comunicació de 8 bits (D0-D7), però això no és obligatori, podem fer servir la comunicació de 4 bits (D4-D7), però amb un programa de comunicació de 4 bits es torna una mica complex. Per tant, a partir de la simple observació de la taula anterior, estem connectant 10 pins de LCD al controlador en què 8 pins són pins de dades i 2 pins per al control.
Ara parlem de teclat, el teclat no és més que tecles multiplexades. Els botons es connecten de forma multiplexada per reduir l’ús de pins del sistema de control.
Penseu que tenim un teclat 4x4, en aquest teclat tenim 16 botons, en casos normals necessitem 16 pins del controlador per connectar 16 botons, però això no és bo en el punt de vista del sistema de control. Aquest ús de pins es pot reduir connectant els botons en forma de múltiplex.
Per exemple, considerem que tenim 16 botons i volem connectar-lo a un controlador per formar un teclat, aquestes tecles estan disposades tal com es mostra a la figura:

Aquests botons estan connectats mitjançant columnes comunes com es mostra a la figura:

Com es mostra a la figura, els extrems no marcats de cada quatre botons s’arrosseguen fins a formar una columna i, per tant, per a 16 tecles tenim quatre columnes.
Si oblidem les connexions de columnes anteriors i els extrems marcats comuns connectats de cada quatre botons junts per formar una fila:

Com es mostra a la figura, per a 16 tecles tindrem quatre files com es mostra a la figura.
Ara, quan es veuen tots dos junts, obtenim una cosa semblant al següent circuit:

Aquí hem connectat 16 tecles de forma multiplexada per tal de reduir l’ús de pin del controlador. En comparació amb el primer cas de 16 tecles connectades, necessitàvem 16 pines al controlador, però ara després de multiplexar-les només necessitem 8 pins de controlador per connectar 16 tecles.
Normalment, això és el que es presenta dins d'un teclat:

Com es mostra a la figura anterior, hi ha 16 tecles al teclat anterior i cadascuna d'aquestes tecles representa un botó a la configuració de botons multiplexats. I també hi ha connexions de 8 pins, tal com es mostra a la figura superior, que simbolitza la connexió multiplexada.
Ara per treballar:
Aquí el teclat té quatre columnes i quatre files, per identificar el botó premut, utilitzarem el mètode de referència creuada. Aquí primer connectarem totes les columnes o totes les files a vcc, de manera que si les files estan connectades a vcc comú, prendrem les columnes com a entrades al controlador.
Ara bé, si es prem el botó un tal com es mostra a la figura:

Després, un corrent flueix pel circuit com es mostra a la figura següent:

Per tant, tenim C1 alt, per prémer un botó. En aquest mateix moment, canviarem els ports d’alimentació i d’entrada, és a dir, alimentarem les columnes i prendrem files com a entrades, Per això, hi haurà un flux de potència com es mostra a la figura següent:

Per tant, per a la fila tenim R1 alt.
A partir d’ara tenim C1 alt en el primer cas i R1 alt en el segon cas, de manera que tenim la posició matricial del botó, d’aquí el número “un”.
Si es prem el segon botó, tindrem C1 com a columna, però la lògica alta que obtindrem a la columna comuna serà 'R2'. Així tindrem C1 i R2, per tant tindrem la posició matricial del segon botó.
Així escriurem el programa, connectarem vuit pins del teclat a vuit pins del controlador. I per començar alimentem quatre pins del controlador per alimentar quatre files de teclat, en aquest moment els altres quatre pins es prenen com a entrades. Quan es prem el botó, el pin corresponent de la columna es tira cap amunt i, per tant, el pin del controlador es tira cap amunt, es reconeixerà que canviarà l'entrada a potència i potència a entrada, de manera que tindrem files com a entrades.
D’aquesta manera, l’usuari prem el botó. Aquesta adreça de matriu es dirigeix al número corresponent i aquest número es mostra a la pantalla LCD.
El funcionament de la interfície del teclat amb el microcontrolador AVR s'explica pas a pas al codi C que es mostra a continuació. També podeu comprovar: la interfície del teclat amb el microcontrolador 8051.
