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

標題: 這個單片機程序電機一轉數碼管滅了? [打印本頁]

作者: dpojf    時間: 2020-11-14 00:27
標題: 這個單片機程序電機一轉數碼管滅了?
當電機一轉,數碼管就滅了,偶爾閃一下,不知咋回事

IMG20201113152207.jpg (1.09 MB, 下載次數: 41)

IMG20201113152207.jpg

作者: dpojf    時間: 2020-11-14 00:33
程序是這個,電機一轉,數碼管就滅了

  1. #include<reg51.h>
  2. #include<intrins.h>
  3. void zhongduan();
  4. unsigned char num[]={0x00,0x01,0X02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
  5. void delay(unsigned char x);
  6. sbit sw=P3^0;    sbit gw=P3^1;    sbit moshi=P3^2;     sbit yewei=P3^3;        sbit qidong=P3^4;
  7. sbit L1=P1^5;  sbit L2=P1^4; sbit L3=P1^3; sbit L4=P1^2; sbit L5=P1^6; sbit L6=P1^7;sbit L7=P1^1;sbit L8=P1^0;
  8. unsigned char s=0,g=0,i=0,b=0;
  9. unsigned char j,h;
  10. unsigned char aum=0;
  11. unsigned char code FFW[]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
  12. unsigned char code REV[]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
  13. void SETP_MOTOR_FFW(unsigned char n)
  14. {
  15.          unsigned char q,w;
  16.         for(q=0;q<5*n;q++)
  17.         {
  18.                  for(w=0;w<8;w++)
  19.                 {
  20.                         P0 = FFW[w];
  21.                         delay(25);
  22.                 }
  23.         }
  24. }
  25. void SETP_MOTOR_REV(unsigned char n)
  26. {
  27.          unsigned char q,w;
  28.         for(q=0;q<5*n;q++)
  29.         {
  30.                  for(w=0;w<8;w++)
  31.                 {
  32.                         P0 = REV[w];
  33.                         delay(25);
  34.                 }
  35.         }
  36. }
  37. void de(unsigned char z)
  38. {
  39. unsigned char e,r;
  40. for(e=z;e>0;e--)
  41. for(r=110;r>0;r--);
  42. }
  43. sbit SPK=P3^5;


  44. void main()
  45. {
  46. unsigned char N = 3;
  47.    EA=1;
  48. ET1=1;
  49.     TMOD=0x10;
  50. TH1=(65535-10000)/256;
  51. TL1=(65535-10000)%256;
  52. TR1=1;
  53. P2=0x08; P3=0xff; P1=0x00; delay(200); P1=0xff; P3=0x00; delay(200); P3=0xff; P1=0xff;
  54. while(1)
  55. {
  56. sw=1; P2=num[s]; delay(1); sw=0;
  57. gw=1; P2=num[g];delay(1); gw=0;
  58.   if(moshi==0)
  59.      {
  60.   delay(2);
  61.    if(moshi==0)
  62.    {
  63.    while(!moshi);
  64.    b++;
  65.    if(b>2)
  66.    b=1;
  67.    }
  68.    }

  69. if(yewei==0&&b>0)
  70.   {
  71.   delay(2);
  72.   if(yewei==0&&b>0)
  73.   while(!yewei);
  74.    i++;
  75.    if(i>4)
  76.    i=1;
  77.   }

  78. switch(i)
  79.    {
  80.    case 0:
  81.    for(j=0;j<50;j++)

  82.   L1=1;L2=1;L3=1;L4=1; break;

  83. case 1:
  84.    for(j=0;j<50;j++)

  85.    L1=0;L2=1;L3=1;L4=1; break;


  86.   case 2:
  87.    for(j=0;j<50;j++)

  88.    L1=1;L2=0;L3=1;L4=1; break;

  89.   case 3:
  90.    for(j=0;j<50;j++)

  91.    L1=1;L2=1;L3=0;L4=1; break;

  92.    case 4:
  93.    for(j=0;j<50;j++)

  94.    L1=1;L2=1;L3=1;L4=0; break;

  95. default:break;
  96.    }
  97.   switch(b)
  98.    {
  99.    case 0:
  100.    for(j=0;j<100;j++)

  101.    P1=0xff; break;

  102. case 1:
  103.    for(j=0;j<100;j++)

  104.    L5=1;L6=0; break;
  105. case 2:
  106.    for(j=0;j<100;j++)

  107.    L5=0;L6=1; break;

  108.    default:break;
  109.    }
  110.    if(qidong==0&&i>0)
  111.      {
  112.   delay(2);
  113.    if(qidong==0&&i>0)
  114.    {
  115.    while(!qidong);
  116.    g=0;s=6;
  117.    while(1)
  118.   {      
  119.     if(aum==100)
  120.    {
  121.    aum=0;
  122.    g--;
  123.    }
  124.    if(g==-1)
  125.    {
  126.     g=9;
  127.     s--;
  128.     }
  129.     if(s==-1)
  130. {s=0;g=0;}
  131.    if(s==6)
  132.    {L7=0;}
  133.    if(s<5&&s>1)
  134.    {
  135.    L7=1;
  136.    SETP_MOTOR_REV(N);delay(100);SETP_MOTOR_FFW(N);delay(100);
  137.    sw=1; P2=num[s]; delay(1); sw=0;
  138.     gw=1; P2=num[g];delay(1); gw=0;
  139.    }
  140.    if(s<=1)
  141.    {L8=0;}
  142.    if(s<1&&g<1)
  143.    {P1=0xff;
  144.    de(100);
  145.    SPK=0;
  146.    de(100);
  147.    SPK=1;
  148.    }
  149.    sw=1; P2=num[s]; delay(1); sw=0; gw=1; P2=num[g];delay(1); gw=0;
  150.    }
  151.    }
  152.   }

  153. }

  154. }
  155. void delay(unsigned char x)
  156. {
  157.     unsigned char k;
  158. while(x--)
  159. for(k=0;k<255;k++);
  160. }
  161. void zhongduan() interrupt 3 using 0
  162. {
  163.     TH1=(65535-10000)/256;
  164. TL1=(65535-10000)%256;
  165. aum++;

  166. }
復制代碼



作者: xianfajushi    時間: 2020-11-14 15:33
程序問題                                 
作者: hejianmin    時間: 2020-11-14 18:04
檢查程序
作者: 適得府君書    時間: 2020-11-16 09:07
無論是電機還是繼電器在實際電路設計中都需要使用一個二極管做保護,防止開關時瞬間電流過大造成控制器件損壞。不過你這個是模擬的不知存不存在這種問題。
你的這個可能是另外一個問題那就是電機的對電流的需求過大,當電機啟動時拉低了整個系統的電壓,導致數碼管供電不足導致偶爾閃爍一下。

作者: 權威人物    時間: 2020-11-16 09:28
說真的你這程序本來可以很簡單的架構的,你寫成這樣真的懶得看,一就是,數碼管的顯示函數要不斷調用刷新的,估計問題就是進入驅動電機的時候沒有調用顯示數碼管或者很久才顯示刷新一次導致的,二就是電壓問題。
作者: chenyinhu    時間: 2020-11-16 10:08
看你最后一個while(1),跳進去以后步進電機轉的時候沒刷新顯示,數碼管可不就不亮了嘛

作者: aking991    時間: 2020-11-20 11:25
供電不足造成的,電機的電源和單片機工作電源分開就不會了,不然你要用低電壓型的單片機,如STC15W系列等




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1