标题: 寻迹小车:用定时器写了PWM波,能循迹,但是不能调速,求大神解答 [打印本页]

作者: jiangxi    时间: 2018-5-29 21:14
标题: 寻迹小车:用定时器写了PWM波,能循迹,但是不能调速,求大神解答
#include <reg52.h>
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;
sbit L_PWM=P0^4;
sbit R_PWM=P0^5;
sbit hongwai_l1=P2^2;
sbit hongwai_r1=P2^3;
sbit hongwai_l2=P2^4;
sbit hongwai_r2=P2^5;
unsigned char l_tt=0;
unsigned char l_Lpwm=2;
unsigned char l_Rpwm=2;
void delay(int i)
{
    uchar t;
    for(;i>0;i--)
    {
        for(t=110;t>0;t--);
    }
}
void time0init()
{
TMOD|=0x01;
TH0=0xFF;                  //定时10us,使通过电机的PWM波的频率为10khz
TL0=0xF6;
ET0=1;
EA=1;
TR0=1;
}
void time()interrupt 1
{
    TH0=0xFF;
    TL0=0xF6;
    l_tt++;         
    if(l_tt==9)
    {
        l_tt=0;
    }
    if(l_tt<l_Lpwm)
    {
        L_PWM=1;
    }
    else
    {
        L_PWM=0;
    }
    if(l_tt<l_Rpwm)
    {
        R_PWM=1;
    }
    else
    {
        R_PWM=0;
    }
}
void main()
{
time0init();
     
while(1)
{
   
  if(hongwai_l1==0&&hongwai_r1==0)
    {
      
         
      IN1=1;
   IN2=0;
   IN3=1;
   IN4=0;
   
    }
   
  if(hongwai_l1==1&&hongwai_r1==1)
    {
   
      IN1=1;
   IN2=1;
   IN3=1;
   IN4=1;
   delay(200);
      
    }
   
  if(hongwai_l1==0&&hongwai_r1==1)
    {
      
   
   IN1=1;
   IN2=0;
   IN3=1;
   IN4=1;
     
           
    }
  
    if(hongwai_l1==1&&hongwai_r1==0)
    {  
   IN1=1;
   IN2=1;
   IN3=1;
   IN4=0;
    }
   
   if(hongwai_l1==0&&hongwai_r1==0&&hongwai_l2==1&&hongwai_r2==0)
   {
  
       IN1=1;
       IN2=0;
       IN3=0;
       IN4=1;
       if(hongwai_l1==1)
       break;
   }
   if(hongwai_l1==0&&hongwai_r1==0&&hongwai_l2==1&&hongwai_r2==0)
   {  
   
       IN1=0;
       IN2=1;
       IN3=1;
       IN4=0;
       if(hongwai_r1==1)
       break;
   }
        
}
}
我用电压表测了一下使能端的电压差,只有1.34V,求解






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1