亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 基于STC89C52單片機(jī)的舵機(jī)SG90驅(qū)動程序 [打印本頁]

作者: 小蘿卜頭    時間: 2019-8-1 17:18
標(biāo)題: 基于STC89C52單片機(jī)的舵機(jī)SG90驅(qū)動程序



        本人是初學(xué)單片機(jī),若有不到之處,希望大家積極指出,共同學(xué)習(xí)                         下面說一下驅(qū)動舵機(jī)SG90過程中的一些經(jīng)驗(yàn):
1.了解舵機(jī)基本運(yùn)動機(jī)理
    舵機(jī)內(nèi)部結(jié)構(gòu)及運(yùn)動原理詳細(xì)解析
       (重要的是看舵機(jī)運(yùn)動原理)


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


3. 使用PWM信號控制—詳細(xì)代碼如下
  1. /***************************************************
  2. /*舵機(jī)控制
  3. /*開關(guān)K1控制順時針旋轉(zhuǎn)  開關(guān)K2控制逆時針旋轉(zhuǎn)
  4. /*每次旋轉(zhuǎn)角度由定時器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順時針旋轉(zhuǎn)
  11. sbit k2=P3^1;        //k2逆時針旋轉(zhuǎn)

  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); //判斷當(dāng)鍵盤松開時
  28.                    if(n<=25) n++;//判斷是否旋轉(zhuǎn)到180°
  29.                  else n=26;           
  30.           }
  31.   }
  32.     if(k2==0)
  33.   {
  34.             delay5ms();
  35.           if(k2==0)
  36.           {
  37.              while(k2==0); //判斷當(dāng)鍵盤松開時
  38.                    if(n>=6) n--; //判斷是否旋轉(zhuǎ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. }
復(fù)制代碼


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




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