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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3902|回復: 20
收起左側

51單片機功能實現 啟動條件,不自鎖開關1按下 燈1,2,3,4閃爍, 傳感器1,2,3,4觸發...

[復制鏈接]
ID:1050923 發表于 2022-11-9 21:04 | 顯示全部樓層 |閱讀模式
50黑幣
啟動條件,不自鎖開關1按下
燈1,2,3,4閃爍,
傳感器1,2,3,4觸發,對應燈1,2,3,4長亮,未感應到的繼續閃爍,
若4盞燈同時亮則結束程序等待下一次啟動信號
在程序運行過程中只要自鎖開關2按下程序全部停止,
自鎖松開,開關1按下程序從頭運行。
求大神給我一個大概的思路用什么方法去實現。下面是我的一部分其他的不知道怎么寫了

#include<reg51.h>
sbit S1=P3^6;
sbit LED0=P1^0;
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
void Delay(unsigned int t);
void main (void)
{



while (1)        
  {
    if(S1==1)
     {
      LED0=0;
          LED1=0;
          LED2=0;
          LED2=0;

      Delay(10000);     

      LED0=1;  
          LED1=1;
          LED2=1;
          LED3=1;         
      Delay(10000);
     }                 
  }
}

void Delay(unsigned int t)
{
while(--t);
}



最佳答案

查看完整內容

基于我的代碼加幾個中大括號就行了 自己想一下
回復

使用道具 舉報

ID:161164 發表于 2022-11-9 21:04 | 顯示全部樓層
小菜苗 發表于 2022-11-10 10:17
如果我是開關1按下,燈1閃爍,傳感器1觸發燈1常亮,燈1常亮以后燈2閃爍,傳感器2觸發燈2常亮,燈2常亮以 ...

基于我的代碼加幾個中大括號就行了
自己想一下
回復

使用道具 舉報

ID:1050923 發表于 2022-11-9 22:22 | 顯示全部樓層
大佬們可不可以用if ... else if ...else if...來實現呀
回復

使用道具 舉報

ID:161164 發表于 2022-11-9 22:40 | 顯示全部樓層
2022-11-09_223929.png

評分

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

查看全部評分

回復

使用道具 舉報

ID:195496 發表于 2022-11-10 09:59 | 顯示全部樓層
這個方案應該采用一個定時器產生閃爍信號,按鍵由于只檢測觸發,所以不用采用按鍵延時方法處理。檢測到按鍵后,產生一個標志,再判斷標志去檢測傳感器,傳感器信號置位一個標志,該標志與閃爍信號進行位運算產生最終位標志,驅動LED,當四路傳感器標志全為1時,清除LED指示燈及傳感器標志位,返回停止狀態
回復

使用道具 舉報

ID:1050923 發表于 2022-11-10 10:17 來自手機 | 顯示全部樓層
lkc8210 發表于 2022-11-9 22:40

如果我是開關1按下,燈1閃爍,傳感器1觸發燈1常亮,燈1常亮以后燈2閃爍,傳感器2觸發燈2常亮,燈2常亮以后燈3閃爍,傳感器3觸發燈3常亮,燈3常亮以后燈4閃爍,傳感器4觸發燈4常亮。所有燈都常亮后停止運行等待下一次啟動,開關2還是急停作用。這個應該用什么方法去實現呢
回復

使用道具 舉報

ID:195496 發表于 2022-11-10 12:20 | 顯示全部樓層
這個一樣的,按照順序控制進行,開關1觸發后,寫燈1標志位,允許燈1進入工作態,用閃爍信號與傳感器觸發信號來控制燈1,燈1常亮標志允許燈2進入工作態,依次類推,不是很難
回復

使用道具 舉報

ID:77589 發表于 2022-11-10 13:48 | 顯示全部樓層
說實話,你的需求都沒有表述清楚!
還有,你程序初始化部分都沒有。
回復

使用道具 舉報

ID:1050923 發表于 2022-11-10 14:32 來自手機 | 顯示全部樓層
大漠落日 發表于 2022-11-10 12:20
這個一樣的,按照順序控制進行,開關1觸發后,寫燈1標志位,允許燈1進入工作態,用閃爍信號與傳感器觸發信 ...

