yjmm10 发表于 2014-7-31 19:47:16

超声波测距程序,求解

#include<reg51.h>
#include<intrins.h>
sbit TRIG=P2^0;
sbit ECHO=P2^1;   //
unsigned int S;
void count_HC_SR04()   //计算模块
{
unsigned int time;   //距离

time=TH0*256+TL0;
TH0=0;TL0=0;    //便于下次测距
S=(time*1.7)/100; //cm
   
}
//触发TRIG模块
voidstart_HC_SR04()//启动模块一次
{
TRIG=1;
_nop_();   //11us,大于10us
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TRIG=0;   
}
void get_HC_SR04()    //通过定时器计算TH,TL
{
while(!ECHO);
TR0=1;
while(ECHO);
TR0=0;
}
void disp(unsigned int num)
{
unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xBF,0xff};
unsigned chari,num_b,num_s,num_g;
num_b=num%1000/100;
num_s=num%1000%100/10;
num_g=num%1000%10 %10;;
P0=~table;
P1=0x7f;
i=100;
while(i--);
P0=~table;
P1=0xbf;
i=100;
while(i--);
P0=~table;
P1=0xdf;
i=100;
while(i--);
}
void init_timer0()
{
TMOD=0x01;
TH0=0;
TL0=0;
EA=1;
ET0=1;
}
void main()
{
unsigned char i;
init_timer0();
while(1)
{
unsigned int S;
start_HC_SR04();
get_HC_SR04();
count_HC_SR04();
disp(S);
i=255;
while(i--);   
}
}


问题是:为什么当有障碍物时候,数码管只是稍微暗一点,数值没有改变,求大神助攻。朱老师快来呀


页: [1]
查看完整版本: 超声波测距程序,求解