Matrix Keypad: Matrix Keypads
are commonly used in calculators, telephones etc where a number of input
switches are required. We know that matrix keypad is made by arranging push
button switches in row and columns. In the straight forward way to connect a
4×4 keypad (16 switches) to a microcontroller we need 16 inputs pins. But by
connecting switches in the following way we can read the status of each switch
using 8 pins of the microcontroller.
Interfacing of matrix keypad with 8051:
1)      
a)   
Circuit:
b)   
Code:
·       
ASM
Code:
$mod51
org 00h
mov P1,#01h
acall command
mov P1,#06h
acall command
mov P1,#38h
acall command
mov P1,#0eh
acall command
mov P1,#80h
acall command
back:
mov P2,#11111110b
Jnb P2.4,S1
JNB P2.5,S2
JNB P2.6,S3
JNB P2.7,S4
mov P2,#11111101b
Jnb P2.4,S5
JNB P2.5,S6
JNB P2.6,S7
JNB P2.7,S8
mov P2,#11111011b
Jnb P2.4,S9
JNB P2.5,S10
JNB P2.6,S11
JNB P2.7,S12
mov P2,#11110111b
Jnb P2.4,S13
JNB P2.5,S14
JNB P2.6,S15
JNB P2.7,S16
sjmp back
S1: mov P1,#'A'
    Acall display
    Ljmp back
S2: mov P1,#'B'
    Acall display
    Ljmp back
S3: mov P1,#'C'
    Acall display
    Ljmp back
S4: mov P1,#'D'
    Acall display
    Ljmp back
S5: mov P1,#'E'
    Acall display
    Ljmp back
S6: mov P1,#'F'
    Acall display
    Ljmp back
S7: mov P1,#'G'
    Acall display
    Ljmp back
S8: mov P1,#'H'
    Acall display
    Ljmp back
S9: mov P1,#'I'
    Acall display
    Ljmp back
S10: mov P1,#'J'
    Acall display
    Ljmp back
S11: mov P1,#'K'
    Acall display
    Ljmp back
S12: mov P1,#'L'
    Acall display
    Ljmp back
S13: mov P1,#'M'
    Acall display
    Ljmp back
S14: mov P1,#'N'
    Acall display
    Ljmp back
S15: mov P1,#'O'
    Acall display
    Ljmp back
S16: mov P1,#'P'
    Acall display
    Ljmp back
command:
clr P3.0
clr P3.1
setb P3.2
acall delay
clr P3.2
ret
                        display:
setb P3.0
clr P3.1
setb P3.2
acall delay
clr P3.2
ret
delay:
mov R1,#100
  L1: mov R2,#100
   L2: mov R3,#50
        L3: Djnz R3,L3
      DjnZ R2,L2
     Djnz R1,L1
Ret
end
·       
C
Code:
#include<reg51.h>
sbit RS=P3^0;
sbit RW=P3^1;
sbit En=P3^2;
 sbit col1=P2^4;
 sbit col2=P2^5;
 sbit col3=P2^6;
 sbit col4=P2^7;
 int k;
 unsigned char
b[]={0x01,0x06,0x80,0x0e,0x38};
  void delay()
  {
  for(k=0;k<35;k++)
  {
   TMOD=0x01;
   TH1=0x00;
   TL1=0x00;
   TR1=1;
   while(TF1==0);
   TF1=0;
   TR1=0;
   }
  }
 void command(unsigned
char x)
 {
   P1=x;
   RS=0;
   RW=0;
   En=1;
   delay();
   En=0;
  }
   void
display(unsigned char x)
 {
   P1=x;
   RS=1;
   RW=0;
   En=1;
   delay();
   En=0;
  }
  int j;
  void main()
  {
    For (j=0;j<5;j++)
       {
        command(b[j]);
       }
   while(1)
   {  P2=0xff;
      P2=0xfe;
         delay();
       if(col1==0)
       {
        command(0x01);
        display('A');
       }
       else if(col2==0)
       { command(0x01);
        display('B');
       }
       else if(col3==0)
       { command(0x01);
        display('C');
       }
       else if(col4==0)
       { command(0x01);
        display('D');
       }
       P2=0xfd;
       if(col1==0)
       {
        command(0x01);
        display('E');
       }
       else if(col2==0)
       { command(0x01);
        display('F');
       }
       else if(col3==0)
       { command(0x01);
        display('G');
       }
       else if(col4==0)
       { command(0x01);
        display('H');
       }
   P2=0xfb;
   if(col1==0)
       {
        command(0x01);
        display('I');
       }
       else if(col2==0)
       { command(0x01);
        display('J');
       }
       else if(col3==0)
       { command(0x01);
        display('K');
       }
       else if(col4==0)
       { 
        command(0x01);
        display('L');
       }
       P2=0xf7;
       if(col1==0)
       {
        command(0x01);
        display('M');
       }
       else if(col2==0)
       { command(0x01);
        display('N');
       }
       else if(col3==0)
       { command(0x01);
        display('O');
       }
       else if(col4==0)
       { command(0x01);
        display('P');
       }
   }
  }









 
 
 
 
 
 
 
 
0 comments:
Post a Comment
if you have any doubt please let me know