单片机控制舵机程序

2025-03-18 16:35:26
推荐回答(3个)
回答1:

//12MHz
#include

void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0B1;
TL0 = 0x0E0;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void delay(void) //误差 0us 延时1ms 此处可以修改高电平周期
//修改此处的延时可以更改舵机转的角度 ,45度具体是多少 你可以试试
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
void main(void)
{
InitTimer0();
P1_2=0;
while(1);
}

void Timer0Interrupt(void) interrupt 1
{
//20ms中断
TH0 = 0x0B1;
TL0 = 0x0E0;
P1_2=1;
delay();
P1_2=0;
}

回答2:

//晶振频率11.0592MHz----12MHz

#include "AT89X52.h"

void timer0(void) interrupt 1
{
TH0=0xfc;
TL0=0x18;
P1_2=~P1_2; PWM波从P1^2输出

}

//the main fun
void main(void)
{
TMOD=0x1;
TH0=0xfc;
TL0=0x18;
TR0=1;
ET0=1;
EA=1;
while(1);
}

回答3:

如果你自己不会写程序,就用555来做吧,很容易,在网上可以查到用555做的振荡器电路图。