新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)IO模擬PWM控制舵機(jī)轉(zhuǎn)向

51單片機(jī)IO模擬PWM控制舵機(jī)轉(zhuǎn)向

作者: 時(shí)間:2016-11-22 來(lái)源:網(wǎng)絡(luò) 收藏
本例程晶振為32M


#include
#define uint unsigned int

本文引用地址:http://m.butianyuan.cn/article/201611/319701.htm

void drive();
void delay(uint);

sbit pwm=P2^0;


uint set; //set為舵機(jī)轉(zhuǎn)角標(biāo)志位
unsigned char angle;//angle為舵機(jī)PWM變化打角


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

void main()//主函數(shù)
{
set=0;
angle=23; // 改變angle的值可以改變舵機(jī)的占空比

Time0_Init();

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


void drive() //電機(jī)驅(qū)動(dòng)例程,改變占空比
{

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()interrupt 1 //100HZ,10MS
{

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

if(set pwm=1;
else
pwm=0;
set++;
if(set>385) set=0; //舵機(jī)占空比

}



評(píng)論


技術(shù)專區(qū)

關(guān)閉