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

標(biāo)題: 單片機程序想改成K1為低電平時數(shù)碼管開始15秒倒計時然后led亮 [打印本頁]

作者: 2810812563    時間: 2022-1-14 00:17
標(biāo)題: 單片機程序想改成K1為低電平時數(shù)碼管開始15秒倒計時然后led亮
現(xiàn)在是檢測電平變化就開始倒計時然后led亮,
我現(xiàn)在想改成K1為低電平時數(shù)碼管開始15秒倒計時然后led亮,K1為高電平時led滅倒計時也直接置零改咋改啊!救救孩子都改好久了
單片機源程序如下:
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <math.h>


  4. #define uint8_t unsigned char
  5. #define uint16_t  unsigned  int


  6. sbit K1=P3^1;
  7. sbit LED1=P3^3;
  8. sbit LED2=P3^4;



  9. uint8_t miao=0;
  10. uint8_t knum[8];
  11. uint8_t hour_A = 0,min_A = 0,sec_A=0;

  12. uint8_t code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x89,0xBF,0xc7};
  13. //D?êy
  14. uint8_t code index[]={0xFD,0xFE};  


  15. void delay(uint16_t z)                 
  16. {
  17.         uint16_t i,j;
  18.         for(i=0;i<z;i++)
  19.         for(j=0;j<121;j++);
  20. }

  21. void display()               
  22. {
  23.         uint8_t i;        
  24.                 for(i=0;i<2;i++)   
  25.                 {
  26.                         P0=0xff;
  27.                         P2=index[ i];        
  28.                                         P0=tab[knum[ i]];         
  29.                  delay(2);               
  30.                 }
  31. }


  32. uint8_t num,Value;

  33. bit start = 0;


  34. void main()
  35. {         
  36.         TMOD=0x01;                                                                  
  37.         TH0=(65536-10000)/256;                                          
  38.         TL0=(65536-10000)%256;                                          
  39.         ET0=1;                                                                          
  40.         TR0=1;                                                                          
  41.         EA=1;
  42.         
  43.         while(1)
  44.         {
  45.      if(!K1)
  46.                  {
  47.                          while(!K1);
  48.                          if(miao==0)
  49.                          {
  50.                                  start = 1;
  51.                                  miao = 15;
  52.                          }
  53.                  }
  54.                         knum[1] = miao/10;
  55.                         knum[0] = miao%10;;

  56.                 display();
  57.   }
  58. }

  59. void T0_timer () interrupt 1                                       
  60. {
  61.         TH0=(65536-50000)/256;                                                
  62.         TL0=(65536-50000)%256;                                                
  63.         if(start)
  64.         {
  65.                 LED1 = 0;
  66.                 LED2 = 0;
  67.           num++;
  68.           if(num>20)
  69.                 {
  70.                         num = 0;
  71.                         if(miao>0)
  72.                         {
  73.                                 miao--;
  74.                         }
  75.                         else if(miao==0)
  76.                         {
  77.                                 start = 0;
  78.                         }
  79.                 }
  80.         }
  81.         else
  82.         {
  83.                 LED1 = 1;
  84.                 LED2 = 1;
  85.         }
  86. }

復(fù)制代碼



作者: 2810812563    時間: 2022-1-14 02:30
咋還沒過審,我真的快被逼瘋了
作者: timeo    時間: 2022-1-14 06:47
現(xiàn)在是讓燈變成燈,然后 我想把燈變成亮燈,然后開始為花樣改制,然后把燈改成彩色燈,然后把燈改成彩色燈,然后把燈改亮,然后把燈改亮,然后把燈改成燈亮了!救救孩子都改好久了
作者: timeo    時間: 2022-1-14 06:51
發(fā)表于2022-1-14 00:17

現(xiàn)在是讓燈變成燈,然后
我想把燈變成亮燈,然后開始為花樣改制,然后把燈改成彩色燈,然后把燈改成彩色燈,然后把燈改亮,然后把燈改亮,然后把燈改成燈亮了!救救孩子都改好久了

表達(dá)有點混亂,是不是熬夜不太清醒了,
作者: 2810812563    時間: 2022-1-14 08:13
timeo 發(fā)表于 2022-1-14 06:51
發(fā)表于2022-1-14 00:17

現(xiàn)在是讓燈變成燈,然后

