找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机控制步进电机调速程序+原理图+实物照片

  [复制链接]
跳转到指定楼层
楼主
步进电机调速实验过程的实物照片:


电路原理图如下:


51单片机源程序如下:
  1. /*完整的C语言程序:*/
  2. #include <reg52.h>  //可用非常成功。
  3. #define uchar unsigned char  
  4. #define uint unsigned int

  5. unsigned char code table1[]={0x03,0x06,0x0c,0x09,0x09,0x0c,0x06,0x03};
  6. //unsigned char code table2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};  //共阴数码管 0~9
  7. unsigned char code table2[17] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  8. //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码
  9. uchar table_begin;  
  10. uint  maichong;             //脉冲
  11. uchar  zhuansu;             //转速
  12. uchar     flag;                 //方向
  13. sbit key_fuwei=P3^0;   //复位键
  14. sbit key_z=P3^1;            //正转键
  15. sbit key_f=P3^2;            //反转键
  16. sbit key_jia=P3^3;            //加速键
  17. sbit key_jian=P3^6;    //减速键

  18. sbit A1=P2^0;
  19. sbit A2=P2^1;
  20. sbit A3=P2^2;
  21. sbit A4=P2^3;
  22. void display();
  23. void delayms(xms);

  24. void delay(uchar x)  
  25. {
  26. uchar i,j;                            //延时
  27. for(i=0;i<x;i++)   
  28. for(j=100;j>0;j--);
  29. }
  30. void  fuwei(void)  //复位
  31. {
  32. flag=2;   
  33. zhuansu=0;
  34. }
  35. /*void Display(void)        //显示
  36. {
  37.         unsigned char b1, b2;
  38.         b1=zhuansu/10;               
  39.         b2=zhuansu%10;
  40.         if(flag == 0)      //0
  41.                 P0=0x71;//显示F
  42.     else
  43.                 P0=0x79;
  44.         A1=0;                                                         
  45.         delayms(3);
  46.         A1=1;

  47.         P0=0x40;
  48.         A2=0;         //显示--
  49.         delayms(3);
  50.         A2=1;

  51.         P0=table2[b1];
  52.         A3=0;         //显示十位
  53.         delayms(3);
  54.         A3=1;

  55.         P0=table2[b2];
  56.         A4=0;
  57.         delayms(3);   //显示个位
  58.         A4=1;
  59. } */



  60. void display()   
  61. {  
  62. uchar b1,b2,b3,b4;     
  63. if(flag==0)  
  64.     P0=0x71;//显示F
  65.     else
  66.     P0=0x79;
  67. if(flag==1)
  68.     P0=0x7c;//显示b
  69.     else
  70.     P0=0x71;
  71. b1=10;   
  72. b2=0x3f;     
  73. b3=zhuansu/10;   
  74. b4=zhuansu%10;  
  75. //P0=table2;  
  76. A1=0;  //P2.0
  77. delay(1);  
  78. A1=1;  
  79. P0=b2;      
  80. A2=0;   //P2.1   
  81. delay(1);  
  82. A2=1;   
  83. P0=table2[b3];  
  84. A3=0;          //P2.3
  85. delay(1);  
  86. A3=1;   
  87. P0=table2[b4];
  88. A4=0;   //P2.4  
  89. delay(1);  
  90. A4=1;
  91. }
  92.   
  93. void key()                         //按键扫描
  94. {  
  95. if(key_fuwei==0)   
  96. {  
  97. delay(5);     
  98. if(key_fuwei==0)     
  99. fuwei();
  100. }  
  101. if(key_z==0)   
  102. {
  103. delay(5);     
  104. if(key_z==0)   
  105. {
  106. flag=0;      
  107. zhuansu=10;      
  108. while(key_z==0);
  109. }
  110. }  
  111. if(key_f==0)   
  112. {  

  113. delay(5);     
  114. if(key_f==0)   
  115. {  
  116. flag=1;      
  117. zhuansu=10;      
  118. while(key_f==0);
  119. }
  120. }   
  121. if(key_jia==0)   
  122. {   
  123. delay(5);     
  124. if(key_jia==0)   
  125. {   
  126. zhuansu++;      
  127. if(zhuansu==21)     
  128. zhuansu=20;      
  129. while(key_jia==0);
  130. }
  131. }  
  132. if(key_jian==0)   
  133. {   
  134. delay(5);     
  135. if(key_jian==0)   
  136. {  
  137. zhuansu--;      
  138. if(zhuansu<=0)     
  139. zhuansu=0;      
  140. while(key_jian==0);
  141. }
  142. }
  143. }
  144. void dispose()  //脉冲函数
  145. {
  146. switch(zhuansu)  
  147. {

  148. case 0:     flag=2;          break;   
  149. case 1:     maichong=300;    break;   
  150. case 2:     maichong=295;    break;   
  151. case 3:     maichong=290;    break;   
  152. case 4:     maichong=280;    break;   
  153. case 5:     maichong=260;    break;   
  154. case 6:     maichong=240;    break;   
  155. case 7:     maichong=200;    break;   
  156. case 8:     maichong=180;    break;   
  157. case 9:     maichong=160;    break;   
  158. case 10:    maichong=120;    break;   
  159. case 11:    maichong=80;    break;   
  160. case 12:    maichong=70;    break;   
  161. case 13:    maichong=60;    break;   
  162. case 14:    maichong=40;    break;   
  163. case 15:    maichong=35;    break;   
  164. case 16:    maichong=30;    break;   
  165. case 17:    maichong=25;     break;   
  166. case 18:    maichong=20;     break;   
  167. case 19:    maichong=15;     break;   
  168. case 20:    maichong=10;     break;

  169. }  
  170. if(flag==0)   
  171. table_begin=0;  
  172. else   
  173. if(flag==1)     
  174. table_begin=4;
  175. }
  176. void zhuandong(void)
  177. {
  178. uint i,j;   
  179. if(zhuansu>0&&zhuansu<=20)   
  180. {
  181. for(j=0+table_begin;j<4+table_begin;j++)   
  182. {
  183. P1=table1[j];     
  184. for(i=0;i<maichong;i++)     
  185. display();
  186. }
  187. }
  188. }  
  189. ……………………

  190. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
