找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2265|回復: 1
收起左側

還是舵機控制問題,請教各位高俠。

[復制鏈接]
ID:85201 發(fā)表于 2015-7-23 11:12 | 顯示全部樓層 |閱讀模式
前面發(fā)過一個帖子詢問舵機控制的問題,我現(xiàn)在想寫一個控制舵機來回擺動,擺動頻率為大約一秒一個來回?倲[動時間一分鐘后停止的C程序。有一位兄弟給我提供了個思路,但苦于我是剛開始接觸單片機,對于這位兄弟提供的思路只能是意會,卻寫不出來。煩請各位高手幫忙寫一下,我需要馬上就用到它,所以現(xiàn)在現(xiàn)翻書學習已然來不及的。謝謝各位。
回復

使用道具 舉報

ID:79544 發(fā)表于 2015-7-23 19:53 | 顯示全部樓層
同時控制3路舵機
  1. #include<reg52.h>
  2. //#define uchar unsigned char
  3. //#define uint unsigned int
  4. //#define moto_pwm  P1_4  //PWM輸出腳控制舵機

  5. sbit moto_pwm=P1^0;//PWM輸出腳控制舵機
  6. sbit moto_pwm1=P1^1;//PWM輸出腳控制舵機
  7. sbit moto_pwm2=P1^2;//PWM輸出腳控制舵機

  8. sbit xiaocheting=P1^3;//按鍵控制
  9. sbit xiaochehouti=P1^4;
  10. sbit xiaocheqianjin=P1^5;

  11. uchar pwm_lefr=0;//定義 定時器自加1變量
  12. uchar pwm_lefr1=0;//定義 定時器自加1變量
  13. uchar pwm_lefr2=0;//定義 定時器自加1變量
  14. uchar duojiguizhong=12;//舵機歸中1.5ms
  15. uchar duojiguizhong1=12;//舵機歸中1.5ms
  16. uchar duojiguizhong2=12;//舵機歸中1.5ms


  17. void pwmmaic()//產生PWM
  18. {
  19.         if(pwm_lefr<=duojiguizhong)
  20.        
  21.                 moto_pwm=1;
  22.                 else
  23.                 moto_pwm=0;
  24.                 if(pwm_lefr>=200)
  25.                 pwm_lefr=0;       
  26. if(pwm_lefr1<=duojiguizhong1)
  27.        
  28.                 moto_pwm1=1;
  29.                 else
  30.                 moto_pwm1=0;
  31.                 if(pwm_lefr1>=200)
  32.                 pwm_lefr1=0;       
  33. if(pwm_lefr2<=duojiguizhong2)
  34.        
  35.                 moto_pwm2=1;
  36.                 else
  37.                 moto_pwm2=0;
  38.                 if(pwm_lefr2>=200)
  39.                 pwm_lefr2=0;       
  40. }
  41. void time1() interrupt 3
  42. {
  43. //        TH1=0XFf;//100us的賦值11.0592M
  44. //        TL1=0XAE;
  45.         TH1=(65536-60)/256;//100us的賦值
  46.         TL1=(65536-60)%256;
  47.         pwm_lefr++;
  48.         pwm_lefr1++;
  49.         pwm_lefr2++;
  50.         pwmmaic();
  51. }
  52. void inttime()
  53. {
  54. //        TMOD=0X10;
  55.         TMOD=0X11;
  56.         TH1=(65536-60)/256;//100us的賦值12M
  57.         TL1=(65536-60)%256;
  58. //        TH1=0XFf;//100us的賦值11.0592M
  59. //        TL1=0XAE;
  60.         ET1=1;
  61.         TR1=1;
  62.         EA=1;
  63. }
  64. void delay(uint z)
  65. {
  66.         uint x,y;
  67.         for(x=z;x>0;x--)
  68.         for(y=240;y>0;y--);
  69. }
  70. void main()
  71. {
  72.         duojiguizhong=12;
  73.         duojiguizhong1=12;
  74.         duojiguizhong2=12;
  75.         inttime();
  76.         while(1)
  77.         {
  78.                 if(xiaocheting==0)       
  79.                 {
  80.                         delay(10);
  81.                         if(xiaocheting==0)       
  82.                         {
  83.                                 duojiguizhong=4;
  84.                                 delay(2000);

  85.                                 duojiguizhong1=6;
  86.                                 delay(1000);

  87.                                 duojiguizhong=14;
  88.                                 delay(2000);

  89.                                 duojiguizhong1=14;
  90.                                 delay(2000);

  91.                                 while(xiaocheting==0);
  92.                                 duojiguizhong=12;//歸中
  93.                                 delay(2000);
  94.                          }
  95.                          
  96.                 }
  97.                 /*
  98.                 duojiguizhong=16;
  99.                 delay(1000);
  100.                 duojiguizhong=12;//歸中
  101.                 delay(1000);
  102.                 duojiguizhong=8;//右45度
  103.                 delay(1000);

  104.                 duojiguizhong1=6;
  105.                 delay(1000);
  106.                 duojiguizhong1=12;
  107.                 delay(1000);
  108.                 duojiguizhong1=16;
  109.         //        delay(1000);*/

  110.         }
  111. }
復制代碼

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表