找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15404|回复: 21
收起左侧

51单片机控制舵机自动旋转教程与源程序等资料

  [复制链接]
ID:251714 发表于 2018-2-28 10:26 | 显示全部楼层 |阅读模式
基于51单片机 的 舵机 转动
0.png

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

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

0.png


单片机源程序如下:

  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)
回复

使用道具 举报

ID:382085 发表于 2018-8-2 11:34 | 显示全部楼层
谁云盘有,能不能云盘发一份
回复

使用道具 举报

ID:385168 发表于 2018-8-12 19:01 | 显示全部楼层
学习中,谢谢!
回复

使用道具 举报

ID:385570 发表于 2018-8-12 20:06 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:380985 发表于 2018-8-14 23:19 | 显示全部楼层
学习中  谢谢分享
回复

使用道具 举报

ID:176438 发表于 2018-8-19 13:52 | 显示全部楼层
学习中
回复

使用道具 举报

ID:322848 发表于 2018-8-20 09:31 | 显示全部楼层
学习一下,用得到
回复

使用道具 举报

ID:389411 发表于 2018-8-24 11:08 | 显示全部楼层
找不到程序
回复

使用道具 举报

ID:410987 发表于 2018-10-17 18:31 | 显示全部楼层
程序不错
回复

使用道具 举报

ID:399179 发表于 2018-10-17 19:45 来自手机 | 显示全部楼层
学习中,谢谢楼主分享
回复

使用道具 举报

ID:429582 发表于 2018-11-19 23:04 | 显示全部楼层
我找不到连接的口咋办
回复

使用道具 举报

ID:432142 发表于 2018-11-23 23:42 | 显示全部楼层
谢谢楼主分享!
回复

使用道具 举报

ID:442653 发表于 2019-2-13 16:04 | 显示全部楼层
请问与51单片机怎么连线啊
回复

使用道具 举报

ID:328609 发表于 2019-2-21 16:14 | 显示全部楼层
学习中  谢谢分享
回复

使用道具 举报

ID:385135 发表于 2019-3-8 23:08 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:422463 发表于 2019-7-15 21:52 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:501687 发表于 2019-7-19 18:01 来自手机 | 显示全部楼层
学习中,谢谢分享
回复

使用道具 举报

ID:442599 发表于 2019-7-20 15:32 | 显示全部楼层
ET0不是计数器与定时器的控制端口吧,C/T才是
回复

使用道具 举报

ID:595515 发表于 2019-8-5 15:12 | 显示全部楼层
管脚怎么接啊
回复

使用道具 举报

ID:597426 发表于 2019-8-8 09:16 | 显示全部楼层
作者你好,我下载了可为什么运行的时候没有反应,你能分析一下可能是哪里出了问题吗,后面那个死循环你把PWM=1注释掉了,这个有影响吗,与51的接线是怎么接的,谢谢
回复

使用道具 举报

ID:361216 发表于 2019-8-10 17:47 | 显示全部楼层
是个不错的东东,谢谢分享.
回复

使用道具 举报

ID:598462 发表于 2019-8-12 09:38 | 显示全部楼层
非常好的学习资料,谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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