程序包,供需要者下载参考
所有资料51hei提供下载:
步进电机调速 数码.rar (164.47 KB, 下载次数: 700)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:269490 发表于 2017-12-31 15:35 | 只看该作者
那个数码管显示的是转速嘛?
回复

使用道具 举报

板凳
ID:263915 发表于 2018-1-3 16:49 | 只看该作者
学习一下,谢谢分享
回复

使用道具 举报

地板
ID:220927 发表于 2018-1-3 17:38 | 只看该作者
这转速好
回复

使用道具 举报

5#
ID:319537 发表于 2018-5-2 15:56 | 只看该作者
我的怎么不转
回复

使用道具 举报

6#
ID:320879 发表于 2018-5-3 10:06 | 只看该作者
那个数码管显示的是转速嘛
回复

使用道具 举报

7#
ID:325140 发表于 2018-5-8 16:30 | 只看该作者

学习一下,谢谢分享
回复

使用道具 举报

8#
ID:334737 发表于 2018-5-22 18:27 | 只看该作者
能变速,学习下
回复

使用道具 举报

9#
ID:354129 发表于 2018-6-19 15:45 | 只看该作者
大佬可以发下后面的程序吗
回复

使用道具 举报

10#
ID:354129 发表于 2018-6-21 12:04 | 只看该作者
问一下为什么会出现步进电机只振动,不转动的情况
回复

使用道具 举报

11#
ID:342294 发表于 2018-8-17 11:53 | 只看该作者
你这个电机的驱动引脚怎么找不到  而且没有对应的电机驱动函数  在一定范围内转  
回复

使用道具 举报

12#
ID:385142 发表于 2018-8-19 17:37 | 只看该作者
而且没有对应的电机驱动函数  在一定范围内转  
回复

使用道具 举报

13#
ID:342294 发表于 2018-8-23 09:08 | 只看该作者
你这个是不是有点问题   我为什么看不到你的电机转动函数   你的那个转动函数你没有认真看吗  电机怎么可能会转  
回复

使用道具 举报

