TP : Gestion d’un clavier à l’aide d’un microcontrôleur
Objectif : Cette manipulation a pour objectif de gérer un clavier matriciel via le
pic 16f877.
Introduction :
Un clavier matriciel est composé de lignes ( L1 L2 L3 L4) et de colonnes ( C1 C2
C3), à l'appui sur une touche une connexion entre une ligne et une colonne est
établi, exemple si on appui sur 2, L1 et C2 seront interconnectées Le rôle du pic
est de balayer les lignes et les colonnes en envoyant des codes appropriés
contenus dans un tableau, pour déterminer la touche appuyée sur un écran
LCD.
2. Travail demandé :
2.1. Lancer ISIS et le Compilateur mikroC PRO.
2.2. Réaliser le schéma et le programme ci-dessous:
Programme
// connexions du module Keypad char keypadPort at PORTC;
// connexions du module LCD sbit LCD_RS at RB1_bit;
sbit LCD_E! at RB0_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_RS_Direction at TRISB1_bit;
sbit LCD_E!_Direction at TRISB0_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
void main() {
unsigned short kp = 0;
Keypad_Init(); // Initialisation du Keypad
Lcd_Init(); // Initialisation du Lcd
Lcd_Cmd(_LCD_CLEAR); // effacement de l’écran
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
Lcd_Out(1, 1, "Key :"); // écrire un message dans Lcd
do { kp = 0; // Reset la variable
// attendre que le bouton soit pressé et relâché
do kp = Keypad_Key_Click(); // sauvegarder le code
while (!kp); // transformation du code en valeur ASCII
switch (kp) {
case 1: kp = 49; break; // 1
case 2: kp = 50; break; // 2
case 3: kp = 51; break; // 3
case 4: kp = 52; break; // 4
case 5: kp = 53; break; // 5
case 6: kp = 54; break; // 6
case 7: kp = 55; break; // 7
case 8: kp = 56; break; // 8
case 9: kp = 57; break; // 9
case 10: kp = 42; break; // *
case 11: kp = 48; break; // 0
case 12: kp = 35; break; // #
}
Lcd_Chr(1, 10, kp);
// affichage de la valeur ASCII en Lcd
} while (1); }