Les claviers sont des périphériques d'entrée largement utilisés dans divers projets électroniques et intégrés. Ils sont utilisés pour prendre des entrées sous forme de nombres et d'albhabets, et les alimentent dans le système pour un traitement ultérieur. Dans ce tutoriel, nous allons interfacer un clavier matriciel 4x4 avec un microcontrôleur 8051.
Clavier matriciel 4X4
Avant d'interfacer le clavier avec le microcontrôleur, nous devons d'abord comprendre comment cela fonctionne. Le clavier matriciel se compose d'un ensemble de boutons poussoirs interconnectés. Comme dans notre cas, nous utilisons un clavier matriciel 4X4, dans lequel il y a 4 boutons poussoirs dans chacune des quatre rangées. Et les bornes des boutons poussoirs sont connectées selon le schéma. Dans la première rangée, une borne de tous les 4 boutons poussoirs est connectée ensemble et une autre borne de 4 boutons poussoirs représente chacune des 4 colonnes, il en va de même pour chaque rangée. Nous obtenons donc 8 terminaux pour se connecter à un microcontrôleur.
Interfaçage du clavier avec le microcontrôleur 8051 (AT89S52)
Nous devons d'abord interfacer un module LCD pour afficher les données qui seront alimentées via le KEYPAD, veuillez donc lire l'article «Interfaçage LCD avec le microcontrôleur 8051» avant d'interfacer le KEYPAD.
Comme le montre le schéma ci-dessus, pour interfacer le clavier, nous devons connecter 8 bornes du clavier à n'importe quel port (8 broches) du microcontrôleur. Comme nous avons connecté les terminaux du clavier au port 1 de 8051. Chaque fois qu'un bouton est enfoncé, nous devons obtenir l'emplacement du bouton, signifie la RANGÉE correspondante une COLONNE no. Une fois que nous obtenons l'emplacement du bouton, nous pouvons imprimer le caractère en conséquence.
Maintenant, la question est de savoir comment obtenir l'emplacement du bouton enfoncé? Je vais expliquer cela dans les étapes ci-dessous et je veux également que vous regardiez le code:
1. Tout d'abord, nous avons fait toutes les lignes au niveau logique 0 et toutes les colonnes au niveau logique 1.
2. Chaque fois que nous appuyons sur un bouton, la colonne et la ligne correspondant à ce bouton sont raccourcies et placent la colonne correspondante au niveau logique 0. Parce que cette colonne devient connectée (court-circuitée) à la ligne, qui est au niveau logique 0. Nous obtenons donc le colonne no. Voir la fonction main ().
3. Nous devons maintenant trouver le numéro de ligne. Nous avons donc créé quatre fonctions correspondant à chaque colonne. Comme si vous appuyez sur n'importe quel bouton de la première colonne, nous appelons la fonction row_finder1 (), pour trouver la ligne no.
4. Dans la fonction row_finder1 (), nous avons inversé les niveaux logiques, ce qui signifie que maintenant toutes les lignes sont 1 et les colonnes sont 0. Maintenant, la ligne du bouton pressé doit être 0 car il est devenu connecté (court-circuité) à la colonne dont le bouton est enfoncé, et toutes les colonnes sont à 0 logique. Nous avons donc scanné toutes les lignes pour 0.
5. Donc, chaque fois que nous trouvons la ligne à 0 logique, cela signifie que c'est la ligne du bouton enfoncé. Alors maintenant, nous avons la colonne no (obtenu à l'étape 2) et le numéro de ligne, et nous pouvons imprimer no. de ce bouton en utilisant la fonction lcd_data.
La même procédure suit pour chaque pression sur un bouton, et nous utilisons while (1), pour vérifier en permanence si le bouton est enfoncé ou non.