對于你們大佬來說簡單,我們小白就難了呀,大佬能指導一下程序怎么改么
回復

使用道具 舉報

ID:1051345 發表于 2022-11-10 14:53 | 顯示全部樓層
這個方案可以使用一個定時器根據指置時間間隔來翻轉四根引腳,產生四路閃爍信號,使用四個外部中斷接入四個傳感器觸發信號,在外部中斷程序里置對應引腳停止翻轉標志,定時中斷里根據停止翻轉標志來停止翻轉引腳,并置相應引腳高電平。當四個停止翻轉標志都置位時,定時器停止運行,再次檢測到啟動信號,再開啟定時器的運行。
回復

使用道具 舉報

ID:1051345 發表于 2022-11-10 15:01 | 顯示全部樓層
這個方案可以使用定時器,在定時中斷程序里翻轉四根IO引腳產生四路閃爍信號,使用外部中斷接收四個傳感器輸入信號,在外部中斷程序里對相應IO引腳是否翻轉置失能標志,定時中斷程序里檢測到該標志則停止翻轉相應IO引腳,并置高電平。當四個標志都置位時,停止定時器。當再檢測到輸入信號時,開啟定時器。
回復

使用道具 舉報

ID:1050923 發表于 2022-11-10 16:48 來自手機 | 顯示全部樓層
Longan.Wang 發表于 2022-11-10 13:48
說實話,你的需求都沒有表述清楚!
還有,你程序初始化部分都沒有。

就是不曉得怎么去搞
回復

使用道具 舉報

ID:1050923 發表于 2022-11-10 16:56 來自手機 | 顯示全部樓層
Longan.Wang 發表于 2022-11-10 13:48
說實話,你的需求都沒有表述清楚!
還有,你程序初始化部分都沒有。

下面有要求更加全一些的,這是我自己想的,不是很全面,謝謝大哥提意見
回復

使用道具 舉報

ID:1051382 發表于 2022-11-10 17:05 | 顯示全部樓層
可以研究一下,謝謝樓主
回復

使用道具 舉報

ID:1050923 發表于 2022-11-10 17:48 來自手機 | 顯示全部樓層
小菜苗 發表于 2022-11-10 16:56
下面有要求更加全一些的,這是我自己想的,不是很全面,謝謝大哥提意見

就是這個邏輯
6E4A08DF-0972-45B5-B857-1F455A764746.jpeg
回復

使用道具 舉報

ID:1050923 發表于 2022-11-10 20:31 | 顯示全部樓層
lkc8210 發表于 2022-11-10 17:52
基于我的代碼加幾個中大括號就行了
自己想一下

之前的代碼我感覺都不能實現功能
回復

使用道具 舉報

ID:1050923 發表于 2022-11-10 21:07 | 顯示全部樓層
小菜苗 發表于 2022-11-10 20:31
之前的代碼我感覺都不能實現功能

大佬是我自己搞錯了定義的端口啦,
回復

使用道具 舉報

ID:1050923 發表于 2022-11-10 23:21 | 顯示全部樓層
#include<reg51.h>
typedef   unsigned char  u8;
typedef   unsigned int  u16;
typedef   unsigned long  u32;
sbit S1=P3^6;
sbit S2=P3^7;


sbit Sensor1 = P2^0;
sbit Sensor2 = P2^1;
sbit Sensor3 = P2^2;
sbit Sensor4 = P2^3;


sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;



void Delay1ms()
   {
     unsigned char i,j;
         i=2;
         j=239;
         do
         {
            while(--j);
         }
         while(--i);
   }

