代碼如下,求大佬能夠指點一下我,跪謝啊啊啊啊啊啊!
- #include<reg52.h>
- sbit trig=P3^1;
- sbit echo=P3^2;
- sbit test=P1^0;
- sbit DU=P2^6;
- sbit WE=P2^7;
- sbit A=P3^4;
- bit succeed_flag;
- char duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //12òõêyÂë1ü±í
- char wei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
- int H,L;
- int x;
- void delay(int xms) //Ñóê±oˉêy
- {
- int i,j;
- for(i=xms;i>0;i--)
- for(j=125;j>0;j--);
-
- }
- void delay20() //Ñóê±20
- {
- int i;
- for(i=0;i<100;i++);
- }
- void ZHSC(int i) //½«¾ààëi×a»»3éêyÂë1üÏÔê¾
- {
- int g,s,b,q,w,sw,bw,qw;
- qw=i/10000000;
- i%=10000000;
- bw=i/1000000;
- i%=1000000;
- sw=i/100000;
- i%=100000;
- w=i/10000;
- i%=10000;
- w=i/10000;
- i%=10000;
- q=i/1000;
- i%=1000;
- b=i/100;
- i%=100;
- s=i/10;
- i%=10;
- g=i;
-
- P0=duan[g];
- DU=1;
- DU=0;
- P0=wei[0];
- WE=1;
- WE=0;
- P0=duan[s];
- DU=1;
- DU=0;
- P0=wei[1];
- WE=1;
- WE=0;
- P0=duan[b];
- DU=1;
- DU=0;
- P0=wei[2];
- WE=1;
- WE=0;
- P0=duan[q];
- DU=1;
- DU=0;
- P0=wei[3];
- WE=1;
- WE=0;
- P0=duan[w];
- DU=1;
- DU=0;
- P0=wei[4];
- WE=1;
- WE=0;
- P0=duan[sw];
- DU=1;
- DU=0;
- P0=wei[5];
- WE=1;
- WE=0;
- P0=duan[bw];
- DU=1;
- DU=0;
- P0=wei[6];
- WE=1;
- WE=0;
- P0=duan[qw];
- DU=1;
- DU=0;
- P0=wei[0];
- WE=1;
- WE=0;
- P0=duan[7];
- }
- int start()
- {
- test=0;
- succeed_flag=0;
- echo=0;
- trig=0;
- TMOD=0x11; //¼Æê±Æ÷1¤×÷·½ê½
- IT0=0; //μíμçƽ′¥·¢
- EX0=0; //INTO2»ÔêDíÖD¶Ï
- ET0=0; //¼Æê±Æ÷02»ÔêDíÖD¶Ï
- TR0=0; //¼Æê±Æ÷02»1¤×÷
- EA=0; //×ü¿a1Ø1رÕ
- trig=1; //¸ßμçƽ
- delay20();
- trig=0;
- while(echo==0);
- EX0=1;
- EA=1;
- TH0=0;
- TL0=0;
- ET0=1;
- TR0=1;
- while(TH0<30);
- EA=0;
- if(succeed_flag==1)
- {
- x=H*256+L;
- x=(x*1.87)/100;
- }
- if(succeed_flag==0)
- {
- x=0;
- test=!test;
- }
- return x;
- }
- void main()
- {
- while(1)
- {
- if(A==0)
- {
- delay(20);
- if(A==0)
- {
- start();
- ZHSC(x);
- }
- }
- }
- }
- void zd()interrupt 0 //INT0中斷函數
- {
- H=TH0;
- L=TL0;
- succeed_flag=1;
- EX0=0;
- }
復制代碼
|