标题: 51单片机控制步进电机正反转的proteus仿真与源码 [打印本页]

作者: LYH123    时间: 2018-5-2 20:15
标题: 51单片机控制步进电机正反转的proteus仿真与源码
51单片机用C实现控制步进电机正反转
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1.   #include<reg52.h>
  2. #define uint  unsigned int
  3.         #define uchar unsigned char //------8拍-----  
  4.         uchar code zz[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};   //正转
  5.          uchar code fz[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};    //反转   
  6. void delay(uint ms)
  7. {  uint t;  
  8. while(ms--)   
  9. for(t=0;t<120;t++);
  10. }  
  11. void motor_zz(uint n)
  12. {  uint i,j;  
  13. for(i=0;i<5*n;i++)
  14. {   for(j=0;j<8;j++)  
  15. {    if(P3==0xfb)   
  16.   break;   
  17. P1=zz[j];   
  18. delay(20);   
  19. }   
  20. }
  21. }   
  22. void motor_fz(uint n)
  23. {  uint i,j;  
  24. for(i=0;i<5*n;i++)  
  25. {
  26. for(j=0;j<8;j++)
  27. {if(P3==0xfb)
  28. break;
  29. P1=fz[j];
  30. delay(20);

  31. }
  32. }
  33. }

  34. void main()
  35. {
  36. uint N=3;
  37. while(1)
  38. {
  39. P3=0xff;
  40. if(P3==0xfe)
  41. {while(P3==0xfe);
  42. P0=0xfe;
  43. motor_zz(N);
  44. if(P3==0xfb)

  45. break;
  46. }

  47. else if(P3==0xfd)
  48. {
  49. while(P3==0xfd);
  50. P0=0xfd;
  51. motor_fz(N);
  52. if(P3==0xfb)

  53. break;}
  54. else
  55. {


  56. P0=0xfb;
  57. P1=0x03;
  58. }
  59. }
  60. }
复制代码

所有资料51hei提供下载:
51控制步进电机正反转.rar (15.84 KB, 下载次数: 336)



作者: a1240197210    时间: 2018-12-5 22:05
ganxie
作者: chenfynh    时间: 2019-1-15 10:45
感谢分享,
作者: 哥的一把刀    时间: 2019-3-30 14:51
感谢分项哦,
作者: tyk2012    时间: 2019-4-3 15:42
感谢分享
作者: sjy123    时间: 2019-5-1 00:28
感谢分享
作者: 3九2七    时间: 2019-6-18 19:24
为啥我按开关电机不转

作者: 1036951883    时间: 2019-11-25 09:13
太感谢了
作者: 不羁大康哥    时间: 2019-12-4 14:36
正需要。谢谢
作者: 坏牧羊人    时间: 2020-5-9 09:43
for(i=0;i<5*n;i++)  请问为什么要加这句啊
作者: 末末末么    时间: 2020-6-15 16:14
为什么反转不动呢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1