4*4鍵盤的程序給初學(xué)者
——
#define uchar unsigned char
#define uint unsigned int
#define PORT P2//修改下面表中值的位置,就可以按自己的想法,定義鍵盤位置
uchar code tab[16]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77};//這個(gè)值根據(jù)程序得出,
uchar key;
void Delay(uint n)
{
uint ii;
for(ii=0;ii}
//鍵盤
void Scan_Key(void)
{
uchar a,b,c,i;
PORT=0xf0;//高行,低列
if((PORT&0xf0)!=0xf0) //有鍵按下
{
Delay(100); //去抖動
if((PORT&0xf0)!=0xf0) //確實(shí)有鍵按下
{
b=PORT&0xf0; //b的值是列值,對于不同的行,同一列值是不變的,b總共就有四個(gè)值;同理行值也是四個(gè)。將它們和來確定按鍵位置。
c=PORT&0x0f;
}
a=c+b; //b的值是行值,對于不同的列,同一行值是不變的,b總共就有四個(gè)值;同理列值也是四個(gè)。將它們和來確定按鍵位置。
for(i=0;i<16;i++) //查表
{
if(tab[i]==a)
{
key=i;
break;
}
}
while((PORT&0x0f)!=0x0f);// 等待手離開按鍵
}
}
void uart_inti(void)
{
TMOD=0x20;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x50;
ES=1;
EA=1;
}
main(void)
{
uart_inti();
while(1)
{ Scan_Key(); }
}
[/point]
評論