微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机实现超声波测距

51单片机实现超声波测距

时间:10-02 整理:3721RD 点击:
我在网上买的郭天祥的板子学习单片机,在做超声波测距时,障碍物离超声波模块太近显示600多cm,这是什么原因呢?第一次发帖,求大神指教!#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit trig=P1^7;
sbit echo=P1^6;
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcden=P3^4;
sbit lcdrs=P3^5;
uint bai,shi,ge,time,s;
void delayms(uint xms)
{
        uint i,j;
        for(i=xms;i>0;i--)
        for(j=110;j>0;j--);
}
void initHC()
{
        trig=0;
        echo=0;
}       
void initt0()
{
        TMOD=0x01;
        TH0=0;
        TL0=0;
        EA=1;
        ET0=1;
}
uint distance()
{
        time=TH0*256+TL0;
        TH0=0;
        TL0=0;
        s=time*0.01853;
        return s;
}
void lcd_com(uchar com)
{
        lcdrs=0;
        P0=com;
        delayms(5);
        lcden=1;
        delayms(5);
        lcden=0;
}
void lcd_date(uchar date)
{
        lcdrs=1;
        P0=date;
        delayms(5);
        lcden=1;
        delayms(5);
        lcden=0;
}
void initlcd()
{
        dula=0;
        wela=0;
        lcden=0;
        lcd_com(0x38);
        lcd_com(0x0c);
        lcd_com(0x06);
        lcd_com(0x01);
}
void main()
{
        initlcd();
        initt0();
        initHC();
       
        while(1)
        {
                trig=1;
                _nop_();_nop_();_nop_();_nop_();_nop_();
                _nop_();_nop_();_nop_();_nop_();_nop_();
                _nop_();_nop_();_nop_();_nop_();_nop_();
                _nop_();_nop_();_nop_();_nop_();_nop_();
                trig=0;
                while(echo==0);
                TR0=1;
                while(echo==1);
                TR0=0;
                distance();
                        bai=s/100%10;
                        shi=s/10%10;
                        ge=s%10;
                        lcd_com(0x80);
                        lcd_date('D');
                        lcd_date('i');
                        lcd_date('s');
                        lcd_date('t');
                        lcd_date('a');
                        lcd_date('n');
                        lcd_date('c');
                        lcd_date('e');
                        lcd_com(0x80+0x46);
                        lcd_date(0x30+bai);
                        lcd_date(0x30+shi);
                        lcd_date(0x30+ge);
                        lcd_date('c');
                        lcd_date('m');
                        delayms(1000);
                }
}


表面不平整的障碍物在远距离对测距没有什么影响,但如果太近就会导致声波漫反射,有这种说法,我也并不是特别确定,你找个平整的障碍物再试试。

可能是离得太近了吧

Lih厉害

这种超声波模块距离太近也是不准确的,好像是低于1cm后是不准确的

谢谢,我找到原因了,超声波模块测距有范围限制。

新手,刚学51单片机

毕业设计做的就是超声波测距。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top