独闷闷网

 找回密码
 立即注册
搜索
查看: 3447|回复: 0
打印 上一主题 下一主题
收起左侧

[求助] 超声波测距程序,求解

[复制链接]
跳转到指定楼层
楼主
发表于 2014-7-31 19:47:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
#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--);   
}
}


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


乐于分享,勇于质疑!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|独闷闷网 ( 粤ICP备12007667号-2 )

GMT+8, 2024-12-2 02:24 , Processed in 0.180793 second(s), 18 queries .

快速回复 返回顶部 返回列表