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

標題: 基于STC89C52單片機的舵機SG90驅動程序 [打印本頁]

作者: 小蘿卜頭    時間: 2019-8-1 17:18
標題: 基于STC89C52單片機的舵機SG90驅動程序



        本人是初學單片機,若有不到之處,希望大家積極指出,共同學習                         下面說一下驅動舵機SG90過程中的一些經驗:
1.了解舵機基本運動機理
    舵機內部結構及運動原理詳細解析
       (重要的是看舵機運動原理)


2.注意我們使用的是模擬舵機(模擬舵機和數字舵機驅動方法不同)
     模擬舵機:需要不斷的發送PWM信號,才可旋轉到指定位置。
    數字舵機:只需給一個PWM信號,即可旋轉到指定位置。


3. 使用PWM信號控制—詳細代碼如下
  1. /***************************************************
  2. /*舵機控制
  3. /*開關K1控制順時針旋轉  開關K2控制逆時針旋轉
  4. /*每次旋轉角度由定時器1控制 定時器周期越短 精度越高
  5. ****************************************************/
  6. #include <reg52.h>
  7. #define uchar unsigned char
  8. #define uint unsigned int

  9. sbit pwm=P1^0;
  10. sbit k1=P3^0;        //k1順時針旋轉
  11. sbit k2=P3^1;        //k2逆時針旋轉

  12. uchar count=0;
  13. uchar n=14;                //初始位置-在90°附近   

  14. void delay5ms()
  15. {
  16.     unsigned char a,b;
  17.     for(b=19;b>0;b--)
  18.         for(a=130;a>0;a--);
  19. }
  20. void key()
  21. {
  22.   if(k1==0)
  23.   {
  24.             delay5ms();
  25.           if(k1==0)
  26.           {
  27.              while(k1==0); //判斷當鍵盤松開時
  28.                    if(n<=25) n++;//判斷是否旋轉到180°
  29.                  else n=26;           
  30.           }
  31.   }
  32.     if(k2==0)
  33.   {
  34.             delay5ms();
  35.           if(k2==0)
  36.           {
  37.              while(k2==0); //判斷當鍵盤松開時
  38.                    if(n>=6) n--; //判斷是否旋轉到0°
  39.                  else n=5;
  40.           }
  41.   }
  42. }

  43. void InitTimer()//0.1ms 12Mhz
  44. {
  45.     TMOD = 0x01;
  46.     TH0 = 0xFF;
  47.     TL0 = 0x9C;
  48.     EA = 1;
  49.     ET0 = 1;
  50.     TR0 = 1;
  51. }

  52. void main()
  53. {
  54.     InitTimer();
  55.         while(1)
  56.         {
  57.           key();
  58.         }
  59. }

  60. void Timer() interrupt 1
  61. {
  62.     TH0 = 0xFF;
  63.     TL0 = 0x9C;
  64.         count++;
  65.         if(count<=200)
  66.         {
  67.            if(count<=n)
  68.            {
  69.                       pwm=1;
  70.            }
  71.            else
  72.            {
  73.                       pwm=0;
  74.            }
  75.         }
  76.         else
  77.         {
  78.            count=0;
  79.            pwm=0;
  80.         }
  81. }
復制代碼


作者: 小蘿卜頭    時間: 2019-8-2 15:55
講的不錯




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