|
這是改的程序分成模塊
#include<reg52.h>
#include<math.h>
#define uchar unsigned char
sbit trig=P0^5;
sbit echo=P0^4;
sbit d=P0^6;
float a,b1,c1;
int b,c,i,j,k;
char x[9];
float ceju()
{
SBUF=0X31; while(!TI);TI=0;
TH0=0X00;TL0=0X00;
trig=1;
k++;k++;k++; k++; k++; k++;k++;k++;k++;k++;k++;k++;k++;k++;k++;
trig=0; SBUF=0X32;while(!TI);TI=0;
while(!echo);
TR0=1; SBUF=0X33; while(!TI);TI=0;
//while(echo);
SBUF=0X34; while(!TI);TI=0;
a=TH0*256+TL0;
a=a*12*17;
TR0=0;
a=(a/11059.2)+0.7; //修正誤差
SBUF=0X36;while(!TI);TI=0;
return a;
}
void delay(b)
{
for(i=1;i<b;i++)
for(j=1;j<500;j++) ;
}
void songxian(float a)
{
c1=modf(a,&b1);
b=(int)(b1);
c=(int)(1000*c1);
x[0]=0x30+b/100;
x[1]=0x30+b/10-10*(b/100);
x[2]=0x30+b-10*(b/10);
x[3]=0x2e;
x[4]=0x30+c/100;
x[6]=0x30+c/10-10*(c/100);
x[7]=0x30+c-10*(c/10);
x[8]='\0';
for(i=0;i<9;i++)
{ if((x[i]==0x30)&&(i<2))
{ if(!(x[0]==0x30))
{ SBUF=x[i];
while(!TI);
TI=0;
}
else
{ SBUF=0x20;
while(!TI);
TI=0;
}
}
else { SBUF=x[i];
while(!TI);
TI=0;
}
}
for(i=0;i<110;i++)
for(j=0;j<114;j++);
}
void main()
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
trig=0;
echo=1;
while(1)
{
SBUF=0X30; while(!TI);TI=0;
a=ceju();
d=0;
songxian(a);
delay(5000);
/*TH0=0X00;TL0=0X00;
trig=1;
k++;k++;k++; k++; k++; k++;k++;k++;k++;
trig=0;
while(!echo);
TR0=1;
while(echo);
a=TH0*256+TL0;
a=a*12*17;
TR0=0;
a=(a/11059.2)+0.7; //修正誤差
c1=modf(a,&b1);
b=(int)(b1);
c=(int)(1000*c1);
x[0]=0x30+b/100;
x[1]=0x30+b/10-10*(b/100);
x[2]=0x30+b-10*(b/10);
x[3]=0x2e;
x[4]=0x30+c/100;
x[6]=0x30+c/10-10*(c/100);
x[7]=0x30+c-10*(c/10);
x[8]='\0';
for(i=0;i<9;i++)
{ if((x[i]==0x30)&&(i<2))
{ if(!(x[0]==0x30))
{ SBUF=x[i];
while(!TI);
TI=0;
}
else
{ SBUF=0x20;
while(!TI);
TI=0;
}
}
else { SBUF=x[i];
while(!TI);
TI=0;
}
}
for(i=0;i<110;i++)
for(j=0;j<114;j++); */
}
}
|
|