void main(void)
{
      u16 DelayCnt = 0;
          bit Flash1 = 0,Flash2 = 0, Flash3 = 0,Flash4 = 0, Start = 0;

          while(1)
          {
            if(S1==0)
                  {
                    Start = 1;
                        Flash1 = 0;
                        Flash2 = 0;
                        Flash3 = 0;
                        Flash4 = 0;
                       
                  }
                if(S2==0)
                  {
                   Start = 0;
                   DelayCnt = 0;
                   Flash1 = 0;
                   Flash2 = 0;
                   Flash3 = 0;
                   Flash4 = 0;
                   LED1=1;
                   LED2=1;
                   LED3=1;
                   LED4=1;
                  
                  }
                 if(Sensor1==0)Flash1 = 1;
                 if(Sensor2==0)Flash2 = 1;
                 if(Sensor3==0)Flash3 = 1;
                 if(Sensor4==0)Flash4 = 1;       
                 

                 if(Start)
                 {
                     if(DelayCnt++>=1000)
                         {
                             DelayCnt = 0;
                                 if(Flash1==0)
                                    LED1=!LED1;
                                 else
                                    LED1=0;

                                 if(Flash1==1)
                                      {
                                          
                                      DelayCnt = 0;
                                          if(Flash2==0)
                                             LED2=!LED2;
                                          else
                                            LED2=0;
                                                                if(Flash2==1)
                                                    {
                                          
                                                   DelayCnt = 0;
                                                       if(Flash3==0)
                                                          LED3=!LED3;
                                                       else
                                                          LED3=0;
                                                                                      if(Flash3==1)
                                                                  {
                                          
                                                                DelayCnt = 0;
                                                                    if(Flash4==0)
                                                                       LED4=!LED4;
                                                                    else
                                                                       LED4=0;
                                                                                                   }
                                                                         }
                                          }
                                 
                               
                         }
                 
                 
                 }
                 
                Delay1ms();
          }






}感謝大佬們的不吝指導,雖有艱難但也完成,感謝
回復

使用道具 舉報

ID:1050923 發表于 2022-11-11 12:06 來自手機 | 顯示全部樓層
lkc8210 發表于 2022-11-9 22:40

哈嘍,你可不可以幫我看一下,我的那個最后程序,現在傳感器2.3.4觸發,燈234也會亮,我的設計初衷是只有1亮了,2才能亮,12亮了3才能亮,123亮了4才能亮,指導一下唄
回復

使用道具 舉報

ID:855733 發表于 2022-11-11 15:57 | 顯示全部樓層
小菜苗 發表于 2022-11-11 12:06
哈嘍,你可不可以幫我看一下,我的那個最后程序,現在傳感器2.3.4觸發,燈234也會亮,我的設計初衷是只有 ...

你把 if(Sensor2==0)Flash2 = 1; if(Sensor3==0)Flash3 = 1; if(Sensor4==0)Flash4 = 1;   一層一層套進去不就好了嗎,只有1觸發,燈1亮,1觸發的前提下,2再觸發燈2亮,
回復

使用道具 舉報

ID:161164 發表于 2022-11-11 16:56 | 顯示全部樓層
小菜苗 發表于 2022-11-11 12:06
哈嘍,你可不可以幫我看一下,我的那個最后程序,現在傳感器2.3.4觸發,燈234也會亮,我的設計初衷是只有 ...
  1.                 if(Sensor1==0)Flash1 = 1;
  2.                 if(Flash1)if(Sensor2==0)Flash2 = 1;
  3.                 if(Flash2)if(Sensor3==0)Flash3 = 1;
  4.                 if(Flash3)if(Sensor4==0)Flash4 = 1;
復制代碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线播放中文字幕 | av网站免费观看 | 91精品国产高清一区二区三区 | 狠狠色综合网站久久久久久久 | 国产在线一区二区三区 | 成人福利在线 | 日本视频一区二区三区 | 久久久久国产一区二区 | 日韩精品一区二区三区在线观看 | 欧美精品一区二区三区四区五区 | 日韩亚洲视频 | 国产日韩欧美中文 | a毛片视频网站 | 色婷婷综合久久久中文字幕 | 成人免费一级视频 | h在线免费观看 | 亚洲人在线观看视频 | 久久久成人免费一区二区 | 亚洲一区久久 | 不卡的av电影 | 久草久草久草 | 先锋资源在线 | 国产成人久久精品 | 国产成人精品一区二区三区网站观看 | 精品一区二区三区四区 | 国产亚洲一区二区三区在线观看 | 久久大陆 | 在线观看毛片网站 | 自拍偷拍一区二区三区 | 盗摄精品av一区二区三区 | 精品乱子伦一区二区三区 | 亚洲精品电影网在线观看 | 欧美日韩在线精品 | 99精品国自产在线 | 亚洲一区免费 | 国产99久久精品一区二区永久免费 | 91在线观 | 欧美成人一区二免费视频软件 | 青青久草 | 天天看片天天干 | 日本色综合|