标题: 51单片机舵机控制系统 驱动设计完整版 带仿真和程序 [打印本页]

作者: gsdgsd    时间: 2017-5-23 22:51
标题: 51单片机舵机控制系统 驱动设计完整版 带仿真和程序
分享点我自己的51单片机控制舵机的资料give大家,带原理图程序proteus仿真

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


舵机程序设计的流程图(附件中可下载清晰版):


单片机驱动舵机源程序如下:
  1. /*******************************************************
  2. *****************************************************
  3. StC80C51 控制舵机驱动程序
  4. ******************************************************/


  5. #include <REG52.h> //STC80C51 单片机头文件

  6. sbit LED_0=P2^0; //0度指示灯
  7. sbit LED_45=P2^1; //45度指示灯
  8. sbit LED_90=P2^2; //90度指示灯
  9. sbit LED_135=P2^3; //135度指示灯
  10. sbit LED_180=P2^4; //180度指示灯

  11. sbit PWM_JIA=P3^6; //角度加按键
  12. sbit PWM_JIAN=P3^7; //角度减按键

  13. sbit MOTOR_IN=P1^7; //舵机信号输入角

  14. unsigned char count; //定时器中断次数
  15. unsigned char jiaodu;//角度参数


  16. /************************************
  17. *********毫秒延时函数************
  18. ************************************/
  19. void Delay(unsigned char xms)
  20. {
  21.         unsigned char i,j;
  22.         for(i=xms;i>0;i--)
  23.                 for(j=125;j>0;j--);
  24. }

  25. /************************************
  26. *********定时器0初始化函数***********
  27. ************************************/
  28. void Time0_init()
  29. {
  30.   TMOD=0X01; //定时器工作在方式1
  31.   IE=0X82;
  32.   TH0=0XFE;
  33.   TL0=0X33; //定时0.5毫秒中断一次
  34.   TR0=1;  //打开定时器
  35. }

  36. /************************************
  37. *********按键扫描函数***********
  38. ************************************/
  39. void KeyScan()
  40. {
  41.   if(PWM_JIA==0)  //角度增加按键是否按下
  42.   {
  43.       Delay(10);  //延时10毫秒消抖

  44.           if(PWM_JIA==0) //确定按键按下
  45.           {
  46.               jiaodu++;
  47.                   count=0;
  48.                   if(jiaodu ==6) //如果角度参数为6

  49.                    jiaodu =5; //如果角度参数复位为5

  50.          while(PWM_JIA==0); //等待按键松开
  51.           }
  52.    
  53.   }

  54.     if(PWM_JIAN==0)//角度减少按键是否按下
  55.           {
  56.       Delay(10); //延时10毫秒消抖

  57.           if(PWM_JIAN==0)//确定按键按下
  58.           {
  59.               jiaodu--;
  60.                   count=0;
  61.                   if(jiaodu ==0)//如果角度参数为0

  62.                    jiaodu =1;//如果角度参数复位为1

  63.          while(PWM_JIAN==0);//等待按键松开
  64.           }
  65.    
  66.   }
  67. }
  68. /************************************
  69. *********LED显示函数***********
  70. ************************************/
  71. void Display()
  72. {
  73. switch(jiaodu)
  74. {
  75.     case 1:            //如果角度参数为1,LED1亮
  76.          P2=0XFF;
  77.                  LED_0=0;
  78.                  break;

  79.     case 2:           //如果角度参数为2,LED2亮
  80.          P2=0XFF;
  81.                  LED_45=0;
  82.                  break;

  83.     case 3:           //如果角度参数为3,LED3亮
  84.          P2=0XFF;
  85.                  LED_90=0;
  86.                  break;

  87.         case 4:           //如果角度参数为4,LED4亮
  88.          P2=0XFF;
  89.                  LED_135=0;
  90.                  break;

  91.         case 5:           //如果角度参数为5,LED5亮
  92.          P2=0XFF;
  93.                  LED_180=0;
  94.                  break;

  95. }
  96. }
  97. /************************************
  98. *********主函数***********
  99. ************************************/
  100. void main()
  101. {
  102. jiaodu=1;  //初始化角度参数为1
  103. count=0; //初始化定时器中断次数为0
  104. Time0_init(); //调用定时器0初始化函数
  105. while(1)
  106. {
  107.             KeyScan(); //调用按键扫描函数
  108.           Display(); //调用LED显示函数
  109. }
  110. }
  111. /************************************
  112. *********定时器0中断服务函数***********
  113. ************************************/
  114. ……………………

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

