代码在keil软件中正常显示
#include"reg51.h" #define GPIO_KEY P1 #define GPIO_DIG P0 typedef unsigned char u8; ? ? ? ? typedef unsigned int u16;
sbit LSA=P2^2; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//74HC138???? sbit LSB=P2^3; sbit LSC=P2^4; sbit beep=P3^0; sbit k=P3^1;
u16 KeyValue; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //′??ü?μ ? ? ? u16 KeySwitch; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//?D??ê?·?°′??°′?ü u8 code duanxuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x00}; //????0-0xff u16 i; u16 box[8]={0,11,11,11,11,11,11,11}; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//ó?êy×é′?·???ò???????μ?μ?μ?êy×?
void delay(u16 i) ? ? ? ? ? ? ? ? ? ? ? ? ? ? //?óê± { ? ? ? ?while(i--); }
void display() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//??ê?3ìDò { ? ? ?? ? ? ? ?LSA=0; LSB=0; LSC=0; ? ? ? ? ?? ? ? GPIO_DIG=duanxuan[box[7]]; ?? ? ? delay(50); GPIO_DIG=0x00; ? ? ? ? ? ? ? ?//·à?μéá ?? ? ? ? ?LSA=1; LSB=0; LSC=0;? ?? ? ? GPIO_DIG=duanxuan[box[6]]; ?? ? ? delay(50); GPIO_DIG=0x00; ?? ? ? ? ?LSA=0; LSB=1; LSC=0; ? ? ?GPIO_DIG=duanxuan[box[5]]; ?? ? ? delay(50); GPIO_DIG=0x00;? ?? ? ? ? ?LSA=1; LSB=1; LSC=0; ?? ? ? GPIO_DIG=duanxuan[box[4]]; ?? ? ? delay(50); GPIO_DIG=0x00;? ?? ? ? ? ?LSA=0; LSB=0; LSC=1;? ?? ? ? GPIO_DIG=duanxuan[box[3]]; ? ? ?delay(50); GPIO_DIG=0x00;? ?? ? ? ? ?LSA=1; LSB=0; LSC=1;? ?? ? ? GPIO_DIG=duanxuan[box[2]]; ?? ? ? delay(50); GPIO_DIG=0x00;? ?? ??? ?? ? ? ?LSA=0; LSB=1; LSC=1;? ? ? ?GPIO_DIG=duanxuan[box[1]]; ? ? ?delay(50); GPIO_DIG=0x00;? ?? ??? ?? ? ? ?LSA=1; LSB=1; LSC=1;? ?? ??? ? GPIO_DIG=duanxuan[box[0]]; ?? ??? ? delay(50); GPIO_DIG=0x00;? ?? ??? ?? } void ring()?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?//?ˉ±¨3ìDò { ? ?while(1) ? ? { ? ? ? beep=~beep; ? ? ? delay(99); ?? ? ? ?display(); ? ? } }
void Withdrew() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//í???3ìDò { ? if(k==0) ?? ?{ ?? ??? ?delay(1000);? ? ? if(k==0)? ? ? { ? ? ? ? ? ? for(i=0;i<8;i++) ? ? ? ?//ê?è?ò???êy£?êy×??íóòò??ˉò??? ? ? ? ? ? ? ? ? ? { ?? ??? ??? ??? ??? ??? ??? ?box[i-1]=box[i];?? ??? ??? ??? ? ?? ??? ??? ??? ??? ??? ?} ??? ??? ??? ??? ? ? ? ? ??? ??? ? ? ?box[7]=0; ?? ? ? ?while(!k); ? ? ? ? ? ? ? ? ? ? //?ì2a°′?üê?·??é?a ? ? } ? } } void KeyDown() { ?? ? ? ? u16 a=0; ? ? GPIO_KEY=0x0f; ? ? if(GPIO_KEY!=0x0f) ? ? { ? ? ? ? delay(1000); ? ? ? ? if(GPIO_KEY!=0x0f) ? ? ? ? { ?? ? ? ? ? ? ? ? ? ? ? ? ? GPIO_KEY=0x0f; ? ? ? ? ? ? switch(GPIO_KEY) ? ? ? ? ? ? ? ? ? ?//?ü?ì2??? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? case(0X07): KeyValue=7;break; ? ? ? ? ? ? ? ? case(0X0b): KeyValue=8;break; ? ? ? ? ? ? ? ? case(0X0d): KeyValue=9;break; ? ? ? ? ? ? ? ? case(0X0e): KeyValue=21;break; ? ? ? ? ? ? } ? ? ? ? ? ?? ? ? ? ? ? ? GPIO_KEY=0xf0; ? ? ? ? ? ? switch(GPIO_KEY) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? case(0X70): KeyValue=KeyValue; ? break; ? ? ? ? ? ? ? ? case(0Xb0): KeyValue=KeyValue-3; break; ? ? ? ? ? ? ? ? case(0Xd0): KeyValue=KeyValue-6; break; ? ? ? ? ? ? ? ? case(0Xe0): KeyValue=KeyValue-9; break; ? ? ? ? ? ? } ? ? ? ?if(KeyValue==0 || KeyValue==1 || KeyValue==2 || KeyValue==3 || KeyValue==4 || KeyValue==5 || KeyValue==6 || KeyValue==7 || KeyValue==8 || KeyValue==9) ? ? ? ? ?{ ? ? ? ? ? KeySwitch=1; ? ? ? ? ?} ? ? ? ? ? ? while((a<50)&&(GPIO_KEY!=0xf0)) //?éê??à2a ? ? ? ? ? ? { ? ? ? ? ? ? ? ? delay(1000); ? ? ? ? ? ? ? ? a++; ? ? ? ? ? ? } ? ? ? ? } ? ? } }
void main() { ? ? ?u16 a=0,b=0,c=0; ? ?beep=0; ? ?while(1) ? ?{ ? ?? ? ? ? ? ?display();?? ??? ?? ? ? ? ? ?KeyDown(); ?? ??? ? ? ? Withdrew();?? ??? ?? ? ? ? ? ?if(KeySwitch==1) ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? for(i=7;i>0;i--) ? ? ? ?//ê?è?ò???êy£?êy×??í?ò×óò??ˉò??? ? ? ? ? ? ? ? ? ? {box[i]=box[i-1];} ? ? ? ? ? ?? ? ? ? ? ? ? box[0]=KeyValue; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? KeySwitch=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ?else ?if(KeyValue==-2) ? ? ? //1éá??ü ? ? ? ? ?{? ? ? ? ? ? ? ? for(i=0;i<8;i++) ? ? ? ? ? ? ? ? ? box[i]=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? display();? ? ? ? ? ?}
? ? ? ? ?else ?if(KeyValue==21) ? ? ? //?ó·¨ ? ? ? ? ?{ ? ? ? ? ? ? ?a=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000; ?? ? ? ? ? ? ? ?//????μúò???êyμ??μ′?μ?aà? ?? ??? ??? ??? ? ??? ? for(i=0;i<8;i++) ? ? ? ? ? ? ?box[i]=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//?????μ£?×?±?è???ò???êy ? ? ? ? ? ? ?while(1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ?display(); ? ? ? ? ? ? ? ? ? ? ?KeyDown(); ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ?Withdrew(); ? ? ? ? ? ? ? ? ? ? ?if(KeySwitch==1) ? ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? for(i=7;i>0;i--) ? ? ? ? ? ? ? ? ? ? ? ? {box[i]=box[i-1];} ? ? ? ? ? ? ? ? ? ? ? ? box[0]=KeyValue; ? ? ? ? ? ? ? ? ? ? ? ? KeySwitch=0; ? ? ? ? ? ? ? ? ? ? ?}?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?? ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? if(KeyValue==-1) break; ? ? ? ? ? ? ? ?//°′μèóúo?oó?áê??-?· ? ? ? ? ? ? ? } ? ? ? ? ? ? ? b=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000; ? ? ? ? ? ? ? ? //????μú?t??êyμ??μ′?μ?b ?? ??? ??? ??? ??? ??? ??? ?c=a+b; ? ? ? ? ? ? ? ? ? ? ?if(c>=10000)?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?//3??챨?ˉ ?? ??? ??? ? ? ? ? ? ? ? ? ? ? ?ring(); ?? ??? ? ? ? ? ? ? ? ? ? else ?? ??? ??? ? ? ? ? ? ? ? ? ? ? ?beep=0;?? ??? ? ? ? ? ? ? ? ?box[0]=c%10; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?box[1]=c/10%10; ? ? ? ? ? ? ?box[2]=c/100%10; ? ? ? ? ? ? ?box[3]=c/1000%10; ? ? ? ? ? ? ?box[4]=c/10000%10; ? ? ? ? ? ? ?box[5]=c/100000%10; ? ? ? ? ? ? ?box[6]=c/1000000%10; ? ? ? ? ? ? ?box[7]=c/10000000%10; ? ? ? ? ? ? ?display(); ? ? ? ? } ? ? ? ? ? ?else ?if(KeyValue==18) ? ? ? //??·¨ ? ? ? ? ? ?{ ? ? ? ? ? ? ?a=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000; ? ? ? ? ? ? ?for(i=0;i<8;i++) ? ? ? ? ? ? ?box[i]=0; ? ? ? ? ? ? ?while(1) ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?display(); ? ? ? ? ? ? ? ? ? ? ?KeyDown(); ?? ??? ??? ??? ??? ??? ? ? ? ??? ? Withdrew(); ? ? ? ? ? ? ? ? ? ? ?if(KeySwitch==1) ? ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? for(i=7;i>0;i--) ? ? ? ? ? ? ? ? ? ? ? ? {box[i]=box[i-1];} ? ? ? ? ? ? ? ? ? ? ? ? box[0]=KeyValue; ? ? ? ? ? ? ? ? ? ? ? ? KeySwitch=0; ? ? ? ? ? ? ? ? ? ? ?} ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? if(KeyValue==-1) break; ? ? ? ? ? ? ?}?? ??? ??? ??? ??? ??? ? ?? ??? ??? ??? ??? ??? ?? ? ? ? ? ? ? ?b=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000; ? //??b?? ? ? ? ? ? ? ?c=a-b; ? ? ? ? ? ? ? ? ? ? ?if(c>=10000)?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?//3??챨?ˉ ?? ??? ??? ? ? ? ? ? ? ? ? ? ? ring(); ?? ??? ? ? ? ? ? ? ? ? ? else ?? ??? ??? ? ? ? ? ? ? ? ? ? ? beep=0;?? ??? ??? ??? ??? ??? ?? ? ? ? ? ? ? ? ?box[0]=c%10; ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ?box[1]=c/10%10; ? ? ? ? ? ? ? ?box[2]=c/100%10; ? ? ? ? ? ? ? ?box[3]=c/1000%10; ? ? ? ? ? ? ? ?box[4]=c/10000%10; ? ? ? ? ? ? ? ?box[5]=c/100000%10; ? ? ? ? ? ? ? ?box[6]=c/1000000%10; ? ? ? ? ? ? ? ?box[7]=c/10000000%10; ?? ?? ??? ? ? ? ? ? ? display(); ? ? ? ? } ?? ??? ??? ??? ?? ? ? ? ? ?else ?if(KeyValue==15) ? ? ? //3?·¨ ? ? ? ? ? ?{ ? ? ? ? ? ? ?a=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000; ? ? ? ? ? ? ?for(i=0;i<8;i++) ? ? ? ? ? ? ?box[i]=0;? ? ? ? ? ? ? ?while(1) ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ?display(); ? ? ? ? ? ? ? ? ? ? ?KeyDown(); ? ? ? ? ? ? ? ? ? ? ?Withdrew(); ? ? ? ? ? ? ? ? ? ? ?if(KeySwitch==1) ? ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? for(i=7;i>0;i--) ? ? ? ? ? ? ? ? ? ? ? ? {box[i]=box[i-1];} ? ? ? ? ? ? ? ? ? ? ? ? box[0]=KeyValue; ? ? ? ? ? ? ? ? ? ? ? ? KeySwitch=0; ? ? ? ? ? ? ? ? ? ? ?} ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? if(KeyValue==-1) break; ? ? ? ? ? ? ?} ? ? ? ? ? ? ? b=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000; ?? ? ? ? ? ? ? ? c=a*b; ? ? ? ? ? ? ? ? ? ? ?if(c>=10000)?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?//3??챨?ˉ ?? ??? ??? ? ? ? ? ? ? ? ? ? ? ?ring(); ?? ??? ? ? ? ? ? ? ? ? ? else ?? ??? ??? ? ? ? ? ? ? ? ? ? ? ?beep=0;?? ??? ??? ??? ??? ??? ??? ? ? ? ? ? ? ? ?box[0]=c%10; ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ?box[1]=c/10%10; ? ? ? ? ? ? ?box[2]=c/100%10; ? ? ? ? ? ? ?box[3]=c/1000%10; ? ? ? ? ? ? ?box[4]=c/10000%10; ? ? ? ? ? ? ?box[5]=c/100000%10; ? ? ? ? ? ? ?box[6]=c/1000000%10; ? ? ? ? ? ? ?box[7]=c/10000000%10; ? ? ? ? ? ? ?display(); ? ? ? ? ?} ?? ??? ??? ??? ?? ?? ??? ??? ??? ? ?? ??? ?? ? ? ? ? ?else ?if(KeyValue==12) ? ? ? //3y·¨ ? ? ? ? ?{ ? ? ? ? ? ? ?a=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000; ? ? ? ? ? ? ?for(i=0;i<8;i++) ? ? ? ? ? ? ?box[i]=0; ? ? ? ? ? ? ?while(1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ?display(); ? ? ? ? ? ? ? ? ? ? ?KeyDown(); ?? ??? ??? ??? ??? ??? ??? ? ? ? ? Withdrew(); ? ? ? ? ? ? ? ? ? ? ?if(KeySwitch==1) ? ? ? ? ? ? ? ? ? ? ?{ ? ? ? ? ? ? ? ? ? ? ? ? ? for(i=7;i>0;i--) ? ? ? ? ? ? ? ? ? ? ? ? {box[i]=box[i-1];} ? ? ? ? ? ? ? ? ? ? ? ? box[0]=KeyValue; ? ? ? ? ? ? ? ? ? ? ? ? KeySwitch=0; ? ? ? ? ? ? ? ? ? ? ?} ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? if(KeyValue==-1) break; ? ? ? ? ? ? ? } ? ? ? ? ? ? ? b=box[0]+box[1]*10+box[2]*100+box[3]*1000+box[4]*10000+box[5]*100000+box[6]*1000000+box[7]*10000000;? ? ? ? ? ? ? ?c=a/b; ? ? ? ? ? ? ? ? ? ? ? if(c>=10000)?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?//3??챨?ˉ ?? ??? ??? ? ? ? ? ? ? ? ? ? ? ?ring(); ?? ??? ? ? ? ? ? ? ? ? ? ?else ?? ??? ??? ? ? ? ? ? ? ? ? ? ? ?beep=0;?? ??? ??? ??? ??? ??? ??? ? ? ? ? ? ? ? ?box[0]=c%10; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?box[1]=c/10%10; ? ? ? ? ? ? ?box[2]=c/100%10; ? ? ? ? ? ? ?box[3]=c/1000%10; ? ? ? ? ? ? ?box[4]=c/10000%10; ? ? ? ? ? ? ?box[5]=c/100000%10; ? ? ? ? ? ? ?box[6]=c/1000000%10; ? ? ? ? ? ? ?box[7]=c/10000000%10; ? ? ? ? ? ? ?display(); ? ? ? ? ? ? ?? ? ? ? ? ?} ? ? ? ? ? ? ? ? ? ? ? ? ?}
}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
|