微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 小车问题

小车问题

时间:10-02 整理:3721RD 点击:
小车壁障加循迹程序,输到单片机为什么小车工作不正常,壁障也不准确,压根就没循迹迹象,以下附程序,望大神指点
#include<AT89X52.H>
#include<xunji.h>

#define Left_1_led        P3_7        
#define Left_2_led        P3_6                 
#define Right_1_led       P3_5      
#define Right_2_led       P3_4         
#define waibu  P2_0
#define Left_moto_go      {P1_0=1,P1_1=0,P1_2=1,P1_3=0;}    //左边两个电机向前走
#define Left_moto_back    {P1_0=0,P1_1=1,P1_2=0,P1_3=1;}         //左边两个电机向后转
#define Left_moto_Stop    {P1_0=0,P1_1=0,P1_2=0,P1_3=0;}    //左边两个电机停转                     
#define Right_moto_go     {P1_4=1,P1_5=0,P1_6=1,P1_7=0;}        //右边两个电机向前走
#define Right_moto_back   {P1_4=0,P1_5=1,P1_6=0,P1_7=1;}        //右边两个电机向前走
#define Right_moto_Stop   {P1_4=0,P1_5=0,P1_6=0,P1_7=0;}        //右边两个电机停转   
/************************************************************************/        
//延时函数        
    void delay(unsigned int k)
{   
      unsigned int x,y;
          for(x=0;x<k;x++)
            for(y=0;y<2000;y++);
}
/************************************************************************/
//前速前进
      void  run(void)
{
          Left_moto_go ;
          Right_moto_go ;
}
/************************************************************************/
//后退
      void  backrun(void)
{
          Left_moto_back ;   //左电机往前走
          Right_moto_back ;  //右电机往前走
}
/************************************************************************/
//停止
      void  stoprun(void)
{
          Left_moto_Stop ;   //左电机往前走
          Right_moto_Stop ;  //右电机往前走
}
/************************************************************************/
//左转
      void  leftrun(void)
{
          Left_moto_back ;   //左电机往前走
          Right_moto_go ;  //右电机往前走
}
/************************************************************************/
//右转
      void  rightrun(void)
{
          Left_moto_go ;   //左电机往前走
          Right_moto_back ;  //右电机往前走
}
void xunji()
{
  if(Left_2_led==1&&Right_1_led==1)
  backrun();
  if(Left_2_led==0&&Right_1_led==1)
  rightrun();
  if(Left_2_led==1&&Right_1_led==0)
  leftrun();
  if(Left_2_led==0&&Right_1_led==0)
  run();
}
void bizhang()
{
  if(Left_2_led==1&&Right_1_led==1)
  {
   if((Left_1_led==1&&Right_2_led==1)||(Left_1_led==0&&Right_2_led==0))
   backrun();
   if((Left_1_led==0&&Right_2_led==1)||(Left_1_led==0&&Right_2_led==0)||(Left_1_led==1&&Right_2_led==0))
rightrun();
   if((Left_1_led==0&&Right_2_led==1)||(Left_1_led==1&&Right_2_led==1))
   leftrun();
   if((Left_1_led==0&&Right_2_led==0))
   {
   while((!Right_2_led))
   {
    run();
   }
   }
  }
}
void main()
{
  while(1)
  {
  xunji();
bizhang();
  }
}
头文件为
#include <AT89X52.H>
#ifndef _XUNJI_
#define _XUNJI_
#define uint unsigned int
#define uchar unsigned char
void fun1();
void fun3();
void fun4();
void fun5();
void bz1();
void bz2();
void bz3();
void xunji();
void bizhang();
void xunji();
void bizhang();
#endif


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

网站地图

Top