找回密码
 立即注册

QQ登录

只需一步,快速开始

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

求助:一个舵机控制小程序的编写

[复制链接]
跳转到指定楼层
楼主
ID:85201 发表于 2015-7-9 15:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我有个小项目上需要做一个用来控制舵机左右摆动且持续一分钟后停止的小程序。单片机用的是STC89C52RC,哪位大侠给练练手,帮忙写个C语言的。不胜感激。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:80992 发表于 2015-7-9 19:24 | 只看该作者
PWM20MS周期,高电平1—2SM 来回变,变一分钟

评分

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

查看全部评分

回复

使用道具 举报

板凳
ID:77282 发表于 2015-7-10 07:06 | 只看该作者
这有个我发的舵机控制程序:http://www.51hei.com/bbs/dpj-37116-1.html

评分

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

查看全部评分

回复

使用道具 举报

地板
ID:85201 发表于 2015-7-11 17:27 | 只看该作者
你这个程序我有点看不太懂啊。
回复

使用道具 举报

5#
ID:85201 发表于 2015-7-15 00:46 | 只看该作者
有没有人劳驾写个程序啊?我试了好几次,舵机总是不动。
回复

使用道具 举报

6#
ID:87991 发表于 2015-8-19 12:27 | 只看该作者
同求!!!!
回复

使用道具 举报

7#
ID:79544 发表于 2015-8-23 22:27 | 只看该作者
你试试这个程序,适当改改。
  1. /****************************************************
  2. 功能:正确的3路舵机控制左,右,归中,程序
  3.         单片机:STC89C52
  4.         晶振:11.0592M
  5.         作者:苏义江
  6.         时间:2014-3-5
  7.         可以通过按键和传感器控制
  8. *****************************************************/
  9. //#include<12c5a.h>
  10. #include<reg52.h>
  11. #define uchar unsigned char
  12. #define uint unsigned int


  13. sbit moto_pwm=P1^0;//PWM输出脚控制舵机
  14. sbit moto_pwm1=P1^1;//PWM输出脚控制舵机
  15. sbit moto_pwm2=P1^2;//PWM输出脚控制舵机

  16. sbit xiaocheting=P1^3;//按键控制
  17. sbit xiaochehouti=P1^4;
  18. sbit xiaocheqianjin=P1^5;

  19. uchar pwm_lefr=0;//定义 定时器自加1变量
  20. uchar pwm_lefr1=0;//定义 定时器自加1变量
  21. uchar pwm_lefr2=0;//定义 定时器自加1变量
  22. uchar duojiguizhong=12;//舵机归中1.5ms
  23. uchar duojiguizhong1=12;//舵机归中1.5ms
  24. uchar duojiguizhong2=12;//舵机归中1.5ms


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

  93.                                 duojiguizhong1=6;
  94.                                 delay(1000);

  95.                                 duojiguizhong=14;
  96.                                 delay(2000);

  97.                                 duojiguizhong1=14;
  98.                                 delay(2000);

  99.                                 while(xiaocheting==0);
  100.                                 duojiguizhong=12;//归中
  101.                                 delay(2000);
  102.                          }
  103.                          
  104.                 }
  105.        

  106.         }
  107. }
复制代码
回复

使用道具 举报

8#
ID:90211 发表于 2015-9-15 21:38 | 只看该作者
有点看不懂
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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