新聞中心

EEPW首頁 > 4*4鍵盤的程序給初學(xué)者

4*4鍵盤的程序給初學(xué)者

——
作者: 時(shí)間:2007-10-19 來源:嵌入式技術(shù)論壇 收藏
#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};//這個(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]


關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