haimianxx 2022-04-18 15:52 采纳率: 86.2%
浏览 310

proteus仿真超声波模块遇到的困难

img

这是我proteus画的图,目的是让轮子在超声波测出的距离小于我设置的值时后退,大于时前进的功能,但超声波模块好像不起作用。

#include <REGX52.H>
#include<intrins.h>


sbit Echo=P1^1;  //³¬Éù²¨²â¾à·¢Éä¶Ëλµã
sbit Trig=P1^2;  //³¬Éù²¨²â¾à½ÓÊÕ¶Ëλµã

unsigned int sum; //³¬Éù²¨²â¾à½á¹û
//unsigned int mindistance=50; //С³µÓëÕÏ°­ÎïµÄÏÞÖƾàÀë


void Delay20us()        //@12.000MHz
{
    unsigned char i;

    _nop_();
    i = 7;
    while (--i);
}



void ultrasonic()  //³¬Éù²¨²â¾à³ÌÐò
{
    TMOD=0x11;  //¶¨Ê±Æ÷1£¬2¶¼Ê¹ÓÃ
    TL1=0;         //ÉèÖö¨Ê±Æ÷³õʼֵ
    TH1=0;      //ÉèÖö¨Ê±Æ÷³õʼֵ
    
    Trig=1;       //·¢ÉäÒ»¶ÎÂö³å£¬ÖÁÉÙ20us
    Delay20us(); 
    Trig=0;
    
    while(!Echo); //µÈ´ý³¬Éù²¨Ä£¿éµÄ·µ»ØÂö³å
    TR1=1;        //´ò¿ª¶¨Ê±Æ÷
    while(Echo);   //µÈ´ý³¬Éù²¨Ä£¿é·µ»ØÂö³å½áÊø
    TR1=0;         //Í£Ö¹¶¨Ê±Æ÷
    sum=((TH1*256+TL1)*0.034)/2+1; //¼ÆËãÓëÕÏ°­ÎïµÄ¾àÀë
        
         }

这个是我写的超声波模块有关的代码

#include <REGX52.H>
#include"Timer0.h"
sbit IN1=P2^0;
sbit IN2=P2^1;
sbit IN3=P2^6;
sbit IN4=P2^7;

unsigned int  number;


void advance()  //Ç°½ø
{    Duty_cycle_B=number;
    Duty_cycle_A=number;
    IN3=0;
    IN4=1;

    IN1=0;
    IN2=1;
    
}

void back()     //ºóÍË
{
    Duty_cycle_A=number;
    Duty_cycle_B=number;
    IN1=1;
    IN2=0;
    IN3=1;
    IN4=0;

}

这个是我直流电机有关的代码

#include <REGX52.H>
#include"Timer0.h"
#include"direction.h"
#include"ultrasonic.h"
#include"Delay.h"
unsigned int mindistance=50; //С³µÓëÕÏ°­ÎïµÄÏÞÖƾàÀë



void main()
{
    Timer0_Init();
    number=100;
  
    
         while(1)  
        {
            ultrasonic();
            if(sum<mindistance)
            {
                back();
            }
            else  {
                
            advance();
            }
                
           Delay(60);
         }

}

这个是我的主函数
,请大家帮忙看看哪里出了问题,是函数写错了还是proyeus的图有问题,谢谢大家!

  • 写回答

1条回答 默认 最新

  • 融岩大 2023-02-22 19:47
    关注

    看不到物理实现也不能确定,不过你可以尝试几种方法去分析,首先你要确定一下超声波是否工作,读到的值和实际值有没有误差;然后就是你的软件有没有问题;最后就是你的轮子有没有滞后,可以手动设置一个时间循环,设置轮子多长时间后停下,然后去判断软件和轮子是不是可以。这样一部分一部分的去分析问题的起因。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月18日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器