最后附上矩阵键盘的操作代码,供大家参考
#ifndef _keyscan_h
#define _keyscan_h
#include<define.h>
sfr P4=0xc0;
uchar key_value;
void keyscan()
{
uchar temp;
P3=0x7f; P4=0xef;
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f)
{
delayms(5);
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f)
{
temp=P3;
switch(temp)
{
case 0x7e:key_value=4;break;
case 0x7d:key_value=3;break;
case 0x7b:key_value=2;break;
case 0x77:key_value=1;break;
}
}
while(temp!=0x0f)
{
temp=P3;
temp=temp&0x0f;
}
}
P3=0xbf; P4=0xfb;
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f)
{
delayms(5);
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f)
{
temp=P3;
switch(temp)
{
case 0xbe:key_value=8;break;
case 0xbd:key_value=7;break;
case 0xbb:key_value=6;break;
case 0xb7:key_value=5;break;
}
}
while(temp!=0x0f)
{
temp=P3;
temp=temp&0x0f;
}
}
P3=0xdf;
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f)
{
delayms(5);
temp=P3;
temp=temp&0x0f;
if(temp!=0x0f)
{
temp=P3;
switch(temp)
{
case 0xde:key_value=12;break;
case 0xdd:key_value=11;break;
case 0xdb:key_value=10;break;
case 0xd7:key_value=9;break;
}
}
while(temp!=0x0f)
{
temp=P3;
temp=temp&0x0f;
}
}
}
#endif
|