找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4851|回复: 7
打印 上一主题 下一主题
收起左侧

单片机控制步进电机转向(顺逆转)设计(keil C51代码+Proteus仿真)

  [复制链接]
跳转到指定楼层
楼主
利用51单片机控制步进电机转向(顺逆转)的一个简单程序和电路仿真。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. //该程序能实现延时 ,但是不足之处是第一次按键也要延时

  2. #include <reg52.h>
  3. #define out P2
  4. sbit pos=P0^0;
  5. sbit neg=P0^1;
  6. sbit stop=P0^2;           //设置一个停止按键
  7. typedef unsigned char u8;
  8. typedef unsigned int u16;
  9. u16 m=0;
  10. void delayms(u16 k) ;
  11. void delayms(u16 j)
  12. {
  13. u8 i;
  14. for(;j>0;j--)
  15. {
  16. i=250;
  17. while(--i);
  18. i=249;
  19. while(--i);
  20. }
  21. }

  22. void delayDS(u16 z)
  23. {
  24. while(z--)
  25. ;
  26. }

  27. u8 code turn[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03};          //只会作用于低四位,转换成二进制,发现是单双八拍工作方式
  28. void main()
  29. {
  30. u8 i=0;
  31. out =0x03;         //只会在p2口低四位作用

  32. //无限循环的开始
  33. while(1)
  34. {

  35. //正转键按下
  36. if(!pos)
  37. {
  38.         m++;
  39.         if(m!=0)
  40.         delayDS(50000);
  41. //        m=0;
  42.         while(1)
  43.         {
  44.         i=i<8?i+1:0;  //如果i<8,i 就依次加1,节拍一次进行,如果i!<8,进行循环
  45.         out =turn[i];
  46.         delayms(50);         //第一拍完后,转换到第二拍时有个时差
  47.         if((!neg)||(!stop))
  48.         {       
  49.         m++;                                        
  50.         break;
  51.         }
  52. //        break;
  53.         }
  54. }


  55. //反转键按下
  56. if(!neg)
  57. {
  58.         m++;

  59.         if(m!=0)
  60.         delayDS(50000);
  61. //        m=0;
  62.         while(1)
  63.         {
  64.         i=i>0?i-1:7;
  65.         out =turn[i];
  66.         delayms(50);
  67.         if((!pos)||(!stop))
  68.         {
  69.         m++;
  70.         break;
  71.         }
  72. //        break;
  73.         }


  74. }

  75. if(!stop)
  76. {
  77.         m++;
  78.         if(m!=0)
  79.         delayDS(50000);
  80. //        m=0;
  81.         while(1)
  82.         {
  83.         out = 0x00;
  84.         if((!neg)||(!pos))
  85.         {
  86.         m++;
  87.         break;
  88.         }
  89.         }
  90. }
  91. }
  92. }
复制代码

所有资料51hei提供下载:
电机正反转程序与Proteus仿真.zip (102.78 KB, 下载次数: 82)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584041 发表于 2019-7-14 23:25 | 只看该作者
大家有说明问题可以问哟
回复

使用道具 举报

板凳
ID:282095 发表于 2019-7-15 09:22 | 只看该作者
请问楼主采用的是TTL电平进行电机驱动的吗
回复

使用道具 举报

地板
ID:584041 发表于 2019-7-19 15:02 | 只看该作者
鹏博士PBs 发表于 2019-7-15 09:22
请问楼主采用的是TTL电平进行电机驱动的吗

采用的是达林顿管
回复

使用道具 举报

5#
ID:586687 发表于 2019-7-26 09:52 | 只看该作者
想问下,怎样可以加个加速减速键,就是改那个延时
回复

使用道具 举报

6#
ID:584041 发表于 2019-7-30 16:56 | 只看该作者
hxtong 发表于 2019-7-26 09:52
想问下,怎样可以加个加速减速键,就是改那个延时

首先,你要知道家减速的原理,就是控制节拍间的延时来的
回复

使用道具 举报

7#
ID:387700 发表于 2019-8-7 15:30 | 只看该作者
下载来学习学习
回复

使用道具 举报

8#
ID:61950 发表于 2019-9-8 12:38 | 只看该作者
试过,这个可以转起来.谢楼主
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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