main.c
#include <REGX52.H>
#include "LCD1602.h"
#include "Delay.h"
#include "MatrixKey.h"
unsigned char KeyNum;
void main ()
{
LCD_Init();
LCD_ShowString(1,1,"HelloWorld");
while(1)
{
KeyNum = MatrixKey();
if(KeyNum)
{
LCD_ShowNum(2,1,KeyNum,2);
}
}
}
MatrixKey.c
#include <REGX52.H>
#include "Delay.h"
unsigned char MatrixKey()
{
unsigned char KeyNumber = 0;
P2 = 0xFF;
P2_7 = 0;
if(P2_3 == 0){Delay(20); while(P2_3 == 0); Delay(20); KeyNumber = 1;}
if(P2_2 == 0){Delay(20); while(P2_2 == 0); Delay(20); KeyNumber = 2;}
if(P2_1 == 0){Delay(20); while(P2_1 == 0); Delay(20); KeyNumber = 3;}
if(P2_0 == 0){Delay(20); while(P2_0 == 0); Delay(20); KeyNumber = 4;}
P2 = 0xFF;
P2_6 = 0;
if(P2_3 == 0){Delay(20); while(P2_3 == 0); Delay(20); KeyNumber = 5;}
if(P2_2 == 0){Delay(20); while(P2_2 == 0); Delay(20); KeyNumber = 6;}
if(P2_1 == 0){Delay(20); while(P2_1 == 0); Delay(20); KeyNumber = 7;}
if(P2_0 == 0){Delay(20); while(P2_0 == 0); Delay(20); KeyNumber = 8;}
P2 = 0xFF;
P2_5 = 0;
if(P2_3 == 0){Delay(20); while(P2_3 == 0); Delay(20); KeyNumber = 9;}
if(P2_2 == 0){Delay(20); while(P2_2 == 0); Delay(20); KeyNumber = 10;}
if(P2_1 == 0){Delay(20); while(P2_1 == 0); Delay(20); KeyNumber = 11;}
if(P2_0 == 0){Delay(20); while(P2_0 == 0); Delay(20); KeyNumber = 12;}
P2 = 0xFF;
P2_4 = 0;
if(P2_3 == 0){Delay(20); while(P2_3 == 0); Delay(20); KeyNumber = 13;}
if(P2_2 == 0){Delay(20); while(P2_2 == 0); Delay(20); KeyNumber = 14;}
if(P2_1 == 0){Delay(20); while(P2_1 == 0); Delay(20); KeyNumber = 15;}
if(P2_0 == 0){Delay(20); while(P2_0 == 0); Delay(20); KeyNumber = 16;}
return KeyNumber;
}