找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机按键控制步进电机的源程序

[复制链接]
跳转到指定楼层
楼主
ID:334750 发表于 2018-5-22 20:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己做的小项目代码

单片机源程序如下:
  1. #include<reg52.h>  
  2. #include<intrins.h>   
  3. #define uchar unsigned char  
  4. #define uint unsigned int     
  5. uchar code CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};   //逆时钟旋转相序表
  6. uchar code CW[8]= {0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08};    //正时钟旋转相序表     
  7. sbit K1=P3^5;  //反转按键  
  8. sbit K2=P3^3;  //正转按键
  9. sbit K3=P3^1;  //反转按键  
  10. sbit K4=P3^0;  //正转按键         
  11. sbit K5=P3^2;  //正转按键
  12. void delaynms(uint aa)
  13. {   
  14.         uchar bb;   
  15.         while(aa--)   
  16.         {     
  17.                 for(bb=0;bb<115;bb++);     //1ms基准延时程序   
  18.         }   
  19. }

  20.   
  21. void motor_ccw(void)
  22. {    uchar i,j;   
  23.          for(j=0;j<8;j++)    //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周   
  24.          {         
  25.          for(i=0;i<8;i++)  //旋转45度  
  26.          {     P1=CCW[i];     
  27.                     delaynms(10);   //调节转速  
  28.          }   
  29.          }
  30. }

  31. void motor_ccw0(void)
  32. {    uchar i,j;   
  33.          for(j=0;j<8;j++)    //电机旋转一周,不是外面所看到的一周,是里面的传动轮转了一周   
  34.          {         
  35.          for(i=0;i<8;i++)  //旋转45度  
  36.          {     P0=CCW[i];     
  37.                     delaynms(10);   //调节转速  
  38.          }   
  39.          }
  40. }

  41. void motor_cw(void)
  42. {    uchar i,j;   
  43.         for(j=0;j<8;j++)   
  44.         {         
  45.         for(i=0;i<8;i++)  //旋转45度  
  46.         {     P1=CW[i];     
  47.                   delaynms(10);   //调节转速  
  48.         }
  49.         }   
  50. }

  51. void motor_cw0(void)
  52. {    uchar i,j;   
  53.         for(j=0;j<8;j++)   
  54.         {         
  55.         for(i=0;i<8;i++)  //旋转45度  
  56.         {     P0=CW[i];     
  57.                   delaynms(10);   //调节转速  
  58.         }
  59.         }   
  60. }

  61. void main(void)
  62. {   uchar r;   
  63.         uchar N=1;          //因为步进电机是减速步进电机,减速比的1/64 ,        
  64.                                                  //所以N=64时,步进电机主轴转一圈  
  65.         while(1)  
  66.         {
  67.                 if(K1==0)
  68.                 {for(r=0;r<N;r++)   
  69.                    motor_ccw();  //电机逆转     
  70.                 }
  71.                 else if(K3==0)
  72.                 {for(r=0;r<N;r++)   
  73.                    motor_ccw0();  //电机逆转     
  74.                 }                                        
  75.                 else if(K2==0)                                               
  76.                 {for(r=0;r<N;r++)   
  77.                                         motor_cw();   //电机反转            
  78.                 }
  79.                 else if(K4==0)                                               
  80.                 {for(r=0;r<N;r++)   
  81.                                         motor_cw0();   //电机反转            
  82.                 }
  83.         else if(K5==0)                                               
  84.                 {for(r=0;r<N;r++)   
  85.                                         motor_cw0();   //电机反转            
  86.                 }   
  87.             else     P1=0xf0;    //电机停止  
  88.         }   
  89. }
复制代码

所有资料51hei提供下载:
步进电机.zip (30.87 KB, 下载次数: 103)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:408644 发表于 2018-10-14 09:58 | 只看该作者
楼主,这个是基于51的还是stm32的程序??
回复

使用道具 举报

板凳
ID:401924 发表于 2018-12-10 12:21 | 只看该作者
没有主程序,要下载的才是全的吗?这个转法,每45度一个绕组供电,不知道改为每次多个绕组供电,力会不会更大一点跜
回复

使用道具 举报

地板
ID:383374 发表于 2019-1-17 01:11 来自手机 | 只看该作者
看一下。明天我要用
回复

使用道具 举报

5#
ID:404223 发表于 2019-1-19 16:50 | 只看该作者
程序思路不错,但没有细分控制,运行起来容易失步,平稳性不会太好,噪音也会比较大,如果能加以改进会更好些。建议加入细分和起步的梯形或S型控制就完美了。
回复

使用道具 举报

6#
ID:607899 发表于 2019-9-5 20:58 | 只看该作者
谢谢分享
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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