久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機驅動伺服電機程序

作者:劉聞山   來源:本站原創   點擊數:  更新時間:2013年12月09日   【字體:


    51單片機除了幾款加強版的帶pwm,很多都不帶,所以要用51控制伺服電機很多時候就要軟件模擬pwm?戳诵┐a有的是通過延時來輸出pwm波,有的也用了定時器但是那些代碼要驅動多路伺服電路就顯得比較麻煩。下面的代碼是通過定時器0產生每0.5ms一次的提醒,程序在大循環中通過調用DJ()函數可以返還值給伺服電機信號引腳,DJ()函數可以定旋轉的角度,但是因為定時器設置是0.5ms的中斷這就決定了旋轉呢角度只能是-45,-90,0,45,90。如果要提高精度就要通過設置定時器的初值,改變函數的num值來達成。
#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;
 }
    時間倉促還沒有測試程序的可行性(通常是沒有問題呢,呵呵),等有時間的話會繼續完善程序加上可以控制舵機旋轉速度的功能。如果要弄機器人的話還是弄塊專業的驅動板吧,那樣調試起來會很直觀很方便呢減少許多不必要的麻煩呢。
 

關閉窗口

相關文章

主站蜘蛛池模板: 日本在线网站 | 国产91在线 | 中日 | 91极品尤物在线播放国产 | 一级毛片免费完整视频 | 九九福利 | 国产日韩欧美一区二区 | 欧美日韩a | 久久久蜜桃一区二区人 | 免费国产视频 | 久久大陆 | 天天插天天射天天干 | 99精品在线免费观看 | 国产精品久久久久久久久久久久冷 | 欧美国产视频一区二区 | 91精品国产自产精品男人的天堂 | 天堂资源 | 色综合桃花网 | 中文字幕在线一区二区三区 | 久久成人一区 | 欧美一级精品片在线看 | av大片 | 亚洲国产精品一区二区久久 | 欧美一区二区在线免费观看 | 亚洲国产精品99久久久久久久久 | 在线观看深夜视频 | 成人高清视频在线观看 | 97国产精品 | 久久天天综合 | 欧美中文字幕一区二区三区 | 日日碰狠狠躁久久躁96avv | 欧美日韩一区二区在线观看 | 日本三级全黄三级a | 亚洲精品一二三区 | 国产不卡在线播放 | 亚洲毛片 | 香蕉一区 | 久久久久国产精品午夜一区 | 高清视频一区二区三区 | 欧美精品一区二区三区在线 | 免费看国产a| 国产免费一区二区 |