標(biāo)題: 51單片機舵機控制程序 [打印本頁]

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

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



作者: 騰飛的龍    時間: 2016-2-16 12:49
親測好用的舵機控制程序,謝謝分享!
作者: 2651526901    時間: 2016-7-18 15:54
可以可以,蠻好用的,推介使用。

作者: yeyuaihaozhe    時間: 2017-9-9 21:57
樓主,把0.5ms的改成0.1ms,怎么改寫.謝謝
作者: 大黑牛食品    時間: 2019-5-4 16:15
有不用角度按鍵的程序嗎
作者: Heyrookies    時間: 2020-4-25 22:51
請問有控制2個舵機的嗎。




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