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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4606|回復: 4
收起左側

單片機步進電機仿真時只會抖動幾下不轉動

[復制鏈接]
ID:378887 發表于 2018-8-20 14:32 | 顯示全部樓層 |閱讀模式
我在做步進電機的proteus仿真實驗室,程序沒錯,但是步進電機只會在proteus運行時抖動幾下,之后就不動了,不知道這是什么原因,
有知道的跟我說下,萬分感謝!

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png 0.png

單片機源程序如下:
  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. /*
  7.         0000,0011
  8.         0000,0110
  9.         0000,1100
  10.         0000,1001
  11. */
  12. //unsigned char code table2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};  //共陰數碼管 0~9
  13. unsigned char code table2[17] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  14. //0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼
  15. uchar table_begin;  
  16. uint  maichong;             //脈沖
  17. uchar  zhuansu;             //轉速
  18. uchar     flag;                 //方向
  19. sbit key_fuwei=P3^0;   //復位鍵
  20. sbit key_z=P3^1;            //正轉鍵
  21. sbit key_f=P3^2;            //反轉鍵
  22. sbit key_jia=P3^3;            //加速鍵
  23. sbit key_jian=P3^6;    //減速鍵

  24. sbit A1=P2^0;
  25. sbit A2=P2^1;
  26. sbit A3=P2^2;
  27. sbit A4=P2^3;
  28. void display();
  29. void delayms(xms);

  30. void delay(uchar x)  
  31. {
  32.         uchar i,j;                            //延時
  33.         for(i=0;i<x;i++)   
  34.                 for(j=100;j>0;j--);
  35. }
  36. void  fuwei(void)  //復位
  37. {
  38.         flag=2;//復位
  39.         zhuansu=0;
  40. }
  41. /*void Display(void)        //顯示
  42. {
  43.         unsigned char b1, b2;
  44.         b1=zhuansu/10;               
  45.         b2=zhuansu%10;
  46.         if(flag == 0)      //0
  47.                 P0=0x71;//顯示F
  48.     else
  49.                 P0=0x79;
  50.         A1=0;                                                         
  51.         delayms(3);
  52.         A1=1;

  53.         P0=0x40;
  54.         A2=0;         //顯示--
  55.         delayms(3);
  56.         A2=1;

  57.         P0=table2[b1];
  58.         A3=0;         //顯示十位
  59.         delayms(3);
  60.         A3=1;

  61.         P0=table2[b2];
  62.         A4=0;
  63.         delayms(3);   //顯示個位
  64.         A4=1;
  65. } */



  66. void display()   
  67. {  
  68.         uchar b1,b2,b3,b4;     
  69.         if(flag==0)  
  70.                 P0=0x5e;//正轉顯示d
  71.     else
  72.         {
  73.                 if(flag==1)
  74.                         P0=0x7c;//反轉顯示b
  75.                 else
  76.                         P0=0x71;//復位顯示F
  77.         }
  78.          
  79.         b1=10;   
  80.         b2=0x3f; // 顯示0   
  81.         b3=zhuansu/10;   
  82.         b4=zhuansu%10;  
  83.         //P0=table2;  
  84.        
  85.         A1=0;  //P2.0
  86.         delay(1);  
  87.         A1=1;  
  88.        
  89.         P0=b2;      
  90.         A2=0;   //P2.1   
  91.         delay(1);  
  92.         A2=1;
  93.        
  94.         P0=table2[b3];  
  95.         A3=0;          //P2.3  顯示轉速的十位
  96.         delay(1);  
  97.         A3=1;  
  98.        
  99.         P0=table2[b4];
  100.         A4=0;   //P2.4  顯示轉速的個位
  101.         delay(1);  
  102.         A4=1;
  103. }
  104.   
  105. void key()                         //按鍵掃描
  106. {  
  107.         if(key_fuwei==0)   
  108.         {  
  109.                 delay(5);     
  110.                 if(key_fuwei==0)     
  111.                 fuwei();
  112.         }
  113.        
  114.         if(key_z==0)   
  115.         {
  116.                 delay(5);     
  117.                 if(key_z==0)   
  118.                 {
  119.                         flag=0;      
  120.                         zhuansu=10;      
  121.                         while(key_z==0);
  122.                 }
  123.         }
  124.        
  125.         if(key_f==0)   
  126.         {  

  127.                 delay(5);     
  128.                 if(key_f==0)   
  129.                 {  
  130.                         flag=1;      
  131.                         zhuansu=10;      
  132.                         while(key_f==0);
  133.                 }
  134.         }  
  135.        
  136.         if(key_jia==0)   
  137.         {   
  138.                 delay(5);     
  139.                 if(key_jia==0)   
  140.                 {   
  141.                         zhuansu++;      
  142.                         if(zhuansu==21)     
  143.                         zhuansu=20;      
  144.                         while(key_jia==0);
  145.                 }
  146.         }  
  147.         if(key_jian==0)   
  148.         {   
  149.                 delay(5);     
  150.                 if(key_jian==0)   
  151.                 {  
  152.                         zhuansu--;      
  153.                         if(zhuansu<=0)     
  154.                                 zhuansu=0;      
  155.                         while(key_jian==0);
  156.                 }
  157.         }
  158. }

  159. void dispose()  //脈沖函數
  160. {
  161.         switch(zhuansu)  
  162.         {

  163.                 case 0:     flag=2;          break;   
  164.                 case 1:     maichong=300;    break;   
  165.                 case 2:     maichong=295;    break;   
  166.                 case 3:     maichong=290;    break;   
  167.                 case 4:     maichong=280;    break;   
  168.                 case 5:     maichong=260;    break;   
  169.                 case 6:     maichong=240;    break;   
  170.                 case 7:     maichong=200;    break;   
  171.                 case 8:     maichong=180;    break;   
  172.                 case 9:     maichong=160;    break;   
  173.                 case 10:    maichong=120;    break;   
  174.                 case 11:    maichong=80;     break;   
  175.                 case 12:    maichong=70;     break;   
  176.                 case 13:    maichong=60;     break;   
  177.                 case 14:    maichong=40;     break;   
  178.                 case 15:    maichong=35;     break;   
  179.                 case 16:    maichong=30;     break;   
  180.                 case 17:    maichong=25;     break;   
  181.                 case 18:    maichong=20;     break;   
  182.                 case 19:    maichong=15;     break;   
  183.                 case 20:    maichong=10;     break;

  184.         }  
  185.         if(flag==0)   //正轉
  186.                 table_begin=0;  
  187.         else   
  188.                 if(flag==1)   //反轉  
  189.                         table_begin=4;
  190. }
  191. void zhuandong(void)
  192. {
  193.         uint i,j;   
  194.         if(zhuansu>0&&zhuansu<=20)   
  195.         {
  196.                 for(j=0+table_begin;j<4+table_begin;j++)   
  197.                 {
  198.                         P1=table1[j];   
  199.                         for(i=0;i<maichong;i++)    //既有顯示功能,又有延時功能,轉速越低延時越長
  200.                                 display();
  201.                 }
  202.         }
  203. }

  204. void main()
  205. {
  206.         fuwei();   
  207.         display();   
  208.         for(;;)  
  209.         {
  210.                 key();      
  211.                 dispose();   
  212.                 if(flag==2)     
  213.                         display();  
  214.                 else         
  215.                         zhuandong();  
  216.         }
  217. }     
