⑴ 使用51單片機驅動舵機
先別著急調試程序,先用5v電源試試舵機的電機(假如是5V工作的)轉不轉,如果轉,那就用示波器觀察一下各引腳是否有波形輸出,再就是你驅動電機的電路是否損壞,比如三極體壞了等等。
⑵ 怎麼用51單片機控制舵機
操作步驟:
1 單片機,舵機,電源共地;
2 用兩個穩壓晶元進行供電,將電源分開來;
3 舵機信號端沒有直接連接單片機IO口,我串了一個10K的電阻,也就是這一步之後就可以控制舵機。
⑶ 急求51單片機控制舵機C語言程序,舵機可以根據設定旋轉任意角度!急求啊,大神幫幫忙!非常感謝!
#include<reg52.h>typedef unsigned int uint;typedef unsigned char uchar;sbit pwm=P0^3;//輸出PWM信號uchar count=0;uint pwm_value=1500;//初值為1.5msuint value[]={1500,1000,1500,2000,1500};//void delay_ms(uint x){uint i;while(x--)for(i=0;i<125;i++);}void InitTimer(void){TMOD=0x11;//開定時器0,1TH0=-20000/256;//定時20MS,20MS為一個周期TL0=-20000%256;TH1=-1500/256;//定時1.5MS,這時舵機處於0度TL1=-1500%256;EA=1;//開總斷TR0=1;//開定時器0ET0=1;TR1=1;//開定時器1ET1=1;}void timer0(void) interrupt 1//定時器0中斷函數{pwm=1;TH0=-20000/256;TL0=-20000%256;TR1=1;count++;}void timer1(void) interrupt 3//定時器1中斷函數{pwm=0;TH1=-pwm_value/256;TL1=-pwm_value%256;TR1=0;}void main(void)//主函數{uchar i;InitTimer();pwm_value=1500;while(1){for(i=0;i<5;i++){pwm_value=value[i];//通過數組就可以改變舵機的轉角度delay_ms(1000);}}}
⑷ 一個51單片機能控制幾個舵機
如果完全要精確控制舵機,使用51是比較困難的。比如20ms周期,控制占空比。占空比的計算時間使用終端就會造成程序一直進入中斷。所以控制每個舵機都使用51獨立時鍾(每個舵機使用一個獨立時鍾,占空比用延時實現),只能控制2個舵機。要是每個舵機使用2個獨立時鍾(周期占空比個使用一個時鍾中斷)只能控制一個舵機。
⑸ 51單片機用軟體定時來控制舵機,延時函數怎麼寫求解
延時可以用定時器來實現,也可以自己寫延時函數。
這是51單片機定時器初始化示常式序。
TMOD = 0x10f; //GATE=0 01010001
//C/T=0--定時/計數器1工作於定時方式
//M1=1;M0=0--選擇工作模式1,構成最大定時器
//T0:在此程序不使用
TL1 = 0x13; TH1 = 0x2C; //指定定時時間為50ms 65536-50/(11.0592/12)=11283=2C13h
EA = 1; //開總中斷
TF1 = 0;
ET1 = 1; //開定時器中斷
TR1 = 1; //開始計時
如果用延時函數,要精確計算時間。
這是精確定時1ms的程序,你可以參考一下。
void delay1ms(void)
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}