新闻中心

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]


关键词:

评论


相关推荐

技术专区

关闭