復制代碼

所有資料51hei提供下載:
步進電機調速 數碼.zip (216.51 KB, 下載次數: 36)


回復

使用道具 舉報

ID:337692 發表于 2018-10-26 18:57 | 顯示全部樓層
步進電機插反了
回復

使用道具 舉報

ID:111634 發表于 2018-10-26 21:40 | 顯示全部樓層
本帖最后由 zl2168 于 2018-10-27 22:32 編輯

實例98  驅動四相步進電機
Proteus仿真一下,確認有效。
實例98 四相步進電機.rar (35.83 KB, 下載次數: 25)
4.jpg

實例99  驅動二相步進電機
實例99 二相步進電機.rar (36.2 KB, 下載次數: 14)
2.jpg
以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。書中電路和程序設計有詳細說明,程序語句條條有注解。
回復

使用道具 舉報

ID:94031 發表于 2018-10-27 08:25 | 顯示全部樓層
dianji.png 電機重接一下就可以了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩三区在线观看 | 亚洲欧洲精品在线 | 久久久不卡网国产精品一区 | 久色 | 精品一区二区三区在线观看 | av网站免费观看 | 久久av影院 | 欧美久久久久久久 | 国产精品99久久免费观看 | 国产国产精品久久久久 | 国产99久久 | 久久久成人网 | 久久精品国产免费一区二区三区 | 午夜在线观看视频 | 精品自拍视频在线观看 | 日本不卡一二三 | 天天碰日日操 | 日本精品久久久久久久 | 91久久久久久久久 | 91麻豆精品国产91久久久久久 | 亚洲成av人片在线观看 | 国产激情自拍视频 | 国产精品96久久久久久 | 在线看成人av | 天天弄天天操 | 成人美女免费网站视频 | 精品自拍视频在线观看 | 久久精品小视频 | 亚洲国产精品网站 | 精品日本中文字幕 | aaaaaa大片免费看最大的 | 久久久久精 | 在线国产一区二区 | 这里精品| 在线免费观看亚洲 | 中文字幕1区2区 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 欧美xxxx做受欧美 | 97av视频| 狠狠艹 | 欧美日韩精品综合 |