找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3836|回复: 0
收起左侧

新人第一次共享模拟舵机控制代码 改变angle即可控制转向

[复制链接]
ID:116157 发表于 2016-4-23 16:45 | 显示全部楼层 |阅读模式
新人第一次共享模拟舵机控制代码,自己测试没问题,只要改变angle即可控制转向
0.png
源程序:

  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. //变量与引脚定义
  5. sbit dj=P1^7;        //与舵机信号线接的IO
  6. uchar pwm;                //pwm计数变量
  7. uchar angle=4;        //舵机摆臂默认转到45度,这是一个控制摆臂角度的变量,改变这个量就可以改变舵机摆臂的转角位置,范围是2~10,对应0~180度


  8. //***********************************************************************************//
  9. //软件延时,约为z毫秒
  10. void delay(uint z)
  11. {
  12.         uint x,y;
  13.         for(x=z;x>0;x--)
  14.                 for(y=110;y>0;y--);
  15. }


  16. //定时器初始化,用以模拟驱动舵机的PWM波
  17. void Timer_Init(void)
  18. {
  19.         TMOD=0x02;
  20.         TH0=6;        //设为0.25ms触发一次定时器中断
  21.         TL0=6;
  22.         ET0=1;
  23.         EA=1;
  24.         TR0=1;
  25. }
  26. //***********************************************************************************//       
  27. //主函数
  28. void main()
  29. {
  30.         Timer_Init();        //定时器初始化
  31.         angle=6;
  32. }
  33. //***********************************************************************************//
  34. //定时器中断服务程序
  35. void Time0_Isr() interrupt 1  
  36. {
  37.         pwm++;        //判断值自加一
  38.         if(pwm==angle)        //与角度变量比较
  39.         {
  40.                 dj=0;        //接舵机的IO置0
  41.         }
  42.         if(pwm==80)        //0.25*80=20ms的周期
  43.         {
  44.                 pwm=0;        //周期到,清零
  45.                 dj=1;        //接舵机的IO置1
  46.         }
  47. }
复制代码


舵机参考程序.zip

806 Bytes, 下载次数: 24, 下载积分: 黑币 -5

可以控制舵机转向需要的拿去

评分

参与人数 2黑币 +52 收起 理由
aaaaa222 + 2 赞一个!
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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