找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11826|回复: 15
收起左侧

51单片机控制一路舵机控制90度来回 源程序

  [复制链接]
ID:190151 发表于 2017-4-16 17:01 | 显示全部楼层 |阅读模式
分享一个用51单片机实现的一路舵机控制90度来回控制程序
0.png

单片机源程序:
  1. #include "STC12C5620AD.H"        //STC89c52系列单片机
  2. sbit pwm =P1^3 ;          //PWM信号输出
  3. sbit sjg =P1^2 ;                  //三极管,继电器 ,电磁铁
  4. sbit cxyg =P1^0 ;                  //场效应管,电磁吸盘
  5. unsigned char ci;        //0.1ms次数ci,总行程300度时,11次代表90度,5次代表0度
  6. unsigned char cishu;           //进入中断次数
  7. /*******************延时函数***********************/
  8. void delay10ms(void) //误差 -0.000000000002us

  9. {
  10. unsigned char a,b;
  11. for(b=151;b>0;b--)

  12. for(a=29;a>0;a--);
  13. }

  14. void delay100ms(void) //误差 -0.000000000021us

  15. {
  16. unsigned char a,b,c;
  17. for(c=35;c>0;c--)

  18. for(b=10;b>0;b--)
  19. for(a=130;a>0;a--);
  20. }

  21. void delay1s(void) //误差 -0.00000000024us

  22. {
  23. unsigned char a,b,c;

  24. for(c=95;c>0;c--)

  25. for(b=26;b>0;b--)

  26. for(a=185;a>0;a--);

  27. }

  28. /********************定时器0初始化************************/
  29. void Time0_Init()            //定时器初始化
  30. {
  31. TMOD = 0x01;             //定时器0工作在方式1   
  32. IE  = 0x82;                                 //中断允许寄存器
  33. TH0  = 0xff;
  34. TL0  = 0xa3;     //11.0592MZ晶振,0.1ms
  35. TR0=1;                   //定时器开始
  36. }
  37. /***************定时器中断函数*****************/
  38. void Time0_Int() interrupt 1 //中断程序
  39. {
  40. TH0  = 0xff;             //重新赋值
  41. TL0  = 0xa3;
  42.    cishu++;
  43. if(cishu<ci)
  44.   {
  45.   pwm=1;
  46.   }
  47. else if(ci<cishu<200)
  48.   {
  49.   pwm=0;
  50.   }
  51.   cishu=cishu%200;
  52. }
  53. /*****************主函数*******************/
  54. void main()
  55. {
  56. cishu=0;
  57. ci=5;
  58. pwm=0;
  59. cxyg=0;//电磁吸盘不工作
  60. sjg=1;         //继电器不工作
  61. Time0_Init();
  62.    
  63.    ci=5;           //舵机归零
  64.    delay1s();delay1s();delay1s();
  65.    cxyg=0; //电磁吸盘不工作
  66.    sjg=1;  //继电器不工作
  67.    delay1s();delay1s();delay1s();
  68.    delay1s();delay1s();delay1s();//延时1s时间,舵机归零回正
  69.    delay1s();delay1s();delay1s();
  70.    delay1s();delay1s();delay1s();
  71.    delay1s();delay1s();delay1s();
  72.    delay1s();delay1s();delay1s();            
  73. while(1)
  74.   {   
  75.    ci=13;   //舵机转过90度
  76.    delay1s();delay1s();delay1s();
  77.    delay1s();delay1s();delay1s();
  78.    delay1s();delay1s();delay1s();
  79.    delay1s();delay1s();delay1s();
  80.    delay1s();//延时1s时间,舵机转90度
  81.    cxyg=1; //电磁吸盘工作
  82.    sjg=0;  //继电器工作,电磁铁得电
  83.    delay1s();//延时1s时间,将工件吸起来
  84.    cxyg=1; //电磁吸盘工作
  85.    sjg=1;  //继电器不工作,电磁铁失电
  86.    delay1s();delay1s();//延时2s,用来拍照
  87.    delay1s();delay1s();delay1s();
  88.    delay1s();delay1s();delay1s();
  89.    delay1s();delay1s();delay1s();
  90.    delay1s();delay1s();delay1s();
  91.    delay1s();delay1s();delay1s();
  92.    delay1s();delay1s();delay1s();

  93.    ci=5;           //舵机归零,在顶上
  94.    delay1s();delay1s();delay1s();
  95.    delay1s();delay1s();delay1s();
  96.    cxyg=1; //电磁吸盘工作
  97.    sjg=1;  //继电器不工作
  98.    delay1s();delay1s();delay1s();//延时3s时间,拍照
  99.    delay1s();delay1s();delay1s();
  100.    delay1s();delay1s();delay1s();
  101.    delay1s();delay1s();delay1s();
  102.    delay1s();delay1s();delay1s();
  103.    delay1s();delay1s();delay1s();
  104.    delay1s();delay1s();delay1s();

  105.    ci=13;   //舵机转过90度 ,低端
  106.    delay1s();delay1s();delay1s();
  107.    delay1s();delay1s();delay1s();
  108.    delay1s();//延时1s时间,舵机转90度
  109.    cxyg=1; //电磁吸盘工作
  110.    sjg=0;  //继电器工作,电磁铁得电
  111.    delay1s();delay1s();delay1s();delay1s();
  112.    delay1s();delay1s();delay1s();delay1s();
  113.    delay1s();delay1s();delay1s();delay1s();
  114.    delay1s();delay1s();delay1s();delay1s();
  115.    delay1s();delay1s();delay1s();delay1s();
  116.    delay1s();delay1s();delay1s();delay1s();
  117.    //延时1s时间,将工件吸起来
  118.    cxyg=0; //电磁吸盘不工作
  119.    delay100ms();
  120.    sjg=1;  //继电器不工作,电磁铁失电
  121.    delay1s();delay1s();delay1s();//延时

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

下载:
51一路舵机控制90度来回1.zip (15.55 KB, 下载次数: 164)

评分

参与人数 1黑币 +2 收起 理由
zjp1390 + 2 不错,用得到,赞一个。

查看全部评分

回复

使用道具 举报

ID:240210 发表于 2018-3-25 23:07 | 显示全部楼层
我想要黑笔
回复

使用道具 举报

ID:314625 发表于 2018-4-23 17:09 | 显示全部楼层
楼主教一下呗
回复

使用道具 举报

ID:291846 发表于 2018-4-26 15:36 | 显示全部楼层
楼主可否私教,没有黑币啊
回复

使用道具 举报

ID:264603 发表于 2018-4-30 08:18 | 显示全部楼层
很好很好很好 很好
回复

使用道具 举报

ID:427754 发表于 2018-11-16 16:08 | 显示全部楼层
楼主 你有没有 180 270的代码
回复

使用道具 举报

ID:399179 发表于 2018-11-16 16:36 来自手机 | 显示全部楼层
谢谢分享!正在学习!
回复

使用道具 举报

ID:156485 发表于 2018-11-16 17:03 | 显示全部楼层
不错的哦,程序
回复

使用道具 举报

ID:514400 发表于 2019-4-17 11:06 | 显示全部楼层
厉害了
回复

使用道具 举报

ID:524023 发表于 2019-5-11 04:01 | 显示全部楼层
很棒的程序
回复

使用道具 举报

ID:524023 发表于 2019-5-11 04:02 | 显示全部楼层
不错,用得到
回复

使用道具 举报

ID:510728 发表于 2019-5-19 11:10 | 显示全部楼层
内容很详细 值得一观
回复

使用道具 举报

ID:586422 发表于 2019-8-6 22:55 | 显示全部楼层
51单片机可以直接驱动舵机转动吗??
回复

使用道具 举报

ID:51321 发表于 2019-8-7 14:05 | 显示全部楼层

不错,用得到
回复

使用道具 举报

ID:652751 发表于 2019-11-30 00:09 | 显示全部楼层
非常好的程序
回复

使用道具 举报

ID:706636 发表于 2020-11-20 20:42 | 显示全部楼层
不错,很有用
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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