找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1709|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

求大佬教教步進(jìn)電機(jī)的控制 仿真的時(shí)候沒(méi)反應(yīng)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
通過(guò)按鍵控制電機(jī)的運(yùn)行狀態(tài),并在led數(shù)碼管顯示狀態(tài)與實(shí)時(shí)速度,電路圖如下,但我仿真的時(shí)候就是沒(méi)反應(yīng),幫忙看看哪里出問(wèn)題了

QQ圖片20180423124052.png (235.08 KB, 下載次數(shù): 41)

QQ圖片20180423124052.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:303383 發(fā)表于 2018-4-23 14:04 | 只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
回復(fù)

使用道具 舉報(bào)

板凳
ID:314014 發(fā)表于 2018-4-23 15:12 | 只看該作者
小貓貓愛(ài)吃魚(yú) 發(fā)表于 2018-4-23 14:04
你好!只要仿真,沒(méi)有程序,怎么檢查

不好意思,忘了
  1. #include<red52.h>
  2. sbit ZZ=P3^0;  //正轉(zhuǎn)
  3. sbit FZ=P3^1;        //反轉(zhuǎn)
  4. sbit TZ=P3^4;        //停止
  5. sbit K1=P3^5;        //加速
  6. sbit K2=P3^6;        //減速
  7. sbit shiwei=P2^2//速度的十位
  8. sbit gewei=P2^3//速度的個(gè)位
  9. sbit shuru=P2^1//輸入正反停這三狀態(tài)
  10. sbit shuru1=P2^0//輸入加減速狀態(tài)
  11. sbit L1=P2^4;
  12. sbit L2=P2^5;
  13. sbit L3=P2^6;//38譯碼器的3線輸入端
  14. #define uchar unsigned char
  15. #define uchar unsigned int
  16. uchar code zz[4]={0x05,0x06,0x10,0x09};
  17. uchar code fz[4]={0x09,0x10,0x06,0x05};
  18. uchar code xianshi[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x5e,0x71,0x31,0x3e};//顯示數(shù)組值為0~9,D(減速)F(反轉(zhuǎn))U(加速)T(停止)Z(正轉(zhuǎn))        
  19. uint time,count,speedlevel//speedlevel為步進(jìn)電機(jī)轉(zhuǎn)速參數(shù),其值越大電機(jī)的速度越小,值越小電機(jī)轉(zhuǎn)速越大;其范圍為1~100;
  20. uint speedcount;//步進(jìn)電機(jī)轉(zhuǎn)速參數(shù)計(jì)數(shù)
  21. uint step=10000;//步數(shù),在本次實(shí)驗(yàn)中,設(shè)定電機(jī)步數(shù)為0時(shí)到達(dá)目的地
  22. uint stepcount;//步數(shù)計(jì)數(shù)
  23. unsigned char keycan=0;                //鍵值
  24. unsigned char s,i,j,k,z;
  25. /**********************************/
  26. /**P1.0=A ;P1.1=A- ;P1.2=B ; P1.3=B-**/
  27. /**延時(shí)t,由于選用的晶振為11.0592MHz,即一個(gè)機(jī)器周期為1微秒**/
  28. void delay(i)//延時(shí)函數(shù)
  29.   {
  30.       for(j=0;j<i;j++)
  31.       for(k=0;k<250;k++);
  32.   }
  33. /***正反轉(zhuǎn)程序部分**/
  34. void motor_zhengzhuan()
  35. {
  36.   for(i=0;i<4;i++)
  37.   {P1=zz[i];
  38.   delay(speedlevel);
  39.   }
  40.   }
  41. void motor_fanzhuan()
  42. {
  43.   for(j=0;j<4;j++)
  44.   for(i=0;i<4;i++)
  45.   {P1=fz[i];
  46.   delay(speedlevel);
  47.   }
  48.   }
  49. /**位置控制**/
  50. /**由于步距角為1.8°,故電機(jī)轉(zhuǎn)動(dòng)一圈為200步即200脈沖,并規(guī)定正轉(zhuǎn)步數(shù)減1,反轉(zhuǎn)加1**/
  51. void weizhi()
  52. {         if(ZZ==0)
  53. { stepcount++;
  54.   step=step-stepcount;
  55.   if(step==0)
  56.   { TZ=0;
  57.   }
  58. }
  59. if(FZ==0)
  60. {stepcount++;
  61. step=step+stepcount;
  62. }
  63. }
  64. /**LED數(shù)碼管顯示部分**/
  65. /**本次實(shí)驗(yàn)采用7SEG-MPX4-CC共陰極數(shù)碼管顯示,規(guī)定左邊2個(gè)數(shù)碼代表狀態(tài),右邊2個(gè)數(shù)碼管代表speedlevel即步進(jìn)電機(jī)轉(zhuǎn)速參數(shù)**/
  66. void xianshi()
  67. {  uint i,j,m,n;
  68. i=speedlevel%10;
  69.   j=speedlevel/10;
  70.   gewei=0;        //開(kāi)個(gè)位數(shù)碼管
  71.   P0=xianshi[i];
  72.   delay(1);
  73.   geiwei=1;
  74.   shiwei=0;         //開(kāi)十位數(shù)碼管
  75.   P0=xianshi[j];
  76.   delay(1);        
  77.   shiwei=1;
  78.   shuru=0;
  79.   if(ZZ==0)
  80. {          P0=xianshi[2];
  81. else if(FZ==0)
  82. {  P0=xianshi[12];
  83. }
  84. else if(TZ==0)
  85. {  P0=xianshi[14];
  86. }
  87. }
  88.   delay(10);
  89.   shuru=1;
  90.   shuru1=0;
  91. if(K1==0)
  92. { P0=xianshi[13];
  93. else if(K2==0)
  94. { P0=xianshi[11];
  95. }
  96. }
  97. delay(10);
  98. shuru1=1;
  99. }
  100. /**主程序部分**/
  101. main()
  102. { //EA=1;          //中斷允許
  103.   //IT0=0;//電平觸發(fā)
  104.   //EX0=1;//外部中斷0允許
  105.   //EX1=0; //外部中斷1允許
  106.   //TMOD=1; //方式1
  107. // ET0=1;  //定時(shí)器0中斷允許
  108.   //TH0=0xfe;
  109.   //TL0=0x0c;        //設(shè)定0.5ms中斷1次
  110.   //TR0=1;        //計(jì)數(shù)開(kāi)始
  111.   speedlevel=50;//設(shè)定初始步進(jìn)電機(jī)轉(zhuǎn)速等階為5
  112. while(1)
  113.     {  gewei=1;
  114.        shiwei=1;
  115.        shuru=1;
  116.        shuru1=1;         //關(guān)閉LED數(shù)碼管顯示
  117.        if(ZZ==0) //如果電機(jī)正轉(zhuǎn)按鍵按下
  118.       {         delay(2);        //去抖動(dòng)
  119.             if(ZZ==0)
  120.          {   L1=0;
  121.          L2=0 ;
  122.          L3=0;                 //控制正轉(zhuǎn)LED燈亮
  123.         keycan=1;         //鍵值等于1
  124.       }
  125.           }
  126.          if(FZ==0) //如果電機(jī)反轉(zhuǎn)按鍵按下
  127.       {         delay(2);        //去抖動(dòng)
  128.             if(FZ==0)
  129.           {   L1=0;
  130.          L2=0;
  131.          L3=1;                 //控制反轉(zhuǎn)LED燈亮
  132.         keycan=2;         //鍵值等于2
  133.        }
  134.            }
  135.            if(TZ==0)
  136.            { delay(2);        //去抖動(dòng)
  137.            {  L1=0;
  138.          L2=1;
  139.          L3=0;                 //控制停止LED燈亮
  140.                  keycan=3;
  141.            }
  142.            }
  143.        switch (keycan)
  144.    {
  145.        case 1: motor_zhengzhuan();  //鍵值等于1 正轉(zhuǎn)
  146.           break;
  147.       case 2: motor_fanzhuan();  //鍵值等于2 反轉(zhuǎn)
  148.           break;

  149.     }

  150.              if(K1==0)  //  電機(jī)加速
  151.       {          delay(2);        //去抖動(dòng)
  152.              if(K1==0)
  153.        {  L1=0;
  154.          L2=1;
  155.          L3=1;                 //控制加速LED燈亮
  156.         speedlevel-=5;
  157.                 if(speedlevel<=0)
  158.                 { speedlevel=1;//表示當(dāng)參數(shù)降到0時(shí),電機(jī)以speedlevel=1作為最大速度工作
  159.       }
  160.           }
  161.           }
  162.          if(K2==0)           // 電機(jī)減速                          
  163.    {    delay(2);        //去抖動(dòng)
  164.    if(K2==0)
  165.     {    L1=1;
  166.         L2=0;
  167.         L3=0;                 //控制減速LED燈亮
  168.         speedlevel+=5;
  169.         if(speedlevel>=100)
  170.                 { speedlevel=99;//表示當(dāng)參數(shù)降到0時(shí),電機(jī)以speedlevel=99作為最小速度工作
  171.                 }
  172.                 }
  173.    }
  174.    xianshi(); //調(diào)用顯示程序
  175. }        
  176. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表