找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3573|回復: 11
打印 上一主題 下一主題
收起左側

51單片機做的5線4項步進電機云臺,仿真可以運行,實物連接不轉

[復制鏈接]
跳轉到指定樓層
樓主
ID:841557 發(fā)表于 2020-11-10 15:33 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
5線4項步進電機做的云臺,仿真可以運行,實物連接不轉。求大神指點原因��!愁啊....
以下是 單片機代碼:

  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit P10=P1^0;
  5. sbit P11=P1^1;
  6. sbit P12=P1^2;
  7. sbit P13=P1^3;
  8. uchar i,a,flag,u;
  9. code tabup[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//豎直電機正轉 1~2 相勵磁
  10. code tabdown[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};//豎直電機反轉 1~2 相勵磁
  11. code tableft[]={0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90};//水平電機正轉 1~2 相勵磁
  12. code tabright[]={0x60,0x20,0x30,0x10,0x90,0x80,0xc0,0x40};//水平電機反轉 1~2 相勵磁
  13. void control(uchar);
  14. void moveauto();
  15. void moveup();
  16. void movedown();
  17. void moveleft();
  18. void moveright();
  19. void delay(uchar);
  20. void init()//初始化
  21. {
  22. TMOD=0x20;//設置定時器 1 為工作方式 2
  23. TH1=0xFA;
  24. TL1=0xFA;
  25. TR1=1;//開定時器
  26. PCON=0x80;
  27. SCON=0x50;//9600, n, 8,1
  28. EA=1;//開總中斷
  29. ES=1;//開串口中斷
  30. }
  31. void serial() interrupt 4//串口中斷
  32. {
  33. RI=0;
  34. a=SBUF;
  35. control(a);
  36. delay(1);
  37. }
  38. void control(uchar l)//中斷控制電機動作
  39. {
  40. switch(l)
  41. {
  42. case 'A':moveup();break;
  43. case 'B':movedown();break;
  44. case 'C':moveleft();break;
  45. case 'D':moveright();break;
  46. case 'Z':flag=1;break;
  47. default:break;
  48. }
  49. }
  50. void delay(uint z)//延時
  51. {
  52. uint x,y;
  53. for(x=z;x>0;x--)
  54. for(y=110;y>0;y--);
  55. }
  56. void moveup()//豎直方向向上
  57. {
  58. flag=0;
  59. if(P10!=1)
  60. {
  61. for(i=0;i<8;i++)
  62. {
  63. P2=tabup[i];
  64. delay(50);
  65. }
  66. }
  67. }
  68. void movedown()//豎直方向向下
  69. {
  70. flag=0;
  71. if(P11!=1)
  72. {
  73. for(i=0;i<8;i++)
  74. {
  75. P2=tabdown[i];
  76. delay(50);
  77. }
  78. }
  79. }
  80. void moveleft()//水平方向向左
  81. {
  82. flag=0;
  83. if(P12!=1)
  84. {
  85. for(i=0;i<8;i++)
  86. {
  87. P2=tableft[i];
  88. delay(50);
  89. }
  90. }
  91. }
  92. void moveright()//水平方向向右
  93. {
  94. flag=0;
  95. if(P13!=1)
  96. {
  97. for(i=0;i<8;i++)
  98. {
  99. P2=tabright[i];
  100. delay(50);
  101. }
  102. }
  103. }
  104. void moveauto()//自動運行
  105. {
  106. P1=0;
  107. while(!P10)
  108. {
  109. for(i=0;i<8;i++)
  110. {
  111. P2=tabup[i];
  112. delay(50);
  113. }
  114. }
  115. while(!P11)
  116. {
  117. for(i=0;i<8;i++)
  118. {
  119. P2=tableft[i];
  120. delay(50);
  121. }
  122. }
  123. while(!P12)
  124. {
  125. for(i=0;i<8;i++)
  126. {
  127. P2=tabdown[i];
  128. delay(50);
  129. }
  130. }
  131. while(!P13)
  132. {
  133. for(i=0;i<8;i++)
  134. {
  135. P2=tabright[i];
  136. delay(50);
  137. }
  138. }
  139. }
  140. void controlkey(uchar i)//按鍵控制電機動作
  141. {
  142. switch(i)
  143. {
  144. case 1:moveup();break;
  145. case 2:movedown();break;
  146. case 4:moveleft();break;
  147. case 8:moveright();break;
  148. case 16:flag=1;break;
  149. default:break;
  150. }
  151. }
  152. void main()
  153. {
  154. P1=0;
  155. flag=0;
  156. init();
  157. while(1)
  158. {
  159. if(flag==1)
  160. {
  161. moveauto();//自動運行
  162. }
  163. P0=0xff
  164. u=P0;
  165. controlkey(u);
  166. }
  167. }
復制代碼



實物連接是按照仿真連接的 ,并且單片機和2003驅動板都加電源的 ,而且實物連線都 檢查很多遍,確認實物連接沒問題
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:339654 發(fā)表于 2020-11-11 16:49 | 只看該作者
硬件電路檢查一下,看看是不是缺少什么,還有實際應用中不能讓電機轉太快,不然電機無響應
回復

使用道具 舉報

板凳
ID:423511 發(fā)表于 2020-11-11 16:51 | 只看該作者
仿真和實物不同,P0加上上拉電阻試試。
回復

使用道具 舉報

地板
ID:143767 發(fā)表于 2020-11-12 13:44 | 只看該作者
你的代碼編譯后出現(xiàn)如下提示:
YT.C(164): error C141: syntax error near 'u'
回復

使用道具 舉報

5#
ID:143767 發(fā)表于 2020-11-12 14:15 | 只看該作者
P0=0xff后面少了大寫分號
回復

使用道具 舉報

6#
ID:313791 發(fā)表于 2020-11-12 17:21 | 只看該作者
你可以適當降低一下頻率,還有就是不要將ABCD向接錯了�。�!
回復

使用道具 舉報

7#
ID:313791 發(fā)表于 2020-11-12 17:22 | 只看該作者
不行就先寫一個測試程序,讓它轉起來,然后慢慢調
回復

使用道具 舉報

8#
ID:841557 發(fā)表于 2020-11-15 13:14 | 只看該作者
dj3365191 發(fā)表于 2020-11-12 14:15
P0=0xff后面少了大寫分號

實際程序是 有的 ,可能是 復制這里沒復制上
回復

使用道具 舉報

9#
ID:841557 發(fā)表于 2020-11-15 13:16 | 只看該作者
weijoyer 發(fā)表于 2020-11-11 16:49
硬件電路檢查一下,看看是不是缺少什么,還有實際應用中不能讓電機轉太快,不然電機無響應

電源,晶振,2003驅動,按鍵,電機都檢查或 很多 次了,沒有問題
回復

使用道具 舉報

10#
ID:841557 發(fā)表于 2020-11-15 13:16 | 只看該作者
weiweimao1 發(fā)表于 2020-11-11 16:51
仿真和實物不同,P0加上上拉電阻試試。

還是不可以的,哎
回復

使用道具 舉報

11#
ID:841557 發(fā)表于 2020-11-15 13:18 | 只看該作者
dj3365191 發(fā)表于 2020-11-12 13:44
你的代碼編譯后出現(xiàn)如下提示:
YT.C(164): error C141: syntax error near 'u'

沒有提示錯誤��??
回復

使用道具 舉報

12#
ID:841557 發(fā)表于 2020-11-15 13:24 | 只看該作者
哪位大神能指導一下啊 ,感恩不盡!給他介紹對象襖
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表