找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2015|回复: 1
打印 上一主题 下一主题
收起左侧

还是舵机控制问题,请教各位高侠。

[复制链接]
跳转到指定楼层
楼主
ID:85201 发表于 2015-7-23 11:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前面发过一个帖子询问舵机控制的问题,我现在想写一个控制舵机来回摆动,摆动频率为大约一秒一个来回。总摆动时间一分钟后停止的C程序。有一位兄弟给我提供了个思路,但苦于我是刚开始接触单片机,对于这位兄弟提供的思路只能是意会,却写不出来。烦请各位高手帮忙写一下,我需要马上就用到它,所以现在现翻书学习已然来不及的。谢谢各位。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:79544 发表于 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. }
复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表