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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3249|回復: 13
打印 上一主題 下一主題
收起左側

單片機程序想改成K1為低電平時數碼管開始15秒倒計時然后led亮

  [復制鏈接]
跳轉到指定樓層
樓主
ID:1001243 發表于 2022-1-14 00:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
現在是檢測電平變化就開始倒計時然后led亮,
我現在想改成K1為低電平時數碼管開始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. }

復制代碼


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

使用道具 舉報

沙發
ID:1001243 發表于 2022-1-14 02:30 | 只看該作者
咋還沒過審,我真的快被逼瘋了
回復

使用道具 舉報

板凳
ID:992936 發表于 2022-1-14 06:47 | 只看該作者
現在是讓燈變成燈,然后 我想把燈變成亮燈,然后開始為花樣改制,然后把燈改成彩色燈,然后把燈改成彩色燈,然后把燈改亮,然后把燈改亮,然后把燈改成燈亮了!救救孩子都改好久了
回復

使用道具 舉報

地板
ID:992936 發表于 2022-1-14 06:51 | 只看該作者
發表于2022-1-14 00:17

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

表達有點混亂,是不是熬夜不太清醒了,
回復

使用道具 舉報

5#
ID:1001243 發表于 2022-1-14 08:13 | 只看該作者
timeo 發表于 2022-1-14 06:51
發表于2022-1-14 00:17

現在是讓燈變成燈,然后

就是現在的狀態我3.1端口接一個紅外反射裝置當有物體經過紅外的時候(就是電平發生變化的時候),然后led亮,數碼管開始倒計時15秒,計時15秒后數碼管置零。
我現在想要改成紅外被擋住的時候(為低電平時)數碼管開始15秒倒計時,led燈亮。當紅外不被擋住的時候(變為高電平時)數碼管立即置零,led燈滅。
回復

使用道具 舉報

6#
ID:53621 發表于 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); //根據具體時間調整里面參數,主要是去掉一點抖動
  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. }
復制代碼
回復

使用道具 舉報

7#
ID:945127 發表于 2022-1-14 09:47 來自手機 | 只看該作者
建一個初始值為0的變量,當判斷紅外被擋住時,變量值變成1,打開中斷,之后再加一個判斷,如果紅外沒有被擋住并且變量值為1,關閉中斷
回復

使用道具 舉報

8#
ID:53621 發表于 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); //根據具體時間調整里面參數,主要是去掉一點抖動
  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. }
復制代碼


看你代碼寫的還不錯,只是思路不太清晰,你照我這樣改試試,可能還需要微調,多調調你就能進步了。
回復

使用道具 舉報

9#
ID:415064 發表于 2022-1-14 10:25 | 只看該作者
本帖最后由 wojiaoguogai 于 2022-1-14 11:53 編輯

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

回復

使用道具 舉報

10#
ID:53621 發表于 2022-1-14 10:32 | 只看該作者
  1.         if(!K1) //低電平
  2.         {
  3.             delay(10); //根據具體時間調整里面參數,主要是去掉一點抖動
  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();
復制代碼
回復

使用道具 舉報

11#
ID:332444 發表于 2022-1-14 11:01 | 只看該作者
那就表示要一直按住按鍵看到倒計時
回復

使用道具 舉報

12#
ID:161164 發表于 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. }

復制代碼

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

13#
ID:1001843 發表于 2022-1-14 11:38 | 只看該作者
timeo 發表于 2022-1-14 06:51
發表于2022-1-14 00:17

現在是讓燈變成燈,然后

"讓燈變成燈"啥意思?
點亮?
回復

使用道具 舉報

14#
ID:8222 發表于 2022-1-14 11:43 | 只看該作者
這表達意思真是無法了解。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费看片国产 | 国产在线观看一区二区三区 | 成人av一区| 玩丰满女领导对白露脸hd | 日韩欧美中文字幕在线观看 | 在线观看中文字幕dvd播放 | www.国产精品 | 久久久久久免费毛片精品 | av网站免费在线观看 | 久久久久久久久久久久久久国产 | 一区二区在线不卡 | 日韩精品一区中文字幕 | 欧美一级二级视频 | 国产95在线 | 成人亚洲| 精品一区二区三区在线观看国产 | 婷婷在线视频 | 欧美性极品xxxx做受 | 日韩精品在线一区 | 日韩成人精品一区 | a级大片 | 91偷拍精品一区二区三区 | 久久久精品一区二区三区四季av | 男女下面一进一出网站 | 性一交一乱一透一a级 | 九九热免费视频在线观看 | 99精品免费视频 | 久久久久久91 | 毛片网站在线观看视频 | 国产精品99久久久久久动医院 | 国产综合精品一区二区三区 | 五十女人一级毛片 | 亚洲成人一区 | www.蜜桃av| 精品国产31久久久久久 | 亚洲欧美一区二区三区情侣bbw | 日韩欧美一区二区三区免费观看 | 亚洲h在线观看 | 黄色毛片一级 | 午夜三级视频 | 亚洲国产一区二区三区在线观看 |