8051 INTERFACING WITH 7 SEGMENT DISPLAY AND 3X3 MATRIX KEYPAD

PROGRAM:
#include<reg52.h>
void scankey();
void result(unsigned int m);
void delay(unsigned int ms);
sbit a=P2^0;
sbit r1=P1^0;
sbit r2=P1^1;
sbit r3=P1^2;
sbit r4=P1^3;
sbit c1=P1^4;
sbit c2=P1^5;
sbit c3=P1^6;
int value[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66,0x6D, 0x7D, 0x07, 0x7F, 0x6F};
void main()
{
a=1;
scankey();
}
void delay(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<=ms;i++)
for(j=0;j<1275;j++);
}
void scankey()
{
c1=1;c2=1;c3=1;
while(1)
{
r1=0;
r2=1;
r3=1;
r4=1;
if(c1==0){delay(20);while(c1==0);result(1);}
if(c2==0){delay(20);while(c2==0);result(2);}
if(c3==0){delay(20);while(c3==0);result(3);}
r1=1;
r2=0;
r3=1;
r4=1;
if(c1==0){delay(20);while(c1==0);result(4);}
if(c2==0){delay(20);while(c2==0);result(5);}
if(c3==0){delay(20);while(c3==0);result(6);}
r1=1;
r2=1;
r3=0;
r4=1;
if(c1==0){delay(20);while(c1==0);result(7);}
if(c2==0){delay(20);while(c2==0);result(8);}
if(c3==0){delay(20);while(c3==0);result(9);}
r1=1;
r2=1;
r3=1;
r4=0;
if(c2==0){delay(10);while(c2==0);result(0);}
}}
void result(unsigned int m)
{
P3=~value[m];
delay(100);
}
Comments
Post a Comment