独闷闷网

标题: 超声波测距程序,求解 [打印本页]

作者: yjmm10    时间: 2014-7-31 19:47
标题: 超声波测距程序,求解
#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模块
void  start_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 char  i,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[num_b];
P1=0x7f;
i=100;
while(i--);
P0=~table[num_s];
P1=0xbf;
i=100;
while(i--);
P0=~table[num_g];
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--);   
}
}


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







欢迎光临 独闷闷网 (http://dumenmen.com/) Powered by Discuz! X3.2