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

標題: 51單片機控制MG99R舵機源碼 [打印本頁]

作者: 唱歌睡覺打豆豆    時間: 2019-3-11 12:41
標題: 51單片機控制MG99R舵機源碼
使用舵機型號為MG99R

產品參數:

速度: 4.8v 0.20sec/60°           6.0V 0.19sec/60°

扭力:4.8V 13KG-cm               6.0V  15KG-cm

電壓 4.8V-7.2V

空載工作電流:120Ma             堵轉工作電流:1450mA

響應脈寬時間=<5usec

上升沿時間對應角度:

0.5ms           0

1ms           45

1.5ms           90

2.0ms           135

2.5ms           180

驅動舵機需要一個20ms的時基脈沖,高電平在0.5-2.5ms

舵機有三根線:黃色為信號線,紅色為電源線,棕色為地線。

單片機源程序:
  1. #include <reg51.h>
  2. unsigned int target=6,percent=0;//將最初的高電平時間設為0.6ms
  3. sbit pwm=P0^0;//P0^0口輸出脈沖信號
  4. sbit key1=P3^0;
  5. sbit key2=P3^1;
  6. //函數說明
  7. void Timer0initial();
  8. void initial_Timer();
  9. void delay(unsigned int x);
  10. void keyscan();

  11. void delay(unsigned int x)//延時
  12. {
  13.         unsigned int i,j;
  14.         for(i=0;i<x;++i)
  15.         for(j=120;j>0;--j);
  16. }
  17. void keyscan()
  18. {
  19.         if(key1==0)
  20.         {
  21.                 delay(3);
  22.                 if(key1==0)
  23.                 {
  24.                         if(target>=7)
  25.                         {
  26.                                 target-=1;
  27.                         }
  28.                         while(key1==0)
  29.                         {P1=0x00;}//避免長按一直轉動
  30.                 }
  31.                 P1=0xff;
  32.         }
  33.         if(key2==0)//剛啟動只能按按鍵2
  34.         {
  35.                 delay(3);
  36.                 if(key2==0)
  37.                 {
  38.                         if(target<=25)
  39.                         {
  40.                                 target+=5;//可以調節舵機每次轉過的角度
  41.                         }
  42.                         while(key2==0)
  43.                         {P1=0x00;}
  44.                 }
  45.                 P1=0xff;
  46.         }
  47. }
  48. void initial()
  49. {
  50.         key1=1;
  51.         key2=1;
  52.         P1=0xff;//設置P1初值
  53.         initial_Timer();
  54. }
  55. void Timer0initial()
  56. {
  57.         TH0=(65536-65)/256;
  58.         TL0=(65536-65)%256;
  59. }//每0.1ms產生一次中斷(實測)
  60. void initial_Timer()
  61. {
  62.         EA=1;//開啟總中斷
  63.         ET0=1;//允許T0中斷
  64.         TMOD=0x01;//使用工作方式1
  65.         Timer0initial();
  66.         TR0=1;//軟件中斷允許
  67. }

  68. void Timer0() interrupt 1 using 0//中斷方式為定時器/計數器0內部中斷
  69. {
  70.         percent+=1;
  71.         if(percent==200)
  72.         {
  73.                 percent=0;
  74.                 pwm=1;//高電平輸出
  75.         }
  76.         if(percent==target)
  77.         {
  78.                 pwm=0;
  79.         }
  80.         Timer0initial();
  81. }
  82. void main()
  83. {
  84.         initial();
  85.         while(1)
  86.         {
  87.                 keyscan();
  88.         }
  89. }
復制代碼







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