欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開始

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

單片機(jī)程序編譯沒有問題,燒錄后控制不了步進(jìn)電機(jī)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:428161 發(fā)表于 2018-11-17 13:41 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
1黑幣
  1. #include "reg52.h"

  2. void delay(unsigned int t);

  3. //Motor
  4. sbit F1 = P1^0;
  5. sbit F2 = P1^1;
  6. sbit F3 = P1^2;
  7. sbit F4 = P1^3;
  8. sbit k1 =P3^0;
  9. sbit k2=P3^1;
  10. sbit RX=P0^6;                //                       
  11. sbit TX=P0^7;

  12. sbit shuidi=P0^3;
  13. sbit hongyai=P0^0;
  14. sbit yali=P0^2;
  15. bit flag1=0;
  16. bit flag2=0;
  17. signed int  time=0;
  18. unsigned int  timer=0;
  19. unsigned long S=0;
  20. unsigned char code FFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}; //反轉(zhuǎn)
  21. unsigned char code FFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe}; //正轉(zhuǎn)
  22. void Conut(void)
  23. {
  24.         time=TH0*256+TL0;
  25.         TH0=0;
  26.         TL0=0;
  27.         
  28.         S= (long)(time*0.17);     //算出來是CM

  29.         if((S>=4000)||flag1==1)   //
  30.         {         
  31.           flag1=0;
  32.         }         
  33. }

  34. void zd0() interrupt 1                  //T0中斷用來計(jì)數(shù)器溢出,超過測(cè)距范圍
  35. {
  36.     flag1=1;                                         //中斷溢出標(biāo)志
  37.   }
  38. void panduan()

  39. {
  40.                    TMOD=0x11;                   //設(shè)T0為方式1,GATE=1;
  41.         TH0=0;
  42.         TL0=0;         
  43.         TH1=0xf8;                   //2MS定時(shí)
  44.         TL1=0x30;
  45.         ET0=1;             //允許T0中斷
  46.         ET1=1;                           //允許T1中斷
  47.         TR1=1;                           //開啟定時(shí)器
  48.         EA=1;                           //總中斷


  49.         {



  50.          while(!RX);                //當(dāng)RX為零時(shí)等待
  51.          TR0=1;                            //開啟計(jì)數(shù)
  52.          while(RX);                        //當(dāng)RX為1計(jì)數(shù)并等待
  53.          TR0=0;                                //關(guān)閉計(jì)數(shù)
  54.      Conut();                        //計(jì)算  
  55.          if(S<80)         
  56.           flag2=0;      
  57.         else         
  58.         flag2=0;         
  59.                   }
  60.                                   //調(diào)節(jié)轉(zhuǎn)速
  61.         }

  62. void motor_FFW()
  63.           {
  64.    unsigned char i;      
  65.     {
  66.       for (i=0; i<8; i++)  


  67.         {
  68.           if(hongyai==0) P1 = FFW[i]&0x1f;   //調(diào)取數(shù)據(jù)
  69.                   if(k2==0) P1 = FFW[i]&0x1f;
  70.           if(yali==0) P1 = FFW[i]&0x1f;
  71.                   if(flag2==0)P1 = FFW[i]&0x1f;
  72.         


  73.           delay(1);  
  74.          }
  75.          }
  76. }
  77. void  motor_FFZ()
  78. {
  79.    unsigned char i;      
  80.     {
  81.       for (i=0; i<8; i++)      
  82.         {
  83.                   if(k1==0) P1 = FFZ[i]&0x1f;
  84.                    if(shuidi==0) P1 = FFZ[i]&0x1f;
  85.                  
  86.                                                 
  87.                   delay(1);                   //調(diào)節(jié)轉(zhuǎn)速
  88.         }
  89.      }
  90. }
  91. void         main()
  92. {
  93.     while(1)
  94.         {
  95.          if(flag2==0)
  96.     motor_FFW();
  97.         
  98.          if(shuidi==0)
  99.          motor_FFZ();
  100.          if(hongyai==0)
  101.          motor_FFW();
  102.          if(yali==0)
  103.          motor_FFW();
  104. }
  105. }
復(fù)制代碼

編譯沒有問題,程序燒錄后控制不了五線四相步進(jìn)電機(jī)
求大神解決!

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

使用道具 舉報(bào)

