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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

下面是單片機按一次燈亮且報警,松開按鍵解除報警怎么改讓它按鍵按下報警,再按解除...

[復制鏈接]
跳轉到指定樓層
樓主
#include "reg51.h"         
void     delay(unsigned int i);
sbit K=P0^0;                     
sbit beep=P1^0;                  
sbit green=P1^1;                 
sbit red=P1^2;                  
void  main()
{
  green=0;     
  red=1;   
  while(1)
   {
     if(K==0)            
      {
        delay(200);   
        if(K==0)        
          {
            green=1;   
            red=0;      
            beep=0;     
            delay(100);
            red=1;      
            beep=1;  
               
         }
      }
     else
        green=0;     
   }
}

void     delay(unsigned int i)            
{
unsigned int k;
for(k=0;k<i;k++);
}


IIX@DE)[(OLQ@4[%9(1%5MO.png (44.32 KB, 下載次數: 42)

IIX@DE)[(OLQ@4[%9(1%5MO.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:752974 發表于 2022-9-23 15:12 | 只看該作者
可以采用計數的方法,定義一個變量,初始值為0,按一次按鍵加1,然后判斷變量的值,當變量等于1時報警,為2時接觸報警,同時清變量。
回復

使用道具 舉報

板凳
ID:1045628 發表于 2022-9-23 16:04 | 只看該作者
用一個變量做標識,
char a = 1;

if(K == 0)//這是檢測到按下的狀態?
{
if(a)
{
     a = 0;
     //報警亮燈代碼

    //
}
else
{
     a = 1;
     //解除報警,滅燈代碼

     //
}
}

不過你這個按鍵識別應該在軟件上做一個防抖動濾波

回復

使用道具 舉報

地板
ID:1045628 發表于 2022-9-23 17:33 | 只看該作者
rctty 發表于 2022-9-23 16:04
用一個變量做標識,
char a = 1;

這里的K == 0  改成按下到彈起整個過程的狀態,可以通過另一個變量來解決,
比如改成 b == 1,
就有
先判斷按下到談起的狀態
if(K == 0)//按鈕按下
{
     while(K == 0);//等待按鈕彈起
    b = 1;
}

當然,這里的while強制等待是不太合適的,這樣會卡住單片機的運行,可以通過定時器之類的方法進行改善


回復

使用道具 舉報

5#
ID:1045644 發表于 2022-9-24 09:52 | 只看該作者
munuc_w 發表于 2022-9-23 15:12
可以采用計數的方法,定義一個變量,初始值為0,按一次按鍵加1,然后判斷變量的值,當變量等于1時報警,為2 ...

可不可以寫一下具體程序,初學單片機,好多都還不懂
回復

使用道具 舉報

6#
ID:1045644 發表于 2022-9-24 10:17 | 只看該作者
rctty 發表于 2022-9-23 17:33
這里的K == 0  改成按下到彈起整個過程的狀態,可以通過另一個變量來解決,
比如改成 b == 1,
就有

你好,請問能不能幫我寫一下具體的程序,初學單片機然后有些還不是很懂,謝謝
回復

使用道具 舉報

7#
ID:176854 發表于 2022-9-24 15:51 | 只看該作者
根據上面的建議修改的程序

#include "reg51.h"         
void     delay(unsigned int i);
sbit K=P0^0;                     
sbit beep=P1^0;                  
sbit green=P1^1;                 
sbit red=P1^2;      
unsigned char Flag = 0;
void  main()
{
  green=0;     
  red=1;   
  while(1)
   {
     if(K==0)            
      {
        while(K==0);                       
        Flag = ~Flag;
      }
     if(Flag)
                 {
                   green=1;   
       red=0;      
       beep=0;     
       delay(100);
       red=1;      
       beep=1;
                 }
                 else
                 {
                   green=0;
                         red=1;
       beep=1;                         
                 }
   }
}

void     delay(unsigned int i)            
{
unsigned int k;
for(k=0;k<i;k++);
}

回復

使用道具 舉報

8#
ID:137736 發表于 2022-9-24 21:30 | 只看該作者
設置個標注位,按鍵翻轉標注位,檢測標注位決定是否報警。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本精品网站 | 久久精品国产久精国产 | 亚洲免费久久久 | 国产www成人 | 国产免费一区二区三区 | 一区二区在线 | 视频一区二区三区四区五区 | 国产精品久久久爽爽爽麻豆色哟哟 | 午夜电影网 | 亚洲精品久 | 久久精品中文字幕 | www.久久影视| 91国产在线视频在线 | 伊人免费在线观看高清 | 亚洲一区二区在线播放 | 色婷婷久久久久swag精品 | 色网在线看 | 中文字幕在线一 | 欧美视频免费在线 | 久草视频在线播放 | 小视频你懂得 | 在线色网 | 国产免费一区二区三区 | 男人电影天堂 | 在线观看免费高清av | 国产日韩欧美一区 | 久久成人激情 | 99热在线观看精品 | www日韩高清 | 女同久久另类99精品国产 | 国产精品96久久久久久 | 欧美高清hd| v片网站| 一区二区三区在线免费观看 | 久久99国产精品 | 99久久精品国产一区二区三区 | 深夜福利影院 | 老熟女毛片 | av官网在线 | 欧美三级在线 | 理论片午午伦夜理片影院 |