51單片機驅(qū)動伺服電機程序
#include"reg52.h"
unsigned int num=0;
//舵機
sbit DJ1=P3^6;
sbit DJ2=P3^7; /*引腳定義*/
int DJ(int a); //函數(shù)聲明
timerinit() //定時器中斷初始化
{
TMOD=0x01; //設(shè)置定時器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發(fā)生一次中斷,20ms后定時器置0重新計數(shù)
{
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;
}
時間倉促還沒有測試程序的可行性(通常是沒有問題呢,呵呵),等有時間的話會繼續(xù)完善程序加上可以控制舵機旋轉(zhuǎn)速度的功能。如果要弄機器人的話還是弄塊專業(yè)的驅(qū)動板吧,那樣調(diào)試起來會很直觀很方便呢減少許多不必要的麻煩呢。
評論