1.1 认识原理图
一共有16个按键,从图中其实不难发现,每一行的四个独立按键都连接在各自的IO口上,例如有个独立按键连接在P3.0口,有个独立按键连接在P3.1口等。每一列的四个独立按键都连接在各自的IO口上,如LCDEN口,RS口等等。从原理图中不难发现,独立按键所连接的IO口都与P3口相连。
由于按键按下就接地,接地则IO口为0。根据这个我们可以知道,谁的IO口为0,谁就接地。依靠这个性质我们可以写出扫描矩阵按键的代码Key_Read_Pro()。
unsigned char Key_Read_Pro()
{
unsigned char temp = 0;
P3_0 = 0;P3_1 = 1;P3_2 = 1;P3_3 = 1;
if(P3_4 == 0) temp = 1;
if(P3_5 == 0) temp = 2;
if(P3_6 == 0) temp = 3;
if(P3_7 == 0) temp = 4;
P3_0 = 1;P3_1 = 0;P3_2 = 1;P3_3 = 1;
if(P3_4 == 0) temp = 5;
if(P3_5 == 0) temp = 6;
if(P3_6 == 0) temp = 7;
if(P3_7 == 0) temp = 8;
P3_0 = 1;P3_1 = 1;P3_2 = 0;P3_3 = 1;
if(P3_4 == 0) temp = 9;
if(P3_5 == 0) temp = 10;
if(P3_6 == 0) temp = 11;
if(P3_7 == 0) temp = 12;
P3_0 = 1;P3_1 = 1;P3_2 = 1;P3_3 = 0;
if(P3_4 == 0) temp = 13;
if(P3_5 == 0) temp = 14;
if(P3_6 == 0) temp = 15;
if(P3_7 == 0) temp = 16;
}
其他的和独立按键是一样的,这里不做赘述。