就是現(xiàn)在的狀態(tài)我3.1端口接一個紅外反射裝置當(dāng)有物體經(jīng)過紅外的時候(就是電平發(fā)生變化的時候),然后led亮,數(shù)碼管開始倒計時15秒,計時15秒后數(shù)碼管置零。
我現(xiàn)在想要改成紅外被擋住的時候(為低電平時)數(shù)碼管開始15秒倒計時,led燈亮。當(dāng)紅外不被擋住的時候(變?yōu)楦唠娖綍r)數(shù)碼管立即置零,led燈滅。
作者: 羅斯德隆    時間: 2022-1-14 09:10
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <math.h>


  4. #define uint8_t unsigned char
  5. #define uint16_t  unsigned  int


  6. sbit K1=P3^1;
  7. sbit LED1=P3^3;
  8. sbit LED2=P3^4;



  9. uint8_t miao=0;
  10. uint8_t knum[8];
  11. uint8_t hour_A = 0,min_A = 0,sec_A=0;

  12. uint8_t code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x89,0xBF,0xc7};
  13. //D?êy
  14. uint8_t code index[]={0xFD,0xFE};


  15. void delay(uint16_t z)
  16. {
  17.     uint16_t i,j;
  18.     for(i=0;i<z;i++)
  19.         for(j=0;j<121;j++);
  20. }

  21. void display()
  22. {
  23.     uint8_t i;
  24.     for(i=0;i<2;i++)
  25.     {
  26.         P0=0xff;
  27.         P2=index[i];
  28.         P0=tab[knum[ i]];
  29.         delay(2);
  30.     }
  31. }


  32. uint8_t num,Value;

  33. bit start = 0;


  34. void main()
  35. {
  36.     TMOD=0x01;
  37.     TH0=(65536-10000)/256;
  38.     TL0=(65536-10000)%256;
  39.     ET0=1;
  40.     TR0=1;
  41.     EA=1;

  42.     while(1)
  43.     {
  44.         if(!K1)
  45.         {
  46.             delay(10); //根據(jù)具體時間調(diào)整里面參數(shù),主要是去掉一點抖動
  47.            if(!K1)
  48.                start = 1;
  49.             if(miao==0)
  50.             {
  51.                 miao = 15;
  52.             }
  53.         }
  54.         else
  55.         {
  56.             start = 0;
  57.             miao = 0;
  58.         }
  59.         knum[1] = miao/10;
  60.         knum[0] = miao%10;;
  61.         display();
  62.     }
  63. }

  64. void T0_timer () interrupt 1
  65. {
  66.     TH0=(65536-50000)/256;
  67.     TL0=(65536-50000)%256;
  68.     if(start)
  69.     {
  70.         LED1 = 0;
  71.         LED2 = 0;
  72.         num++;
  73.         if(num>20)
  74.         {
  75.             num = 0;
  76.             if(miao>0)
  77.             {
  78.                 miao--;
  79.             }
  80.             else if(miao==0)
  81.             {
  82.                 start = 0;
  83.             }
  84.         }
  85.     }
  86.     else
  87.     {
  88.         LED1 = 1;
  89.         LED2 = 1;
  90.     }
  91. }
復(fù)制代碼

作者: jianxu    時間: 2022-1-14 09:47
建一個初始值為0的變量,當(dāng)判斷紅外被擋住時,變量值變成1,打開中斷,之后再加一個判斷,如果紅外沒有被擋住并且變量值為1,關(guān)閉中斷
作者: 羅斯德隆    時間: 2022-1-14 10:12
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <math.h>


  4. #define uint8_t unsigned char
  5. #define uint16_t  unsigned  int


  6. sbit K1=P3^1;
  7. sbit LED1=P3^3;
  8. sbit LED2=P3^4;



  9. uint8_t miao=0;
  10. uint8_t knum[8];
  11. uint8_t hour_A = 0,min_A = 0,sec_A=0;

  12. uint8_t code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x89,0xBF,0xc7};
  13. //D?êy
  14. uint8_t code index[]={0xFD,0xFE};


  15. void delay(uint16_t z)
  16. {
  17.     uint16_t i,j;
  18.     for(i=0;i<z;i++)
  19.         for(j=0;j<121;j++);
  20. }

  21. void display()
  22. {
  23.     uint8_t i;
  24.     for(i=0;i<2;i++)
  25.     {
  26.         P0=0xff;
  27.         P2=index[i];
  28.         P0=tab[knum[ i]];
  29.         delay(2);
  30.     }
  31. }


  32. uint8_t num,Value;

  33. bit start = 0;


  34. void main()
  35. {
  36.     TMOD=0x01;
  37.     TH0=(65536-10000)/256;
  38.     TL0=(65536-10000)%256;
  39.     ET0=1;
  40.     TR0=1;
  41.     EA=1;

  42.     while(1)
  43.     {
  44.         if(!K1)
  45.         {
  46.             delay(10); //根據(jù)具體時間調(diào)整里面參數(shù),主要是去掉一點抖動
  47.            if(!K1)
  48.                start = 1;
  49.             if(miao==0)
  50.             {
  51.                 miao = 15;
  52.             }
  53.         }
  54.         else
  55.         {
  56.             start = 0;
  57.             miao = 0;
  58.         }
  59.         knum[1] = miao/10;
  60.         knum[0] = miao%10;;
  61.         display();
  62.     }
  63. }

  64. void T0_timer () interrupt 1
  65. {
  66.     TH0=(65536-50000)/256;
  67.     TL0=(65536-50000)%256;
  68.     if(start)
  69.     {
  70.         LED1 = 0;
  71.         LED2 = 0;
  72.         num++;
  73.         if(num>20)
  74.         {
  75.             num = 0;
  76.             if(miao>0)
  77.             {
  78.                 miao--;
  79.             }
  80.             else if(miao==0)
  81.             {
  82.                 start = 0;
  83.             }
  84.         }
  85.     }
  86.     else
  87.     {
  88.         LED1 = 1;
  89.         LED2 = 1;
  90.     }
  91. }