14#
ID:389243 发表于 2018-8-23 13:41 | 只看该作者
请问,42步进电机的线该怎么连接呢
回复

使用道具 举报

15#
ID:258125 发表于 2018-8-27 12:10 | 只看该作者
楼主,我也想学弹片控制步进电机,学习借鉴你的程序。谢谢啦
回复

使用道具 举报

16#
ID:171940 发表于 2018-9-28 08:54 | 只看该作者
谢谢分享
回复

使用道具 举报

17#
ID:429133 发表于 2018-11-20 07:49 来自手机 | 只看该作者
棒。厉害
回复

使用道具 举报

18#
ID:429657 发表于 2018-11-20 08:55 | 只看该作者

谢谢分享
回复

使用道具 举报

19#
ID:424598 发表于 2018-11-20 10:23 来自手机 | 只看该作者
wy1996 发表于 2018-6-21 12:04
问一下为什么会出现步进电机只振动,不转动的情况

代码无误的情况下,你看看是不是供电不足的原因。电机最好单独供电。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

20#
ID:429657 发表于 2018-11-21 08:00 | 只看该作者
很好的代码
回复

使用道具 举报

21#
ID:430478 发表于 2018-11-21 17:55 | 只看该作者
这个需要自己画原理图吗?
回复

使用道具 举报

22#
ID:430942 发表于 2018-11-22 07:52 来自手机 | 只看该作者
可以分享下做好的仿真程序吗?
回复

使用道具 举报

23#
ID:429657 发表于 2018-11-22 11:52 | 只看该作者
刚来~学习下
回复

使用道具 举报

24#
ID:429657 发表于 2018-12-11 13:51 | 只看该作者

可以分享下做好的仿真程序吗?
回复

使用道具 举报

25#
ID:259913 发表于 2018-12-24 15:52 | 只看该作者


可以分享下做好的仿真程序吗?
回复

使用道具 举报

26#
ID:474912 发表于 2019-2-3 23:57 | 只看该作者
谢谢楼主
回复

使用道具 举报

27#
ID:478898 发表于 2019-2-22 10:56 | 只看该作者
so good
回复

使用道具 举报

28#
ID:490694 发表于 2019-3-14 14:18 | 只看该作者
学习一下,谢谢分享
回复

使用道具 举报

29#
ID:482603 发表于 2019-3-14 22:29 | 只看该作者
很有用
回复

使用道具 举报

30#
ID:444215 发表于 2019-3-27 09:23 | 只看该作者
你这个电机的驱动引脚没有定义
回复

使用道具 举报

31#
ID:465213 发表于 2019-4-3 18:54 | 只看该作者
249449417@qq.co 发表于 2019-3-27 09:23
你这个电机的驱动引脚没有定义

他这个是proteus的么?我打不开啊
回复

使用道具 举报

32#
ID:400876 发表于 2019-4-20 11:38 | 只看该作者
看起来有点像郭天祥那个例程,改了一些
回复

使用道具 举报

33#
ID:521117 发表于 2019-5-3 09:22 | 只看该作者
学习一下,谢谢分享
回复

使用道具 举报

34#
ID:526631 发表于 2019-5-3 20:20 | 只看该作者
非常感谢楼主大大的经验分享
回复

使用道具 举报

35#
ID:548242 发表于 2019-5-27 11:28 | 只看该作者
感谢分享
回复

使用道具 举报

36#
ID:548283 发表于 2019-5-27 12:31 | 只看该作者
赞一个,学习下
回复

使用道具 举报

37#
ID:548312 发表于 2019-5-27 13:17 | 只看该作者
很好,实用
回复

使用道具 举报

38#
ID:584873 发表于 2019-7-19 16:53 | 只看该作者
楼主为什么程序下载到我的单片机里,电机不转,没反应,而且电机会发热
回复

使用道具 举报

39#
ID:653751 发表于 2019-12-13 15:04 | 只看该作者
qibulin 发表于 2018-12-11 13:51
可以分享下做好的仿真程序吗?

我也需要这个,你有吗
回复

使用道具 举报

40#
ID:653751 发表于 2019-12-13 15:04 | 只看该作者
需要源代码和hex 文件,谢谢楼主了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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