新闻中心

EEPW首页>嵌入式系统>设计应用> 51单片机IO模拟PWM控制舵机转向

51单片机IO模拟PWM控制舵机转向

作者: 时间:2016-11-22 来源:网络 收藏
本例程晶振为32M


#include
#define uint unsigned int

本文引用地址://m.amcfsurvey.com/article/201611/319701.htm

void drive();
void delay(uint);

sbit pwm=P2^0;


uint set; //set为舵机转角标志位
unsigned char angle;//angle为舵机PWM变化打角


void Time0_Init()//中断初始化
{
TMOD=0X01;
IE=0X82;
TH0=(65536-58)/256;
TL0=(65536-58)%6;
TR0=1;
}

void main()//主函数
{
set=0;
angle=23;// 改变angle的值可以改变舵机的占空比

Time0_Init();

for(;;)
{
drive();
}
}


void drive()//电机驱动例程,改变占空比
{

angle=12;
delay(800);

angle=52;
delay(800);

angle=135;
delay(800);
}

void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}

void T0_time()interrupt1//100HZ,10MS
{

TH0=(65536-58)/256;
TL0=(65536-58)%6;

if(setpwm=1;
else
pwm=0;
set++;
if(set>385) set=0;//舵机占空比

}



评论


技术专区

关闭