欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機控制MG996R舵機源程序 [打印本頁]

作者: 生鐵0    時間: 2019-7-20 20:01
標題: 51單片機控制MG996R舵機源程序
記得要用變壓器不然  供電會有問題

單片機源程序如下:
  1. #include "reg52.h"
  2. unsigned char count;      //0.5ms次數標識
  3. sbit pwm =P2^7 ;          //PWM信號輸出
  4. sbit jia =P3^4;           //角度增加按鍵檢測IO口
  5. sbit jan =P3^5;           //角度減少按鍵檢測IO口
  6. unsigned char jd;         //角度標識
  7. sbit led=P1^4;
  8. void delay(unsigned char i)//延時
  9. {
  10.   unsigned char j,k;
  11.   for(j=i;j>0;j--)
  12.     for(k=125;k>0;k--);
  13. }
  14. void Time0_Init()          //定時器初始化
  15. {
  16. TMOD = 0x01;           //定時器0工作在方式1   
  17. IE   = 0x82;
  18. TH0  = 0xfe;
  19. TL0  = 0x33;     //11.0592MZ晶振,0.5ms
  20.     TR0=1;                 //定時器開始
  21. }
  22. void Time0_Int() interrupt 1 //中斷程序
  23. {
  24. TH0  = 0xfe;             //重新賦值
  25. TL0  = 0x33;
  26.     if(count< jd)              //判斷0.5ms次數是否小于角度標識
  27.       pwm=1;                  //確實小于,PWM輸出高電平
  28.     else
  29.       pwm=0;                  //大于則輸出低電平
  30.     count=(count+1);          //0.5ms次數加1
  31.     count=count%40;     //次數始終保持為40 即保持周期為20ms
  32. }

  33. void keyscan()              //按鍵掃描
  34. {
  35.    if(jia==0)               //角度增加按鍵是否按下
  36.   {        led=0;
  37.     delay(10);              //按下延時,消抖
  38.     if(jia==0)              //確實按下
  39.      {
  40.       jd++;                 //角度標識加1
  41.       count=0;              //按鍵按下 則20ms周期從新開始
  42.       if(jd==6)
  43.         jd=5;               //已經是180度,則保持
  44.       while(jia==0);        //等待按鍵放開
  45.      }
  46.   }
  47.   if(jan==0)                //角度減小按鍵是否按下
  48.   {
  49.     delay(10);
  50.     if(jan==0)
  51.      {
  52.       jd--;                 //角度標識減1
  53.       count=0;
  54.       if(jd==0)
  55.         jd=1;               //已經是0度,則保持
  56.       while(jan==0);
  57.      }
  58.   }
  59. }
  60. void main()
  61. {
  62. jd=1;
  63. count=0;
  64. Time0_Init();              
  65. while(1)
  66. {
  67.   keyscan();               //按鍵掃描
  68.    
  69. }
  70. }
復制代碼

所有資料51hei提供下載:
舵機.zip (21.49 KB, 下載次數: 124)



作者: liaojiaao    時間: 2019-11-29 15:09
我覺得應該要要計時器更短一點,然后就可以精準一點,比如說,我上面的代碼是0.5ms的,我其余不變,把定時器改成0.25ms一次,jd的數字就可以改成兩倍,原來的1和2對應現在的2和4,之間就多一個可以保持的角度了,多了個半角。就比原來多幾個角度可以控制,當周期越來越小,最后就會越來越準確
作者: Daniel008    時間: 2019-12-11 16:29
謝謝正在學習很有用
作者: huhouhezai    時間: 2020-1-5 20:37
mg996r舵機 需要初始化程序嗎 樓主大大




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1