找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2753|回復(fù): 7
收起左側(cè)

單片機聲光報警程序,如何實現(xiàn)按住觸摸按鍵,LED開始閃爍,松開觸摸按鍵LED立即滅

[復(fù)制鏈接]
ID:902929 發(fā)表于 2021-4-11 00:12 | 顯示全部樓層 |閱讀模式
2222.png
回復(fù)

使用道具 舉報

ID:884042 發(fā)表于 2021-4-11 01:13 | 顯示全部樓層
這里將K1用作觸摸按鍵,1為松開,0為按下。LED作為燈
代碼:if(K1 == 0)
{
     LED=1;
     DELAY(3000);//延時
     LED=0;
     DELAY(3000);//延時
}
else

     LED=1;
回復(fù)

使用道具 舉報

ID:902929 發(fā)表于 2021-4-11 10:30 | 顯示全部樓層
xjx51 發(fā)表于 2021-4-11 01:13
這里將K1用作觸摸按鍵,1為松開,0為按下。LED作為燈
代碼:if(K1 == 0)
{

按照你這樣確實可以實現(xiàn),按住亮松開滅;可能我沒有描述清楚,我的意思按住觸摸按鍵,for語句一直運行LED閃爍,突然松開按鍵,LED滅;待再次按觸摸按鍵,LED開始閃爍,松開LED即滅。
回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2021-4-11 16:20 | 顯示全部樓層
#include <reg51.h>

sbit key=P1^0;
sbit LED=P1^1;

bit flag;
unsigned char num;

void InitTimer0(void)//50ms@12MHz
{
    TMOD = 0x01;
    TH0 = 0x3C;
    TL0 = 0xB0;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}

void main(void)
{
    InitTimer0();
    while(1)
    {
                if(!key)flag=1;
                else flag=0;
        }
}

void Timer0Interrupt(void) interrupt 1
{
        TH0 = 0x3C;
        TL0 = 0xB0;
        if(flag)
        {
                num++;
                if(num>=2)
                {
                        num=0;
                        LED=~LED;//低電平亮,閃爍頻率5Hz
                }
        }
        else
        {
                num=0;
                LED=1;
        }
}
回復(fù)

使用道具 舉報

ID:895574 發(fā)表于 2021-4-11 18:02 | 顯示全部樓層
不是led=!led么,然后滅就是led為0么
回復(fù)

使用道具 舉報

ID:668885 發(fā)表于 2021-4-12 11:07 | 顯示全部樓層
LED取反也可以(不管它具體狀態(tài)),或者直接設(shè)定LED=0
回復(fù)

使用道具 舉報

ID:883031 發(fā)表于 2021-4-12 13:55 | 顯示全部樓層
清冷蕭然 發(fā)表于 2021-4-11 10:30
按照你這樣確實可以實現(xiàn),按住亮松開滅;可能我沒有描述清楚,我的意思按住觸摸按鍵,for語句一直運行LED ...

用for語句,執(zhí)行不了其他動作,cpu的利用率會大大降低。
回復(fù)

使用道具 舉報

ID:332214 發(fā)表于 2021-4-12 17:02 | 顯示全部樓層
為什么要把檢測按鈕狀態(tài)與燈的閃爍狀態(tài)放在一個順序邏輯上?外部中斷、定時器都可以作為檢測按鈕狀態(tài)來設(shè)置標(biāo)志位,主程序執(zhí)行燈閃爍與滅。條件滿足啥執(zhí)行啥,中斷與定時器不影響主程序執(zhí)行。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表