所有资料51hei提供下载:
舵机驱动设计完整版.rar (323.58 KB, 下载次数: 1090)




作者: admin    时间: 2017-5-24 01:36
好资料,51黑有你更精彩!!!
作者: hao05020    时间: 2018-1-11 00:24

谢谢你,刚好是我想要的,51黑有你更精彩!!!
作者: 15379996356    时间: 2018-1-18 23:05
大佬,51只能控制舵机以这几个角度转吗?能不能调成自己想要的任意角
作者: 15379996356    时间: 2018-1-18 23:07
51能不能控制舵机以任意角度转,还是只能转这几个角度
作者: sky日耀    时间: 2018-1-31 19:08
15379996356 发表于 2018-1-18 23:07
51能不能控制舵机以任意角度转,还是只能转这几个角度

可以任意
作者: guo1373766226    时间: 2018-2-11 01:05
学习学习学习
作者: wjq19890407    时间: 2018-2-24 20:44
只能转这几个角度
作者: wuxishun    时间: 2018-3-30 20:43
非常好的资料,谢谢
作者: qwertyuio111    时间: 2018-4-13 17:30
为什么仿真不了呢,2个错误,电源怎么加呢

作者: SaveMyLife    时间: 2018-4-16 09:22
谢谢~

作者: ValarMorgulis    时间: 2018-4-17 18:00
不错,顶
作者: taczer    时间: 2018-5-2 11:40
感谢楼主的分享学习一下
作者: wowotou    时间: 2018-5-3 13:44
好资料,烧进去程序试试
作者: 你大爷的大爷    时间: 2018-5-5 10:17
感谢楼主
作者: 你大爷的大爷    时间: 2018-5-8 16:05
多谢楼主,多多学习
作者: 万人无往    时间: 2018-5-10 20:43
仿真提示5V电源错误,需要改为VCC才可以运行,
但是不知道为什么舵机不管怎么样都动不了
作者: bcdy    时间: 2018-5-11 17:29
为什么你的舵机不转
作者: a782127162    时间: 2018-5-21 11:40
感谢大佬,非常棒
作者: NepuNepu_desu    时间: 2018-5-21 21:25
步进电机连线好像错了,我把电机1脚接vcc;2脚接P1.7;3脚接GND勉强会转了,而且转的角度有问题
作者: ironTonySTK    时间: 2018-5-22 18:26
电路图有问题哦   舵机的中间才是接信号线的吧
作者: l630034911    时间: 2018-6-1 16:49
多谢楼主,多多学习
作者: 2016250    时间: 2018-6-2 11:07
刚好需要这个舵机的控制程序,很及时
作者: 乱瓜子    时间: 2018-6-7 11:55
哎哟,不错啊!
作者: Somiy    时间: 2018-6-8 15:28
老哥,如果只控制舵机自动转到一定角度然后回来这样的重复运动改怎么搞
作者: 乱瓜子    时间: 2018-6-11 19:33
下载试试看,愁死了,这个舵机
作者: 乱瓜子    时间: 2018-6-11 19:36
发现和郭天祥的例程差不多一样啊,我晕哦
作者: fw3fw15_    时间: 2018-6-14 21:00
赞一个!
作者: 20090909    时间: 2018-7-17 16:40
为什么烧录之后没反应
作者: 小玺    时间: 2018-7-25 22:18
有一个地方没看懂,sbit MOTOR_IN=P1^7; //舵机信号输入角,整个程序里光定义了,也没用到啊
作者: aaaa_7777    时间: 2018-7-31 23:29
学习学习学习
作者: 小玺    时间: 2018-8-3 10:39
小玺 发表于 2018-7-25 22:18
有一个地方没看懂,sbit MOTOR_IN=P1^7; //舵机信号输入角,整个程序里光定义了,也没用到啊

求解释

作者: 小玺    时间: 2018-8-3 10:40
20090909 发表于 2018-7-17 16:40
为什么烧录之后没反应