復(fù)制代碼


看你代碼寫的還不錯,只是思路不太清晰,你照我這樣改試試,可能還需要微調(diào),多調(diào)調(diào)你就能進(jìn)步了。
作者: wojiaoguogai    時間: 2022-1-14 10:25
本帖最后由 wojiaoguogai 于 2022-1-14 11:53 編輯

int flag=0;//被擋住==1,否則==0
int time = 0;//秒數(shù)計數(shù)
int timeout = 0;//被擋住超過15秒==1
if(flag == 1)//被擋住
{
    if(time ==0 && timeout  ==0)//自減時間為0且不在超時狀態(tài)
    {
        time = 15;
        開led;         timeout  =1;
    }
    else if(time  > 0)
    {
        time--;
        顯示數(shù)碼管時間
    }
    else  if(time ==0 && timeout  ==1)//被擋住超過15秒,關(guān)燈, 要保證這個超時狀態(tài),當(dāng)沒有下一個沒有擋住數(shù)碼管才能重新自減
    {
        led滅;
        數(shù)碼管滅;
        time=0;
    }
}
else//沒有擋住
{
timeout  =0;
led滅;
數(shù)碼管滅;
time=0;
}


作者: 羅斯德隆    時間: 2022-1-14 10:32
  1.         if(!K1) //低電平
  2.         {
  3.             delay(10); //根據(jù)具體時間調(diào)整里面參數(shù),主要是去掉一點抖動
  4.            if(!K1)
  5.                start = 1;
  6.             if(miao==0)
  7.             {
  8.                 miao = 15;
  9.             }
  10.         }
  11.         else  //高電平馬上清零
  12.         {
  13.             start = 0;
  14.             miao = 0;
  15.         }
  16.         knum[1] = miao/10;
  17.         knum[0] = miao%10;;
  18.         display();
復(fù)制代碼

作者: xianfajushi    時間: 2022-1-14 11:01
那就表示要一直按住按鍵看到倒計時
作者: lkc8210    時間: 2022-1-14 11:34
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. #include <math.h>
  4. #define uint8_t unsigned char
  5. #define uint16_t  unsigned  int
  6. sbit K1 = P3 ^ 1;
  7. sbit LED1 = P3 ^ 3;
  8. sbit LED2 = P3 ^ 4;
  9. bit Flag_2ms = 0;
  10. bit K1_O;
  11. uint8_t miao = 0;
  12. uint8_t knum[8];
  13. uint8_t hour_A = 0, min_A = 0, sec_A = 0;
  14. uint8_t code tab[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xff, 0x89, 0xBF, 0xc7};
  15. //D?êy
  16. uint8_t code index[] = {0xFD, 0xFE};
  17. void delay(uint16_t z)
  18. {
  19.     uint16_t i, j;
  20.     for(i = 0; i < z; i++)
  21.         for(j = 0; j < 121; j++);
  22. }
  23. void display()
  24. {
  25.     static uint8_t i = 0;

  26.     P0 = 0xff;
  27.     P2 = index[i];
  28.     P0 = tab[knum[i]];
  29.     i = ++i % 2;
  30. }
  31. uint16_t num, Value;
  32. bit start = 0;
  33. void main()
  34. {
  35.     TMOD = 0x01;
  36.     TH0 = (65536 - 2000) / 256;
  37.     TL0 = (65536 - 2000) % 256;
  38.     ET0 = 1;
  39.     TR0 = 1;
  40.     EA = 1;
  41.     while(1)
  42.     {
  43.         if(Flag_2ms)
  44.         {   Flag_2ms = 0;
  45.             if(!K1)
  46.             {
  47.                 if(K1_O != K1) {
  48.                     miao = 15;
  49.                 }
  50.                 LED1 = 0;
  51.                 LED2 = 0;
  52.                 num++;
  53.                 if(num > 500)
  54.                 {
  55.                     num = 0;
  56.                     if(miao > 0)
  57.                     {
  58.                         miao--;
  59.                     }
  60.                 }
  61.             }
  62.             else
  63.             {
  64.                 LED1 = 1;
  65.                 LED2 = 1;
  66.                 miao = 0;
  67.                 num = 0;
  68.             }
  69.             K1_O = K1;
  70.             knum[1] = miao / 10;
  71.             knum[0] = miao % 10;
  72.             display();
  73.         }
  74.     }
  75. }
  76. void T0_timer () interrupt 1
  77. {
  78.     TH0 = (65536 - 2000) / 256;
  79.     TL0 = (65536 - 2000) % 256;
  80.     Flag_2ms = 1;
  81. }

復(fù)制代碼

作者: sseth    時間: 2022-1-14 11:38
timeo 發(fā)表于 2022-1-14 06:51
發(fā)表于2022-1-14 00:17

現(xiàn)在是讓燈變成燈,然后

"讓燈變成燈"啥意思?
點亮?
作者: 溫xyz    時間: 2022-1-14 11:43
這表達(dá)意思真是無法了解。




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