光电开关和超声波小车。。。

2019-07-15 12:36发布

左右两个光电开关检测小车前方是否有障碍墙(光电开关用键控代替)。超声波让小车微调,走赛道的正中间。舵机控制小车前轮的左右转动(两个程序通过控制舵机左右蔽障),两个程序分开都能用,但和在一起后舵机不动了(keil软件提示没有警告和错误)。求大神看看我的程序是不是有哪里不对~~

PS:单片机用的是89c52.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
禾苗m
2019-07-16 17:33
舵机控制子程序:
#include <reg52.H>                //器件配置文件
#include <intrins.h>
#include "delay.h"
#include"duozhuan.h"

/********************************************************/
                                /*左微调 */
void rightweirun(void)
{
Set_PWM0=Set_PWM0+6;
delay(400);
Set_PWM0=Set_PWM0-6;
}
/*****************************************************/
                /*右微调 */
void leftweirun(void)
{
                Set_PWM0=Set_PWM0-6;
                delay(4000);
                Set_PWM0=Set_PWM0+6;
}
/*********************************************************/
              /*左转回正*/
void leftrun(void)
  {
   if(key10==0&& tt1==0)
    {
      delay(3);
          if(key10==0&& tt1==0)
          {       
            tt1=1;   
                Set_PWM0=Set_PWM0+6;
                delay(4000);
                Set_PWM0=Set_PWM0-6;
                delay(4000);
                Set_PWM0=Set_PWM0-6;
                delay(4000);
                Set_PWM0=Set_PWM0+6;
          }
    }            
   }
/*********************************************************/
               /*右转回正*/
void rightrun(void)
{
  if(key11==0&& tt1==0 )
   {
       delay(3);
          if(key11==0&& tt1==0)
          {         
            tt1=1;   
                Set_PWM0=Set_PWM0-6;
                delay(4000);
                Set_PWM0=Set_PWM0+6;
                delay(4000);
                Set_PWM0=Set_PWM0+6;
                delay(4000);
                Set_PWM0=Set_PWM0-6;
          }
   }
}
/*********************************************************/
                 /*无高信号回来*/
void zheng(void)
{
if(key10==1 && key11==1) tt1=0;
}
/*********************************************************/

一周热门 更多>