51单片机驱动伺服电机程序
#include"reg52.h"
unsigned int num=0;
//舵机
sbit DJ1=P3^6;
sbit DJ2=P3^7; /*引脚定义*/
int DJ(int a); //函数声明
timerinit() //定时器中断初始化
{
TMOD=0x01; //设置定时器0为工作方式1
EA=1; //开总中断
ET0=1; //定时器0中断允许
TH0 = (65536-500)/256; //初值使得定时器0.5毫秒溢出
TL0 = (65536-500)%256;
TR0=0;
}
main()
{
timerinit();
while(1)
{
}
}
timer() interrupt 0 //0.5ms发生一次中断,20ms后定时器置0重新计数
{
num++;
DJ1=DJ(3);
DJ2=DJ(3);
if(num>=40)
{
num=0;
TH0 = (65536-500)/256; //初值使得定时器0.5毫秒溢出
TL0 = (65536-500)%256;
return;
}
}
int DJ(char a) //当a=3舵机所在的位置是0度a=2 a=1分别对应的位置是-45 -90度a=4 a=5对应位置为45 90度
{
if(num>=a||num>=5)
return 0;
if(num>=1)
return 1;
}
时间仓促还没有测试程序的可行性(通常是没有问题呢,呵呵),等有时间的话会继续完善程序加上可以控制舵机旋转速度的功能。如果要弄机器人的话还是弄块专业的驱动板吧,那样调试起来会很直观很方便呢减少许多不必要的麻烦呢。

评论