找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我写的单片机程序循环让步进电机转一定角度,可它一直转求大神解答

[复制链接]
跳转到指定楼层
楼主
ID:302039 发表于 2018-4-4 15:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通电以后步进电机一直在转,我分析的应该转5个周期就停下了啊

单片机源程序如下:
  1. #include<reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char      
  4. #define GPIO_DJ P1
  5. unsigned char code eight_pos[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};//八拍驱动方式正转表 AD-D-DC-C-CB-B-BA-A
  6. unsigned char code eight_rev[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};//八拍驱动方式反转表 A-AB-B-BC-C-CD-D-DA
  7. unsigned char code eight_pos[8]={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};//八拍驱动方式正转表 AD-D-DC-C-CB-B-BA-A
  8. unsigned char code eight_rev[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};//八拍驱动方式反转表 A-AB-B-BC-C-CD-D-DA
  9. void Delay1ms(unsigned int c);//定义延时程序   
  10. unsigned   int a,b,i,j,k,z;          //采集的亮度值及当前的步进电机角度
  11. unsigned   char pp;                              //读取二十次ad值for循环
  12. unsigned   int  c=0,d=0;                  

  13. void Delay(unsigned int i)//延时
  14. {
  15. while(--i);
  16. }

  17. void delay1ms(z)
  18. {
  19. unsigned int x,y;
  20.         for(x=z;x>0;x--)
  21.                 for(y=110;y>0;y--);
  22. }
  23. void m_eight_pos()
  24. {

  25.                 j=0;
  26.                 for(i=0;i<8;i++)//在八拍工作方式下,一个脉冲转子转动角度为5.625度,八拍共45度
  27.                 {
  28.                         P1=eight_pos[j];
  29.                         delay1ms(2);
  30.                         j++;
  31.                 }
  32.       
  33. }
  34. /*******************八拍驱动反转(N*45/16)度***********************/
  35. void m_eight_rev()
  36. {
  37.                 j=0;
  38.                 for(i=0;i<8;i++)//在八拍工作方式下,一个脉冲转子转动角度为5.625度,八拍共45度
  39.                 {
  40.                         P1=eight_rev[j];
  41.                         delay1ms(2);
  42.                         j++;
  43.                 }
  44. }
  45. void main(void)
  46. {   
  47.    b=0;
  48.    while(1)
  49.    {

  50.      a=100;
  51.                 if(a>=b)
  52.             {  
  53.                   for(i=((a-b)/20);i>0;i--)
  54.                            {
  55.                              b+=20;
  56.                              m_eight_rev();
  57.                                 }
  58.              }
  59.                  else
  60.                  {
  61.                    for(i=((b-a)/20);i>0;i--)
  62.                        {
  63.                         b-=20;
  64.                                 m_eight_pos();
  65.                             }
  66.                  }
  67.   }
  68. }
复制代码

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

使用道具 举报

沙发
ID:393373 发表于 2018-9-15 08:30 | 只看该作者
想问下楼主解决了吗?我们也遇到了类似的问题....
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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