#include <stc12c5a60s2.h>
#define uint unsigned int
sbit L_IN1=P0^0;
sbit L_IN2=P0^1;
sbit L_IN3=P0^2;
sbit L_IN4=P0^3;
sbit R_IN1=P0^4;
sbit R_IN2=P0^5;
sbit R_IN3=P0^6;
sbit R_IN4=P0^7;
uint i,j;
void delay(void)
{
for(i=20000;i>0;i--)
for(j=110;j>0;j--);
}
void CAR_STOP(void)
{
P0=0x00;
}
void CAR_Go_Forward(void)
{
P0=0X99;
}
void CAR_Left(void)
{
P0=0x90;
}
void CAR_Right(void)
{
P0=0x09;
}
void Right_back(void) //右轮后退
{
P0=0x60;
}
void Left_back(void) //左轮后退
{
P0=0x06;
}
void main(void)
{
while(1)
{
CAR_Go_Forward();
delay();
CAR_Left();
delay();
CAR_Right();
delay();
Right_back();
delay();
Left_back();
delay();
CAR_STOP();
delay();
}
}
只是写的测试程序,可是发现的问题是在左转(右转)的时候左轮(右轮)有明显的拖动的现在,求解,可以加pwm控制左右两边的速度不等实现左转和右转么?新手求解。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#include <stc12c5a60s2.h>
#include <nima.h>
#define uint unsigned int
sbit L_IN1=P0^0;
sbit L_IN2=P0^1;
sbit L_IN3=P0^2;
sbit L_IN4=P0^3;
sbit R_IN1=P0^4;
sbit R_IN2=P0^5;
sbit R_IN3=P0^6;
sbit R_IN4=P0^7;
void CAR_Left(void)
{
P0=0x99;
}
void main()
{
CAR_Left();
CCAP1L=0x38;
CCAP1H=0x38; //pwm1,P1.4,右轮
CCAP0L=0x70; //pwm0,p1.3,左轮
CCAP0H=0x70; //越大低电平时间越久
}
定义:
#ifndef _nima_H_
#define _nima_H_
#include "STC12C5A60S2.h"
void PWM_INIT(void)
{
CCON = 0;
CMOD = 0x02;
CL = 0x00;
CH = 0x00;
CCAPM0 = 0x42;
CCAPM1 = 0x42;
CR = 1;
}
#endif
这样好像也调不了。。。。。。
好吧,
一周热门 更多>