#include<reg51.h> #include<intrins.h> #define GPIO_LED P2 //将P2口另外取名为GPIO_LED #define GPIO_KEY P0 void Delay10ms(unsigned int); //误差 0us /******************************************************************************* * 函数名 : main * 函数功能 : 主函数 * 输入 : 无 * 输出 : 无 *******************************************************************************/ unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值 void main(void) { //unsigned char n; int i,j; j=~DIG_CODE[0]; while(1) { GPIO_LED = j; if(GPIO_KEY!=0xFF) { Delay10ms(1); if(GPIO_KEY==0xFE)//1111 1110 { j=~DIG_CODE[1]; } if(GPIO_KEY==0xFD)//1111 1101 { j=~DIG_CODE[2]; } if(GPIO_KEY==0xFB)//1111 1011 { j=~DIG_CODE[3]; } if(GPIO_KEY==0xF7)//1111 0111 { j=~DIG_CODE[4]; } if(GPIO_KEY==0xEF)//1110 1111 { j=~DIG_CODE[5]; } if(GPIO_KEY==0xDF)//1101 1111 { j=~DIG_CODE[6]; } if(GPIO_KEY==0xBF)//1011 1111 { j=~DIG_CODE[7]; } if(GPIO_KEY==0x7F)//0111 1111 { j=~DIG_CODE[8]; } while((i<50)&&(GPIO_KEY!=0xFF)) //检测按键是否松开 { Delay10ms(1); i++; } i=0; } } } /******************************************************************************* * 函数名 : Delay10ms * 函数功能 : 延时函数,延时10ms * 输入 : 无 * 输出 : 无 *******************************************************************************/ void Delay10ms(unsigned int c) //误差 0us { unsigned char a,b; for(;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); }