文档介绍:#include<>#defineucharunsignedchar#defineuintunsignedint//共阴极数码管//ucharcodetable[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//控制位选111111101111110111110**********ucharcodeLED_W[5]={0xfe,0xfd,0xf7,0xef,0xfb};ucharcodetable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极数码管uinttemp;sbitkey1=P3^7;sbitkey2=P3^6;sbitspeak=P2^5; //蜂鸣器器控制脚 sbitP20=P2^0;voiddelay(uintx){ uinti,j; for(i=0;i<=x;i++) for(j=0;j<=100;j++);}voidsound(){ uchari; for(i=0;i<10;i++) { speak=~speak; delay(10); }}voiddisplay(uinttemp){ P0=table[temp/1000]; //数码管段值 P1=LED_W[0]; //点亮第四位数码管 delay(2); P0=table[temp%1000/100]; //数码管段值 P1=LED_W[1]; //点亮第三位数码管 delay(2); P0=table[temp%100/10]; //数码管段值 P1=LED_W[2]; //点亮第二位数码管 delay(2); P0=table[temp%10]; //数码管段值 P1=LED_W[3]; //点亮第一位数码管 delay(2);}voidOutside_Init(void){ EX1=1;//开外部中断1 IT1=1;//负边沿触发 EA=1; //开总中断}voidOutside_Int(void)interrupt2{ EX1=0; delay(20); //延时30ms,去掉这行会出现按一下中断几次的情况 if(temp==9999) { P20=0; } elseP20=1; EX1=1; }voidMain(void){Outside_Init(); while(1) { key1=1; if(key1==0){ delay(2); if(key1==0) { temp++; if(temp==10000)temp=0; sound(); } while(!key1); delay(2); while(!key1); } key2=1; if(key2==0){ delay(2); if(key2==0) { temp--; if(temp==-1)temp=9999; sound(); } while(!key2); delay(2); while