我這裏有壹個程序,
#include<reg51.h>
#define?rowkey()?(~P2)&0x0f//鍵盤輸入端
#define?OUT?P0?//數碼管顯示輸出端
unsigned?char?code?TAB[]=
{?0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
0x88,0x83,0xC6,0xA1,0x86,0x8E,0x89,0xC7,0xC8,0xC1,
0x8C,0xA3,0xBF,0xFF,0xFF?
};
void?debouncer()
{?int?i;
for(i=0;i<2400;i++);}
void?scanner()//鍵盤掃描程序
{?unsigned?char?data?row,col;
unsigned?char?data?scan; unsigned?char?data?keyin; scan=0xef; for(row=0;row<4;row++) {?P2=scan; keyin=rowkey(); debouncer(); if(keyin!=0) {?for(col=0;col<4;col++){?keyin>>=1;
if(CY)
{?OUT=TAB[col*4+row];//數碼管顯示
break;?}
}
} scan=(scan<<1)|0x01; }}
void?main()
{?while(1)
{?scanner(); }?}