标题: 新人第一次共享模拟舵机控制代码 改变angle即可控制转向 [打印本页]

作者: GPPyeye    时间: 2016-4-23 16:45
标题: 新人第一次共享模拟舵机控制代码 改变angle即可控制转向
新人第一次共享模拟舵机控制代码,自己测试没问题,只要改变angle即可控制转向

源程序:

  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

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






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1