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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1699|回復: 2
收起左側

求大佬教教步進電機的控制 仿真的時候沒反應

[復制鏈接]
ID:314014 發表于 2018-4-23 12:43 | 顯示全部樓層 |閱讀模式
通過按鍵控制電機的運行狀態,并在led數碼管顯示狀態與實時速度,電路圖如下,但我仿真的時候就是沒反應,幫忙看看哪里出問題了
QQ圖片20180423124052.png
回復

使用道具 舉報

ID:303383 發表于 2018-4-23 14:04 | 顯示全部樓層
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

ID:314014 發表于 2018-4-23 15:12 | 顯示全部樓層
小貓貓愛吃魚 發表于 2018-4-23 14:04
你好!只要仿真,沒有程序,怎么檢查

不好意思,忘了
  1. #include<red52.h>
  2. sbit ZZ=P3^0;  //正轉
  3. sbit FZ=P3^1;        //反轉
  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//速度的個位
  9. sbit shuru=P2^1//輸入正反停這三狀態
  10. sbit shuru1=P2^0//輸入加減速狀態
  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};//顯示數組值為0~9,D(減速)F(反轉)U(加速)T(停止)Z(正轉)        
  19. uint time,count,speedlevel//speedlevel為步進電機轉速參數,其值越大電機的速度越小,值越小電機轉速越大;其范圍為1~100;
  20. uint speedcount;//步進電機轉速參數計數
  21. uint step=10000;//步數,在本次實驗中,設定電機步數為0時到達目的地
  22. uint stepcount;//步數計數
  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. /**延時t,由于選用的晶振為11.0592MHz,即一個機器周期為1微秒**/
  28. void delay(i)//延時函數
  29.   {
  30.       for(j=0;j<i;j++)
  31.       for(k=0;k<250;k++);
  32.   }
  33. /***正反轉程序部分**/
  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°,故電機轉動一圈為200步即200脈沖,并規定正轉步數減1,反轉加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數碼管顯示部分**/
  65. /**本次實驗采用7SEG-MPX4-CC共陰極數碼管顯示,規定左邊2個數碼代表狀態,右邊2個數碼管代表speedlevel即步進電機轉速參數**/
  66. void xianshi()
  67. {  uint i,j,m,n;
  68. i=speedlevel%10;
  69.   j=speedlevel/10;
  70.   gewei=0;        //開個位數碼管
  71.   P0=xianshi[i];
  72.   delay(1);
  73.   geiwei=1;
  74.   shiwei=0;         //開十位數碼管
  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;//電平觸發
  104.   //EX0=1;//外部中斷0允許
  105.   //EX1=0; //外部中斷1允許
  106.   //TMOD=1; //方式1
  107. // ET0=1;  //定時器0中斷允許
  108.   //TH0=0xfe;
  109.   //TL0=0x0c;        //設定0.5ms中斷1次
  110.   //TR0=1;        //計數開始
  111.   speedlevel=50;//設定初始步進電機轉速等階為5
  112. while(1)
  113.     {  gewei=1;
  114.        shiwei=1;
  115.        shuru=1;
  116.        shuru1=1;         //關閉LED數碼管顯示
  117.        if(ZZ==0) //如果電機正轉按鍵按下
  118.       {         delay(2);        //去抖動
  119.             if(ZZ==0)
  120.          {   L1=0;
  121.          L2=0 ;
  122.          L3=0;                 //控制正轉LED燈亮
  123.         keycan=1;         //鍵值等于1
  124.       }
  125.           }
  126.          if(FZ==0) //如果電機反轉按鍵按下
  127.       {         delay(2);        //去抖動
  128.             if(FZ==0)
  129.           {   L1=0;
  130.          L2=0;
  131.          L3=1;                 //控制反轉LED燈亮
  132.         keycan=2;         //鍵值等于2
  133.        }
  134.            }
  135.            if(TZ==0)
  136.            { delay(2);        //去抖動
  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 正轉
  146.           break;
  147.       case 2: motor_fanzhuan();  //鍵值等于2 反轉
  148.           break;

  149.     }

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


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天躁日日躁狠狠很躁 | 国产色网站 | 国产精品1区2区 | 欧美中文字幕一区 | 一区二区三区成人 | 久久一区二区三区四区 | 亚洲电影一区二区三区 | 中文字幕高清免费日韩视频在线 | 国产乱码精品一区二区三区av | 精品一区二区电影 | 国产亚洲一区在线 | 国产精品免费大片 | 亚洲自拍一区在线观看 | 在线免费观看亚洲 | 日韩欧美不卡 | 日韩影音 | 91精品国产乱码久久蜜臀 | 99精品视频在线 | av色站 | 日韩精品成人一区二区三区视频 | 欧美日韩中 | 亚洲三区在线播放 | 在线观看视频91 | 自拍视频一区二区三区 | 一级片在线观看 | 国产免国产免费 | 国产在线网站 | 欧美最猛黑人xxxⅹ 粉嫩一区二区三区四区公司1 | 国产电影一区 | 日本特黄a级高清免费大片 特黄色一级毛片 | 国产欧美日韩一区 | 天天干天天干 | 久久久成人网 | 久久久久久久久久久久一区二区 | 亚洲精品国产成人 | 亚洲视频一区在线 | 国产资源在线观看 | 日韩视频一区在线观看 | 成人精品网 | 欧美久操网| 国产精品一区二区视频 |