|
我的程序如下,下载到STC89C52的版子上,温度测量以及显示模块没问题,但是距离却总是少3厘米,求助各位大大啊!!!
写出一些首要的部分。
…
…
…
…
void main(void)
…
…
…
…
while(1)
{
if(15==count) //900MS到检测温度
{
TH1=0;
TL1=0;
StartModule();
while(!Echo);
TR1=1;
while(Echo);
TR1=0;
jsh=TH1;
jsl=TL1;
temp=wd();
computer(); //距离计算
hextobcd(); //转换BCD
count=0;
testtemp();
display();
}
}
}
void StartModule(void)
{
_nop_();
_nop_();
_nop_();
_nop_();
Trig=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
Trig=0;
_nop_();
_nop_();
_nop_();
_nop_();
}
…
…
…
void computer(void)
{
float c,d,s;
uint t;
if(temp<0x8000) //温度为负
c=331.4+0.607*temp*0.0625;
else
c=331.4-0.607*temp*0.0625;
t=jsh*256+jsl; //计算计数值
d=(c*t*0.001)/2;
d*=d;
s=d-1.96; //勾股定理,补偿
distance=sqrt(s);
}
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|