预览加载中,请您耐心等待几秒...
1/2
2/2

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

/**************************keyscan.c*************************************** 名称keyscan.h 备注用于工信部“国信长天杯”之实验板,实战才是硬道理! 功能:矩阵键盘检测。 编写日期 2011年10月8号 *****************************************************************************/ #include"regx52.h" #defineucharunsignedchar #defineuintunsignedint /*****************************************************************************************/ #defineHC138_CP2_7 #defineHC138_BP2_6 #defineHC138_AP2_5 #defineKEYP3 UcharCodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6, 0xA1,0x86,0x8E}; ucharw; /****************12MHZ晶振下约1ms延时************************/ voiddelay_1m(ucharx) { uchara,b; for(a=x;a>0;a--) for(b=120;b>0;b--); } /*****************************************************************************/ voidkey_scan() { ucharw1,w2; KEY=0x0f; w1=KEY&0x0f; if(w1!=0x0f) { delay_1m(6); //软件延时去抖动 KEY=0xf0; w2=KEY&0xf0; w=(w1|w2); while(KEY==0xF0); //等待释放按键 } else w=0xff; } /*****************************************************************************/ voidkey_tran() { switch(w) { case0xEE: P0=table[0]; break; case0xED: P0=table[1]; break; case0xEB: P0=table[2]; break; case0xE7: P0=table[3]; break; case0xDE: P0=table[4]; break; case0xDD: P0=table[5]; break; case0xDB: P0=table[6]; break; case0xD7: P0=table[7]; break; case0xBE: P0=table[8]; break; case0xBD: P0=table[9]; break; case0xBB: P0=table[10]; break; case0xB7: P0=table[11]; break; case0x7E: P0=table[12]; break; case0x7D: P0=table[13]; break; case0x7B: P0=table[14]; break; case0x77: P0=table[15]; break; default: break; } } voidmain() { while(1) { key_scan(); key_tran(); } }