include <reg52.h>//å
å«å¤´æ件
#define uchar unsigned char
#define uint unsigned int
unsigned char const dofly[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//0-Fï¼æ°ç 管æ¥æ¾ç¤ºæä¸é®çå¼ã
uchar keyscan(void); //主è¦çç©éµé®çæ«æå½æ°ã
void delay(uint i);
void main()
{
uchar key;
P2=0x00;
P3=0xff;//1æ°ç 管亮 æç¸åºçæé®ï¼ä¼æ¾ç¤ºæé®ä¸çå符
while(1)
{
key=keyscan();//è°ç¨é®çæ«æï¼
switch(key)
{
case 0xee:P2=dofly[0];break;//c k1
case 0xed:P2=dofly[1];break;//d k2
case 0xeb:P2=dofly[2];break;//e k3
case 0xe7:P2=dofly[3];break;//f k4
case 0xde:P2=dofly[4];break;//8
case 0xdd:P2=dofly[5];break;//9
case 0xdb:P2=dofly[6];break;//a
case 0xd7:P2=dofly[7];break;
case 0xbe:P2=dofly[8];break;//4
case 0xbd:P2=dofly[9];break;//5
case 0xbb:P2=dofly[10];break;//6
case 0xb7:P2=dofly[11];break;
case 0x7e:P2=dofly[12];break;
case 0x7d:P2=dofly[13];break;//1
case 0x7b:P2=dofly[14];break;//2
case 0x77:P2=dofly[15];break;//3
//b//7//0 æä¸ç¸åºçé®æ¾ç¤ºç¸å¯¹åºçç å¼ åçå°±æ¯é«åä½ä¸åä½åä½ä¸åçç»
//åã0111 1110 7e 0表示æé®å为0ï¼1表示没ææé®æä¸çãå³P3.7ä¸P3.1è¿æ¥ä¸ºä½çµå¹³ï¼ä¸ºS1é®
//å
¶ä»ç±»æ¨ã
/*case 0x7d:P2=dofly[1];break;//1
case 0x7b:P2=dofly[2];break;//2
case 0x77:P2=dofly[3];break;//3
case 0xbe:P2=dofly[4];break;//4
case 0xbd:P2=dofly[5];break;//5
case 0xbb:P2=dofly[6];break;//6
case 0xb7:P2=dofly[7];break;//7
case 0xde:P2=dofly[8];break;//8
case 0xdd:P2=dofly[9];break;//9
case 0xdb:P2=dofly[10];break;//a
case 0xd7:P2=dofly[11];break;//b
*/
}
}
}
uchar keyscan(void)//é®çæ«æå½æ°ï¼ä½¿ç¨è¡åå转æ«ææ³ æ¯å¦ï¼è¡ä¸ºä½çµä½ï¼å为é«åä½
{
uchar cord_h,cord_l;//è¡åå¼
P1=0x0f; //è¡çº¿è¾åºå
¨ä¸º0
cord_h=P1&0x0f; //读å
¥å线å¼
if(cord_h!=0x0f) //å
æ£æµææ æé®æä¸
{
delay(100); //å»æ
if(cord_h!=0x0f)
{
cord_h=P1&0x0f; //读å
¥hang线å¼
P1=cord_h|0xf0; //è¾åºå½åå线å¼
cord_l=P1&0xf0; //读å
¥lie线å¼
return(cord_l+cord_h);//é®çæåç»åç å¼
}
}return(0xff); //è¿å该å¼
}
void delay(uint i)//延æ¶å½æ°
{
while(i--);
}
温馨提示:答案为网友推荐,仅供参考