1 独立按键 #include #define uchar unsigned char #define uint unsigned int sbit P27=P2^7; sbit K5=P1^4; sbit fmq=P3^6; uchar num; unsigned char code s8[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void delay1ms(uint i) {uchar j; while(i--) {for(j=0;j<115;j++) //1ms 基准延时程序 {;} } } void beep() //产生 1KHZ 频率声音的函数 { fmq=0; delay500us(); 2 fmq=1; delay500us(); } void delay500us() { unsigned char j; for(j=0;j<57;j++) //500us 基准延时程序 {; } } void main() { uchar t; P27=0; while(1){ if(K5==0){ delay1ms(15); if(K5==0){ for(t=0;t<100;t++) { beep();} num=num+1; if(num==16){ num=0; } 3 while(!K5);//等待按键释放 } } P0=s8[num]; } } #include #define uchar unsigned char //数据类型的宏定义 #define uint unsigned int //数据类型的宏定义 sbit P27=P2^7; unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF}; //共阳数码管显示字型码数组 1011 1111 "-" void delay1ms(uint i) { uchar j; while(i--) { for(j=0;j<115;j++); //1ms 基准延时程序 4 } } void display(unsigned char i) { P27=0; //选通最有端的数码管显示 P0=table[i]; //显示i 参数传来的字型码 } void main(void) { unsigned char temp; display(16); //初始显示 "-" while(1) { P1=0xff; //先向 P1 口写 1;端口读状态 P1=0xf0; temp=P1; if(temp!=0xf0) { delay1ms(15); if(temp!=0xf0) { P1=0xfe; 5 temp=P1; switch(temp) { case(0xee):display(0);break; case(0xde):display(1);break; case(0xbe):display(2);break; case(0x7e):display(3);break; } P1=0xfd; temp=P1; switch(temp) { case(0xed):display(4);break; case(0xdd):display(5);break; case(0xbd):display(6);break; case(0x7d):display(7);break; } P1=0xfb; temp=P1; switch(temp) { 6 case(0xeb):display(8);break; case(0xdb):display(9);break; case(0xbb):display(10);break; case(0x7b):display(11);break; } P1=0x...