找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机驱动光驱步进电机只响不动 附代码

[复制链接]
跳转到指定楼层
楼主
麻烦各位大虾帮我看看光驱步进电机为什么只响不动,下面是完整的程序。

单片机源程序如下:
  1. #include<reg52.h>
  2. #define GPIO_MOTOR P1
  3. sbit K1=P3^2;
  4. sbit K2=P3^3;
  5. sbit K3=P3^4;
  6. sbit K4=P3^5;

  7. sbit a0=P1^0;                          
  8. sbit a1=P1^1;            
  9. sbit b0=P1^3;
  10. sbit b1=P1^4;

  11. void right(unsigned int y);
  12. void left(unsigned int x);
  13. void Delay(unsigned int t);
  14. unsigned char Direction,Speed;
  15. void motor();
  16. void main(void)
  17. {
  18.         unsigned char i;        
  19.    Speed=5;

  20.   while(1)
  21.         {
  22.                         
  23.           if(K1==0)               
  24.                 {
  25.                         Delay(50);        
  26.                         if(K1==0)
  27.                         {
  28.                                 Direction=1;
  29.                         }
  30.                         while((i<200)&&(K1==0))         
  31.                         {
  32.                                 Delay(10);
  33.                                 i++;
  34.                         }
  35.                         i=0;
  36.                 }
  37.                 if(K2==0)               
  38.                 {
  39.                         Delay(50);        
  40.                         if(K2==0)
  41.                         {
  42.                                 Direction=2;
  43.                         }
  44.                         while((i<200)&&(K2==0))         
  45.                         {
  46.                                 Delay(10);
  47.                                 i++;
  48.                         }
  49.                         i=0;
  50.                 }        
  51.                  if(K3==0)               
  52.                 {
  53.                         Delay(100);        
  54.                         if(K3==0)
  55.                         {
  56.                                 Speed--;
  57.                                 if(Speed<=3)
  58.                                 Speed=4;
  59.                         }
  60.                         while((i<200)&&(K2==0))         
  61.                         {
  62.                                 Delay(10);
  63.                                 i++;
  64.                         }
  65.                         i=0;
  66.                 }
  67.          
  68.                 if(K4==0)               
  69.                 {
  70.                         Delay(100);        
  71.                         if(K4==0)
  72.                         {
  73.                                 Speed++;
  74.                         }
  75.                         while((i<200)&&(K4==0))         
  76.                         {
  77.                                 Delay(10);
  78.                                 i++;
  79.                         }
  80.                         i=0;
  81.                 }        

  82.           motor();
  83.         }
  84. }
  85. void motor()
  86. {

  87. if(Direction==1)
  88.         {
  89.         a0=0;
  90.         a1=1;
  91.         b0=1;
  92.         b1=1;
  93.         Delay(Speed);
  94.         a0=1;
  95.         a1=0;
  96.         b0=1;
  97.         b1=1;
  98.         Delay(Speed);
  99.         a0=1;
  100.         a1=1;
  101.         b0=0;
  102.         b1=1;
  103.         Delay(Speed);
  104.         a0=1;
  105.         a1=1;
  106.         b0=1;
  107.         b1=0;
  108.         Delay(Speed);
  109.         }
  110. if(Direction==2)                  
  111.         {
  112.         a0=1;
  113.         a1=1;
  114.         b0=1;
  115.         b1=0;
  116.         Delay(Speed);
  117.         a0=1;
  118.         a1=1;
  119.         b0=0;
  120.         b1=1;
  121.         Delay(Speed);
  122.         a0=1;
  123.         a1=0;
  124.         b0=1;
  125.         b1=1;
  126.         Delay(Speed);
  127.         a0=0;
  128.         a1=1;
  129.         b0=1;
  130.         b1=1;
  131.         Delay(Speed);
  132.         }
  133. }                                                                                                                                                                           
  134. void Delay(unsigned int t)
  135. {                           
  136.         unsigned int k;
  137.         while(t--)
  138.         {
  139.                 for(k=0; k<70; k++)
  140.                 { }
  141.         }
  142. }
复制代码




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

使用道具 举报

沙发
ID:146204 发表于 2019-4-27 08:47 | 只看该作者
你在 a0=1;
        a1=1;
        b0=1;
        b1=0;。。。。各行加入延时。
回复

使用道具 举报

板凳
ID:403369 发表于 2019-4-27 11:04 | 只看该作者
1.可能电流不足
2.电机接错相
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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