有一个地方没看懂,sbit MOTOR_IN=P1^7; //舵机信号输入角,整个程序里光定义了,也没用到啊
作者: wanfn    时间: 2018-8-26 17:16
很给力
作者: zhanglei456    时间: 2018-9-12 18:08
不错。。。。。
作者: 喵唧唧    时间: 2018-9-27 20:08
厉害
。。。
作者: 智成科技    时间: 2018-10-7 23:19
支持支持
作者: hjh51hdzlt    时间: 2018-10-24 14:44
谢谢分享
作者: hjh51hdzlt    时间: 2018-10-24 14:44
谢谢分享
作者: xielun水瓶    时间: 2018-11-12 10:42
太棒了!
作者: hedianzi    时间: 2018-11-12 17:36
感谢楼主
作者: ▓逍〓遥◆    时间: 2018-11-12 23:36
51黑有你更精彩!!!
作者: 810121037    时间: 2018-11-16 15:25
非常好,谢谢分享

作者: Sunny丶    时间: 2018-12-16 10:42
太棒啦  真的有用!
作者: fengzhuang    时间: 2018-12-16 12:33
很详细,学习了
作者: 820590074    时间: 2018-12-19 14:37
下来看看。
作者: 无聊王者    时间: 2018-12-25 19:10

好资料,51黑有你更精彩!!!  想要下载
作者: epigone    时间: 2018-12-27 14:10
51黑有你更精彩!!!
作者: 自在随心    时间: 2018-12-28 10:18
赞一个
作者: 123要坐正    时间: 2018-12-31 01:51
赞一个
作者: mumu123123    时间: 2019-1-3 09:29
赞一个
作者: 大眼看世界    时间: 2019-1-3 15:12
谢谢楼主
作者: 2科技路过    时间: 2019-1-6 17:01
好资料,烧进去程序试试
作者: 259    时间: 2019-1-13 16:14
正好用

作者: flytohign    时间: 2019-2-13 13:23
太棒了,这个舵机程序,很到位
作者: 2592532754    时间: 2019-4-18 20:49
很给力
作者: Rainson    时间: 2019-4-20 18:29
楼主 请问我下载了为什么打不开呢?
作者: 438716645    时间: 2019-6-18 19:35
谢谢你,刚好是我想要的,51黑有你更精彩!!!
作者: 609038039    时间: 2019-6-20 18:25
感谢分享

作者: 绝的黎波里    时间: 2019-8-9 11:33
很有用
作者: readinged    时间: 2019-8-9 17:13
运行不了,舵机不会动,就灯会闪
作者: luckylion    时间: 2019-8-12 14:12
感谢分享
作者: 阿斯顿发生    时间: 2019-12-6 21:32
        很给力!
作者: mentougou    时间: 2019-12-17 11:52
刚学51,很想下载这个资料,谢谢楼主谢谢51黑
作者: mentougou    时间: 2019-12-18 13:08
下载了,在仿真里无法运行,请高手指点一下问题在哪里?
作者: mentougou    时间: 2019-12-19 08:44
请高手指点一下这个哪里出错了,仿真里无法运行。
作者: 小毛孩子    时间: 2020-3-15 18:32
接了实验板上之后管用,还不错
作者: 小毛孩子    时间: 2020-3-16 20:08
mentougou 发表于 2019-12-19 08:44
请高手指点一下这个哪里出错了,仿真里无法运行。

线接错了,信号线应该接到中间那个引脚

作者: mentougou    时间: 2020-3-17 15:05
小毛孩子 发表于 2020-3-16 20:08
线接错了,信号线应该接到中间那个引脚

谢谢

作者: ztzp    时间: 2020-3-17 15:07
已下载,谢谢。
目录重复,“c51程序”与“舵机仿真原理图2”这两个目录是多余的,因为在“舵机驱动完整版”这个目录中就包含它们了。
作者: jstzxhlzx    时间: 2020-3-21 11:01
很给力!!!!
作者: 2604084525    时间: 2020-3-25 23:28
qwertyuio111 发表于 2018-4-13 17:30
为什么仿真不了呢,2个错误,电源怎么加呢

把电源上的5v都去掉
作者: dilongking    时间: 2020-10-10 09:25
想问下能否以按住按键的长短来控制角度的变化




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