Els teclats són dispositius d’entrada molt utilitzats que s’utilitzen en diversos projectes electrònics i incrustats. S'utilitzen per prendre entrades en forma de nombres i albabets, i alimenten el mateix en el sistema per al seu posterior processament. En aquest tutorial farem una interfície amb un teclat de matriu 4x4 amb un microcontrolador 8051.
Teclat Matrix 4X4
Abans de connectar el teclat amb el microcontrolador, primer hem d’entendre com funciona. El teclat Matrix consisteix en un conjunt de botons prèmis, que estan interconnectats. Com en el nostre cas, estem fent servir un teclat de matriu 4X4, en el qual hi ha 4 botons en cadascuna de les quatre files. I els terminals dels polsadors estan connectats segons el diagrama. A la primera fila, un terminal de tots els 4 botons està connectat i un altre terminal de 4 botons representa cadascuna de les 4 columnes, el mateix passa amb cada fila. Així doncs, aconseguim que es connectin 8 terminals amb un microcontrolador.

Teclat d'interfície amb microcontrolador 8051 (AT89S52)

En primer lloc, hem d'interfície d'un mòdul LCD per mostrar les dades que s'alimentaran a través del KEYPAD, així que consulteu l'article "Interfície LCD amb microcontrolador 8051" abans de connectar el KEYPAD.
Com es mostra al diagrama de circuits anterior, per connectar el teclat, hem de connectar 8 terminals del teclat a qualsevol port (8 pins) del microcontrolador. Igual que hem connectat els terminals del teclat al port 1 de 8051. Sempre que es prem qualsevol botó, necessitem obtenir la ubicació del botó, significa la fila corresponent i una COLUMNA núm. Un cop aconseguim la ubicació del botó, podem imprimir el caràcter en conseqüència.
Ara la pregunta és com obtenir la ubicació del botó premut? Vaig a explicar-ho en els passos següents i també vull que mireu el codi:
1. Primer hem fet totes les files al nivell 0 de lògica i totes les columnes al nivell 1 de lògica.
2. Sempre que premem un botó, la columna i la fila corresponents a aquest botó s’escurcen i converteixen la columna corresponent en el nivell lògic 0. Perquè aquesta columna es connecta (es fa curt) amb la fila, que es troba en el nivell lògic 0. Per tant, obtenim el columna núm. Vegeu la funció main ().

3. Ara hem de trobar el número de fila, de manera que hem creat quatre funcions corresponents a cada columna. Com si es prem qualsevol botó de la columna primera, anomenem la funció fila_finder1 (), per trobar la fila núm.
4. A la funció row_finder1 (), hem invertit els nivells lògics, vol dir que ara totes les files són 1 i les columnes són 0. Ara la fila del botó premut ha de ser 0 perquè s'ha connectat (en curtcircuit) a la columna el botó del qual es prem, i totes les columnes tenen una lògica 0. Per tant, hem escanejat totes les files per obtenir 0.

5. Per tant, sempre que trobem la fila a la lògica 0, significa que és la fila del botó premut. Per tant, ara tenim la columna núm (es va obtenir al pas 2) i la fila núm. d'aquest botó mitjançant la funció lcd_data.
Segueix el mateix procediment per a cada pulsació de botó i estem fent servir mentre (1), per comprovar contínuament si es prem o no el botó.
