AT89C52单片机控制28BYJ-48 步进电机正反装,(求仿真)

2019-07-18 15:52发布

  1. #include <reg52.h>      
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. uchar code table1[]={0x03,0x06,0x0c,0x09};  //逆时针
  6. uchar code table2[]={0x03,0x09,0x0c,0x06};  //顺时针
  7. uchar code table3[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};        //逆时针
  8. uchar code table4[]={0x01,0x02,0x04,0x08};  //顺时针
  9. #define motor P1


  10. void delay(uchar ms) //延时
  11. {
  12.     uchar j;
  13.     while(ms--){                                 
  14.         for(j=0;j<250;j++)
  15.             {;}
  16.         }   
  17. }  
  18. void main()
  19. {
  20.   uint i,j=0;
  21.   while(1)
  22.   {
  23.     //逆时针共2048个脉冲 每次走360度
  24.     /*for(i=0;i<2048;i++)
  25.         {   
  26.       motor = 0x00;
  27.       motor = table1[j];
  28.       j++;
  29.       if(j>=4)
  30.                   j=0;
  31.       delay(2);
  32.     }
  33.     delay(200);*/   
  34.     //顺时针共256个脉冲 每次走45度
  35.    /* for(i=0;i<256;i++){
  36.       motor = 0x00;
  37.       motor = table2[j];
  38.       j++;
  39.       if(j>=4)
  40.                   j=0;
  41.       delay(2);
  42.       }
  43.       delay(200);  
  44.           //顺时针共4096个脉冲 每次走360度 因为每次半个角度
  45.     for(i=0;i<4096;i++){
  46.       motor = 0x00;
  47.       motor = table3[j];
  48.       j++;
  49.       if(j>=8)
  50.                   j=0;
  51.       delay(2);
  52.       }
  53.       delay(200); */  
  54.         for(i=0;i<2048;i++)
  55.         {   
  56.       motor = 0x00;
  57.       motor = table4[j];
  58.       j++;
  59.       if(j>=4)
  60.                   j=0;
  61.       delay(3);
  62.     }
  63.     delay(200);   
  64.     }  
  65. }               
复制代码

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。