小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

51單片機(jī)驅(qū)動(dòng)伺服電機(jī)程序

 共同成長888 2015-07-18
 51單片機(jī)除了幾款加強(qiáng)版的帶pwm,很多都不帶,所以要用51控制伺服電機(jī)很多時(shí)候就要軟件模擬pwm??戳诵┐a有的是通過延時(shí)來輸出pwm波,有的也用了定時(shí)器但是那些代碼要驅(qū)動(dòng)多路伺服電路就顯得比較麻煩。下面的代碼是通過定時(shí)器0產(chǎn)生每0.5ms一次的提醒,程序在大循環(huán)中通過調(diào)用DJ()函數(shù)可以返還值給伺服電機(jī)信號(hào)引腳,DJ()函數(shù)可以定旋轉(zhuǎn)的角度,但是因?yàn)槎〞r(shí)器設(shè)置是0.5ms的中斷這就決定了旋轉(zhuǎn)呢角度只能是-45,-90,0,45,90。如果要提高精度就要通過設(shè)置定時(shí)器的初值,改變函數(shù)的num值來達(dá)成。
#include"reg52.h"
unsigned int num=0;
//舵機(jī)
sbit DJ1=P3^6;
sbit DJ2=P3^7;          /*引腳定義*/
int DJ(int a);             //函數(shù)聲明
timerinit()            //定時(shí)器中斷初始化
 {
 TMOD=0x01;                               //設(shè)置定時(shí)器0為工作方式1
 EA=1;                                    //開總中斷
 ET0=1;                                   //定時(shí)器0中斷允許
    TH0 = (65536-500)/256;                  //初值使得定時(shí)器0.5毫秒溢出
    TL0 = (65536-500)%256;
 TR0=0;         
 }
main()
 {
 timerinit();
 while(1)
  {
    }
 }
timer()  interrupt 0       //0.5ms發(fā)生一次中斷,20ms后定時(shí)器置0重新計(jì)數(shù)
 {
  num++;
  DJ1=DJ(3);
  DJ2=DJ(3);
  if(num>=40)     
  {
   num=0;
      TH0 = (65536-500)/256;                  //初值使得定時(shí)器0.5毫秒溢出
    TL0 = (65536-500)%256;
   return;
  }
 }
int DJ(char a)           //當(dāng)a=3舵機(jī)所在的位置是0度a=2 a=1分別對應(yīng)的位置是-45 -90度a=4 a=5對應(yīng)位置為45 90度
 {
 if(num>=a||num>=5)
  return 0;
 if(num>=1)
  return 1;
 }
    時(shí)間倉促還沒有測試程序的可行性(通常是沒有問題呢,呵呵),等有時(shí)間的話會(huì)繼續(xù)完善程序加上可以控制舵機(jī)旋轉(zhuǎn)速度的功能。如果要弄機(jī)器人的話還是弄塊專業(yè)的驅(qū)動(dòng)板吧,那樣調(diào)試起來會(huì)很直觀很方便呢減少許多不必要的麻煩呢。
 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多