樓主
ID:155507 發(fā)表于 2018-11-17 21:23 | 只看該作者
你的程序有缺陷,我給你來個(gè)程序試試

  1. /*-----------------------------------------------
  2.   名稱:步進(jìn)電機(jī)
  3.   內(nèi)容:本程序用于測(cè)試4相步進(jìn)電機(jī)常規(guī)驅(qū)動(dòng)
  4.         使用1-2相勵(lì)磁
  5.         1-2相激勵(lì)功率增倍,步進(jìn)角度減半,抖動(dòng)減少
  6.         順序如下 a-ab-b-bc-c-cd-d-da   又稱4相8拍
  7. ------------------------------------------------*/

  8. #include <reg52.h>



  9. sbit A1=P1^0; //定義步進(jìn)電機(jī)連接端口
  10. sbit B1=P1^1;
  11. sbit C1=P1^2;
  12. sbit D1=P1^3;


  13. #define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通電,其他相斷電
  14. #define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通電,其他相斷電
  15. #define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通電,其他相斷電
  16. #define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//D相通電,其他相斷電
  17. #define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通電,其他相斷電
  18. #define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通電,其他相斷電
  19. #define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通電,其他相斷電
  20. #define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通電,其他相斷電
  21. #define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部斷電

  22. unsigned char Speed;
  23. bit Flag;
  24. /*------------------------------------------------
  25. uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
  26. unsigned char 是定義無符號(hào)字符變量,其值的范圍是
  27. 0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí)
  28. 長度如下 T=tx2+5 uS
  29. ------------------------------------------------*/
  30. void DelayUs2x(unsigned char t)
  31. {   
  32. while(--t);
  33. }
  34. /*------------------------------------------------
  35. mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
  36. unsigned char 是定義無符號(hào)字符變量,其值的范圍是
  37. 0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編
  38. ------------------------------------------------*/
  39. void DelayMs(unsigned char t)
  40. {
  41.      
  42. while(t--)
  43. {
  44.      //大致延時(shí)1mS
  45.      DelayUs2x(245);
  46.          DelayUs2x(245);
  47. }
  48. }
  49. /*------------------------------------------------
  50.                     主函數(shù)
  51. ------------------------------------------------*/
  52. main()
  53. {
  54. unsigned int i=512;//旋轉(zhuǎn)一周時(shí)間

  55. EA=1;          //全局中斷開
  56. EX0=1;         //外部中斷0開
  57. IT0=1;         //1表示邊沿觸發(fā)

  58. Speed=10;
  59. while(1){
  60. Coil_OFF
  61. while((i--)&&Flag)  //正向
  62.   {  Coil_A1      
  63.      DelayMs(Speed);
  64.      Coil_AB1                //遇到Coil_AB1  用{A1=1;B1=1;C1=0;D1=0;}代替
  65.      DelayMs(Speed);         //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,
  66.                              //數(shù)字越小,轉(zhuǎn)速越大,力矩越小
  67.          Coil_B1      
  68.      DelayMs(Speed);
  69.      Coil_BC1
  70.      DelayMs(Speed);
  71.          Coil_C1      
  72.      DelayMs(Speed);
  73.      Coil_CD1
  74.      DelayMs(Speed);
  75.          Coil_D1      
  76.      DelayMs(Speed);
  77.      Coil_DA1
  78.      DelayMs(Speed);
  79.   }
  80.   Coil_OFF
  81.   i=512;
  82.   while((i--)&&(!Flag))//反向
  83.   {  
  84.      Coil_A1      
  85.      DelayMs(Speed);
  86.      Coil_DA1                //遇到Coil_AB1  用{A1=1;B1=1;C1=0;D1=0;}代替
  87.      DelayMs(Speed);         //改變這個(gè)參數(shù)可以調(diào)整電機(jī)轉(zhuǎn)速 ,
  88.                              //數(shù)字越小,轉(zhuǎn)速越大,力矩越小
  89.          Coil_D1      
  90.      DelayMs(Speed);
  91.      Coil_CD1
  92.      DelayMs(Speed);
  93.          Coil_C1      
  94.      DelayMs(Speed);
  95.      Coil_BC1
  96.      DelayMs(Speed);
  97.          Coil_B1      
  98.      DelayMs(Speed);
  99.      Coil_AB1
  100.      DelayMs(Speed);
  101.   }
  102. }
  103. }

  104. /*------------------------------------------------
  105.                  外部中斷程序
  106. ------------------------------------------------*/
  107. void ISR_INT0(void) interrupt 0
  108. {

  109. if(!INT0)
  110.    {
  111.    DelayMs(10);//在此處可以添加去抖動(dòng)程序,防止按鍵抖動(dòng)造成錯(cuò)誤
  112.    if(!INT0)
  113.    //while(!INT1);//等待按鍵釋放
  114.      {
  115.      Flag=!Flag;   
  116.      }
  117.    }
  118. }
復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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