原理图
需要将跳线帽往左边插
一 只有短按的矩阵扫描法
keybord.c:
#include <keybord.h>
unsigned char i=0,key_value,key_sum=0,key_press;
void key_read(void)
{
P3=0XF0; //P34,P35拉高
P42=P44=1; //拉高
if(P44==0||P42==0||P35==0||P34==0) //当这4个有一个为0了,就说明有按键按下
{
for(i=0;i<4;i++) //开始扫描,扫描4次
{
P3=0XFF;
P42=P44=1;
P3&=~(1<<i);
//P3 & 1111 1110 然后下一个是 1111 1101,以此类推,就是让P30~P33都过一遍,看到底是哪一行按下了,再根据列,确定具体的按键
if(P44==0) key_value=4*i; //P44那一列就是 0 4 8 12
else if(P42==0) key_value=4*i+1; //P42那一列就是 1 5 9 13
else if(P35==0) key_value=4*i+2; //P35那一列就是 2 6 10 14
else if(P34==0) key_value=4*i+3; //P34那一列就是 3 7 11 15
/*所以就是:
0 1 2 3
4 5 6 7