标题: 51单片机控制舵机自动旋转教程与源程序等资料 [打印本页]

作者: 天才小壮    时间: 2018-2-28 10:26
标题: 51单片机控制舵机自动旋转教程与源程序等资料
基于51单片机 的 舵机 转动


舵机各个时钟的计算值a、max、min:


舵机原理及驱动.pdf教程:




单片机源程序如下:

  1. #include <reg52.h>             //头文件
  2. #define uchar unsigned char           //宏定义无符号字符型
  3. #define uint  unsigned  int           //宏定义无符号整型

  4. uint b;                    //中断值
  5. uint N=0;                //占空比计数值
  6. uint X=15;                //初始角度值  (取值范2~15)
  7. sbit PWM=P1^0;//PWM输出          (舵机控制端)
  8. /*************************************************************************/
  9. void timer0( ) interrupt 1 //定时器0工作方式1
  10. {
  11. TH0=0xff;          //重装计数初值     (65535-500)/256;    0.25ms
  12. TL0=0x38;          //重装计数初值         (65535-500)%256;  
  13. b++;                  //中断值
  14.          if(X!=8)//判断是否计数到9999  (舵机转的速度)
  15.               {
  16.                X=X+4;//加一  改变舵机转变的角度
  17.                           }
  18.            if(X!=2)//判断是否计数到0        (舵机转的速度)
  19.               {
  20.                    X=X-4;//减一  改变舵机转变的角度
  21.               }
  22. }
  23. /*************************************************************************/
  24. void main()
  25. {
  26. TMOD=0X01;       
  27. /***********************************************************         
  28. 0000 0001   选择定时计数器T0 :因为T1是由高4位控制,T0是由低4位控制  而该数中仅有低4位有数据
  29.        (TM0D.4/8) gate(门控位)=0时  
  30.                            TR0=1(T0)或者TR1=1(T1) 确定T0定时/计数器  此次试验 用的是TR0=1
  31. ************************************************************/
  32. TH0=0xff;          //重装计数初值  1111 1111
  33. TL0=0x38;          //重装计数初值  0011 1000
  34. EA=1;                  //开CPU中断
  35. ET0=1;            //计数器 开启
  36. /***********************************************************
  37. 开T/C0中断
  38.          ET0=0时  计时器
  39.              ET0=1时  计数器
  40. ************************************************************/
  41. TR0=1;           //开启T0
  42.   while(1)               //无限循环
  43. {
  44. // PWM=1;           //输出PWM正
  45. while(1)
  46.   {
  47. b=0;  //中断值
  48. while(!b);
  49. if (N==X)     //初始度值
  50.      PWM=0;
  51. if (N==100)
  52.      break;
  53. N++; //占空比计数值
  54.   }
  55.   N=0;    //占空比计数值
  56. ……………………

  57. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:

舵机自动转自动转.rar (316.61 KB, 下载次数: 545)



作者: linzdb    时间: 2018-8-2 11:34
谁云盘有,能不能云盘发一份
作者: luoshi133    时间: 2018-8-12 19:01
学习中,谢谢!
作者: skyblueblue    时间: 2018-8-12 20:06
感谢楼主分享
作者: 18239311863    时间: 2018-8-14 23:19
学习中  谢谢分享

作者: ddqwe    时间: 2018-8-19 13:52
学习中
作者: Airbnb    时间: 2018-8-20 09:31
学习一下,用得到
作者: 45623..    时间: 2018-8-24 11:08
找不到程序
作者: hsl123    时间: 2018-10-17 18:31
程序不错
作者: 快乐眼泪    时间: 2018-10-17 19:45
学习中,谢谢楼主分享
作者: hagregfd    时间: 2018-11-19 23:04
我找不到连接的口咋办
作者: 中原灏    时间: 2018-11-23 23:42
谢谢楼主分享!
作者: 5151du    时间: 2019-2-13 16:04
请问与51单片机怎么连线啊
作者: 996054544    时间: 2019-2-21 16:14
学习中  谢谢分享
作者: 1246698540    时间: 2019-3-8 23:08
感谢分享
作者: 030306    时间: 2019-7-15 21:52
感谢分享
作者: 1287546958    时间: 2019-7-19 18:01
学习中,谢谢分享
作者: 历练小小    时间: 2019-7-20 15:32
ET0不是计数器与定时器的控制端口吧,C/T才是
作者: 零食就是正义    时间: 2019-8-5 15:12
管脚怎么接啊
作者: chen羽    时间: 2019-8-8 09:16
作者你好,我下载了可为什么运行的时候没有反应,你能分析一下可能是哪里出了问题吗,后面那个死循环你把PWM=1注释掉了,这个有影响吗,与51的接线是怎么接的,谢谢
作者: lhqsbz    时间: 2019-8-10 17:47
是个不错的东东,谢谢分享.
作者: akjustice    时间: 2019-8-12 09:38
非常好的学习资料,谢谢分享




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