新闻中心

EEPW首页> 4*4键盘的程序给初学者

4*4键盘的程序给初学者

——
作者: 时间:2007-10-19 来源:嵌入式技术论坛 收藏
#include

#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};//这个值根据程序得出,
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) //确实有键按下
{
b=PORT&0xf0; //b的值是列值,对于不同的行,同一列值是不变的,b总共就有四个值;同理行值也是四个。将它们和来确定按键位置。
c=PORT&0x0f;
}
a=c+b; //b的值是行值,对于不同的列,同一行值是不变的,b总共就有四个值;同理列值也是四个。将它们和来确定按键位置。
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]


关键词:

评论


相关推荐

技术专区

关闭