51单片机超声波测距,求大神解救

[复制链接]
1537|9
手机看帖
扫描二维码
随时随地手机跟帖
15383646831|  楼主 | 2018-2-7 19:35 | 显示全部楼层 |阅读模式
调试了一下午
#include<reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;


u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

u8 time,distance;
bit flag=0;                  //中断溢出标志
u8 pros[3];
void delay(u16 i)
{
  while(i--);
}

void delay20us(void)   //误差 -0.46875us
{
    unsigned char a,b;
    for(b=3;b>0;b--)
        for(a=1;a>0;a--);
}

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

sbit TRIG=P2^5;
sbit ECHO=P2^6;
void Usair()                 //中断
{
  TMOD=0X01;                 //定时器0
  TH0=0;
  TL0=1;
  EA=1;
  TR0=1;

}



void Count()                           //计算距离
{
   time=TH0*256+TL0;
   TH0=0;
   TL0=0;
   distance=(time*1.87)/100;


}


void Digplay()                                                                  //数码管动态扫描
{
    u8 i;
        for(i=0;i<8;i++)
        {
          switch(i)
        {
           case(0):LSA=0;LSB=0;LSC=0;break;
           case(1):LSA=1;LSB=0;LSC=0;break;
         

        }
     P1=pros[i];
         delay(100);
         P1=0X00;
        }
}

void KeyDown()                                                                  //数码管显示
{
  if(flag==1)
  {
    flag=0;
    pros[0]=0x40;
        pros[1]=0x40;
  }
  pros[0]=smgduan[distance/10];
  pros[1]=smgduan[distance%10];

}



void star_Ch()                                                                //打开超声波测距模块
{
    TRIG=1;
        delay20us();
        TRIG=0;

}
void main()
{
   Usair();
   while(1)
   {
    star_Ch();
        while(!ECHO);
        TR0=1;
        while(ECHO)
        TR0=0;
    delay(1000);
        Digplay();  
          KeyDown();
   }

}
void Init() interrupt 1
{
    TH0=0;
        TL0=0;
          flag=1;
}

不知道那里出现了问题,大神解救一下
IMG_20180207_183632.jpg

相关帖子

dirtwillfly| | 2018-2-8 08:18 | 显示全部楼层
网上有很多例子可以参考啊,
https://wenku.baidu.com/view/935fe87a9e314332396893be.html 最后有代码

使用特权

评论回复
caijie001| | 2018-2-9 15:10 | 显示全部楼层
【教程】超声波测距
https://bbs.21ic.com/icview-2408582-1-1.html?fromuid=1875788
(出处: 21ic电子技术论坛)

使用特权

评论回复
caijie001| | 2018-2-9 15:10 | 显示全部楼层
你应该描述一下你的情况,,,,一大堆代码没人愿意看的

使用特权

评论回复
niuminghui2008| | 2018-2-9 15:42 | 显示全部楼层
都不知道你说谁说什么?

使用特权

评论回复
airwill| | 2018-2-10 10:44 | 显示全部楼层
先来支持一下新人
不过改代码的事情不要问了. 你的设计方案和思路可以讲讲. 看看方案有没有问题
再描述一下调试中有遇到问题吧

使用特权

评论回复
dirtwillfly| | 2018-2-10 12:36 | 显示全部楼层
airwill 发表于 2018-2-10 10:44
先来支持一下新人
不过改代码的事情不要问了. 你的设计方案和思路可以讲讲. 看看方案有没有问题
再描述一下 ...

使用特权

评论回复
jrcsh| | 2018-2-10 13:31 | 显示全部楼层
本帖最后由 jrcsh 于 2018-2-10 13:33 编辑

首先先要看懂源代码的工作原理。

搞清楚源代码的工作流程。

然后在一些节点上去检验数据结果是否正确。
要明白在这个点上的数据应该为多少范围是多少?


使用特权

评论回复
optec| | 2018-2-14 14:39 | 显示全部楼层
电路原理图都没有,问题也描述不清楚,给出一堆代码无法解决问题啊。

使用特权

评论回复
wtzhu| | 2018-3-1 21:52 | 显示全部楼层
代码应该很少会有人帮你看,这个你可以借鉴借鉴

超声波.pdf

441.79 KB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

22

帖子

0

粉丝