矩阵键盘通过对行(列)的快速扫描来达到对所有按键同时检测的目的
以下代码采用逐列扫描,通过对P13、P12、P11、P10赋值
然后检测P17、P16、P15、P14的情况。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/451b7b280967a5a4d75a7b4d5df67d5f.png)
#include <STC89C5xRC.H>
#include "LCD1602.h"
#include <stdio.h>
int a[5]; int i =0;
int key(int number,int choice)
{
P1 =number;
switch(choice)
{
case 1:
if(P17==0)
LCD_ShowNum(2,1,1,2);
else if(P16==0)
LCD_ShowNum(2,1,5,2);
else if(P15==0)
LCD_ShowNum(2,1,9,2);
else if(P14==0)
LCD_ShowNum(2,1,13,2);
break;
case 2:
if(P17==0)
LCD_ShowNum(2,1,2,2);
else if(P16==0)
LCD_ShowNum(2,1,6,2);
else if(P15==0)
LCD_ShowNum(2,1,10,2);
else if(P14==0)
LCD_ShowNum(2,1,14,2);
break;
case 3:
if(P17==0)
LCD_ShowNum(2,1,3,2);
else if(P16==0)
LCD_ShowNum(2,1,7,2);
else if(P15==0)
LCD_ShowNum(2,1,11,2);
else if(P14==0)
LCD_ShowNum(2,1,15,2);
break;
case 4:
if(P17==0)
LCD_ShowNum(2,1,4,2);
else if(P16==0)
LCD_ShowNum(2,1,8,2);
else if(P15==0)
LCD_ShowNum(2,1,12,2);
else if(P14==0)
LCD_ShowNum(2,1,16,2);;
break;
}
}
main()
{
LCD_Init();
LCD_ShowString(1,1,"Password: ");
while(1)
{
key(0xF7,1);
key(0xFB,2);
key(0xFD,3) ;
key(0xFE,4);
}
}