久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3143|回復: 2
打印 上一主題 下一主題
收起左側

三軸步進電機驅動程序(51單片機與STM32例程)供大家參考學習

[復制鏈接]
跳轉到指定樓層
樓主
ID:279752 發表于 2018-5-2 21:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
三個步進電機同步運行 直接可用

單片機源程序如下:
  1. #include <REGX51.H>


  2. #define motor1                         1
  3. #define motor2                         2
  4. #define motor3                         3

  5. #define motor1_up         0
  6. #define motor1_down 1
  7. #define motor2_up          0
  8. #define motor2_down        1
  9. #define motor3_up                0
  10. #define motor3_down        1

  11. #define sub                                 16

  12. sbit pwm1 = P0^0;
  13. sbit pwm2 = P0^1;
  14. sbit pwm3 = P0^2;
  15. sbit dir1 = P0^3;
  16. sbit dir2 = P0^4;
  17. sbit dir3 = P0^5;
  18. sbit exti1 = P1^0;
  19. sbit exti2 = P1^1;
  20. sbit exti3 = P1^2;

  21. int motor1_pulse = 0;
  22. int motor2_pulse = 0;
  23. int motor3_pulse = 0;

  24. char motor1_cons = 0;
  25. char motor2_cons = 0;
  26. char motor3_cons = 0;

  27. void delay_ms(int i)  
  28. {
  29.   unsigned char a,b;
  30.         for(;i>0;i--)
  31.     for(b=102;b>0;b--)
  32.         for(a=3;a>0;a--);
  33. }

  34. void InitTimer0(void)
  35. {
  36.     TMOD = 0x01;
  37.     TH0 = 0x0FF;
  38.     TL0 = 0x48;
  39.     EA = 1;
  40.     ET0 = 1;
  41.     TR0 = 1;
  42. }

  43. void motor_control(char motor,char dir,int pulse)
  44. {
  45.         if(motor == motor1)
  46.         {
  47.                 if(dir == motor1_up)
  48.                 {
  49.                         dir1 = motor1_up;
  50.                 }
  51.                 else
  52.                 {
  53.                         dir1 = motor1_down;
  54.                 }
  55.                 motor1_cons = 0;
  56.                 motor1_pulse += (pulse * sub *2);
  57.         }
  58.         if(motor ==motor2)
  59.         {
  60.                 if(dir == motor2_up)
  61.                 {
  62.                         dir2 = motor2_up;
  63.                 }
  64.                 else
  65.                 {
  66.                         dir2 = motor2_down;
  67.                 }
  68.                 motor2_cons = 0;
  69.                 motor2_pulse += (pulse * sub * 2);       
  70.         }
  71.         if(motor ==motor3)
  72.         {
  73.                 if(dir == motor3_up)
  74.                 {
  75.                         dir3 = motor3_up;
  76.                 }
  77.                 else
  78.                 {
  79.                         dir3 = motor3_down;
  80.                 }
  81.                 motor3_cons = 0;
  82.                 motor3_pulse += (pulse * sub *2);       
  83.         }
  84. }

  85. void motor_init(void)
  86. {
  87.         while((!exti1) | (!exti2)| (!exti3))
  88.         {
  89.                 if(!exti1)
  90.                 {
  91.                         motor_control(motor1,motor1_down,5);
  92.                 }
  93.                 if(!exti2)
  94.                 {
  95.                         motor_control(motor2,motor2_down,5);
  96.                 }
  97.                 if(!exti3)
  98.                 {
  99.                         motor_control(motor3,motor3_down,5);
  100.                 }
  101.                 while((!motor1_cons) | (!motor2_cons)| (!motor3_cons));
  102.         }
  103. }
  104. void main(void)
  105. {
  106.         InitTimer0();
  107.         motor_init();
  108.        
  109.         motor_control(motor1,motor1_up,200);
  110.         motor_control(motor2,motor2_up,200);
  111.         motor_control(motor3,motor3_up,200);
  112.        
  113.         while((!motor1_cons) | (!motor2_cons)| (!motor3_cons));
  114.         delay_ms(1000);
  115.        
  116.         while(1);
  117. }
  118. void Timer1_isr(void) interrupt 1 using 1
  119. {
  120.         if(motor1_pulse > 0)
  121.         {
  122.                 motor1_pulse--;
  123.                 pwm1 = !pwm1;
  124.         }
  125.         else
  126.         {
  127.                 motor1_cons = 1;
  128.         }
  129.         if(motor2_pulse > 0)
  130.         {
  131. ……………………

  132. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
程序.rar (5.33 MB, 下載次數: 76)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:304456 發表于 2018-5-4 09:29 | 只看該作者
能告訴一下STM32例程的電機接線嗎?
回復

使用道具 舉報

板凳
ID:53978 發表于 2020-4-16 21:22 | 只看該作者
萬分感謝!一直在找這種資料學習
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品毛片一区二区在线看 | 欧美精品一区二区免费 | 狠狠婷婷综合久久久久久妖精 | 国产美女在线观看 | 欧美一区二区三区四区在线 | 欧美日韩一区二区三区视频 | 免费在线观看一级毛片 | 日韩在线欧美 | 综合二区 | 中文字幕日本一区二区 | 国产一区久久久 | 欧美日韩精品一区二区 | 九一在线观看 | 一区二区精品 | 午夜在线小视频 | 日韩福利在线观看 | 日韩av电影院 | 国产美女一区二区三区 | 国产精品乱码一二三区的特点 | 国产一区二区三区久久久久久久久 | aa级毛片毛片免费观看久 | 国产一级片在线观看视频 | 日韩中文字幕一区二区 | 欧美日韩一 | 日韩av中文 | 国产精品中文字幕在线 | 精品av| 久久久蜜臀国产一区二区 | 亚洲精品一区二区在线观看 | 精品国产一区二区三区av片 | 毛片网站在线观看 | 91精品91久久久 | 亚洲一区二区三区免费观看 | 日韩欧美专区 | 日本三级在线视频 | 久久久久久国产精品 | 亚洲综合无码一区二区 | 久草影视在线 | 永久免费在线观看 | 蜜月aⅴ国产精品 | www免费视频 |