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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機按鍵控制LED的實現 感謝各位大佬抽空回復

[復制鏈接]
跳轉到指定樓層
樓主
ID:685954 發表于 2020-7-24 11:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位大佬,請教一個單片機問題,如一個按鍵按一次   控制一個LED常亮,并倒計時2分鐘后熄滅,但是按鍵并未清零,下次想點亮LED的時候,還需要多按一次按鍵(相當于關閉), 我想問下怎么使下次點亮LED時候,只需要按一次點亮就行,是不是需要在定時器結束時候按鍵取反下,但是按鍵不是自鎖式的,所以應該怎么實現呢?感謝各位大佬抽空回復
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:739325 發表于 2020-7-24 14:20 | 只看該作者
說一下我的思路哈。首先判斷按下是否按下,按下之后產生一個LED標記。若是按鍵松手則復位按鍵。那么可以通過這個按下按鍵產生的LED標記去控制燈的亮滅,例如燈需要亮兩分鐘,那么在兩分鐘后將LED標記清0即可
回復

使用道具 舉報

板凳
ID:451718 發表于 2020-7-24 14:52 | 只看該作者
本帖最后由 robinsonlin 于 2020-7-24 15:18 編輯

#define K1                    P37
#define LED                    P36

unsigned long SysTick;
unsigned char KFlag;

void Delay10ms()                //@22.1184MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 1;
        j = 216;
        k = 35;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}
void Timer0Init(void)                //1毫秒@22.1184MHz
{
        AUXR |= 0x80;                //定時器時鐘1T模式
        TMOD &= 0xF0;                //設置定時器模式
        TL0 = 0x9A;                //設置定時初值
        TH0 = 0xA9;                //設置定時初值
        TF0 = 0;                //清除TF0標志
        TR0 = 1;                //定時器0開始計時
}

void main()
{
    K1 = 1;
    LED = 0;
    KFlag = 1;      Timer0Init() ;
   EA = 1;

    while(1)
    {
         if(K1==0 && KFlag==1)
         {
             Delay10ms();
             if(K1==0 && KFlag==1)
             {
                 T1 = SysTick;
                 KFlag = 0;
                 //LFlag = 1;
                 LED = 1;
             }
         }

         if(K1==0 && LED==1)
         {
             Delay10ms();
             if(K1==0 && LED==1)
             {            
                 LFlag = 0;
                 LED = 0;
             }
         }

         if((SysTick-T1)>=120000 && LED==1)
         {
             LED = 0;
             LFlag = 0;
         }
    }
}


void tm0_isr() interrupt 1         //中斷入口
{
        SysTick++;
}


回復

使用道具 舉報

地板
ID:636538 發表于 2020-7-24 17:22 | 只看該作者
你可以做個標志位,當按鍵再次按,下倒計時2分鐘就清零關閉LED,不再進入倒計時2分鐘,再次按下點亮并倒計時2分鐘后熄滅
回復

使用道具 舉報

5#
ID:454000 發表于 2020-7-24 19:00 | 只看該作者
@壇子,找一些案例來練練就什么都整明白了,不要整天的想這樣想那樣又不想自己動手敲代碼,是學不了什么東東的
回復

使用道具 舉報

6#
ID:452950 發表于 2020-7-24 19:05 | 只看該作者
LED亮的條件加一個就好了,
按鍵按下且標志為1時LED亮2分鐘同時標志置零,
按鍵按下且標志為0時LED不動,標志置一
回復

使用道具 舉報

7#
ID:808700 發表于 2020-7-28 11:45 | 只看該作者
弄個變量a=0,按一下按鍵,a+1;判斷a值,燈亮倒計時,時間到了,a清0,燈滅
回復

使用道具 舉報

8#
ID:685954 發表于 2020-7-28 14:43 | 只看該作者
謝謝大家回復,這個問題已經通過標志位解決,謝謝大家提供思路
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲天天干 | 日韩在线观看中文字幕 | 国产日产欧产精品精品推荐蛮挑 | 国产精品久久久久久久久久久新郎 | 国产人免费人成免费视频 | 午夜精品在线 | 欧美一级免费 | h在线看| 国产日韩久久 | 中文字字幕在线中文乱码范文 | 国产亚洲黄色片 | 日韩一区精品 | 一本岛道一二三不卡区 | 超碰精品在线观看 | 女人天堂av | 午夜在线 | 免费av直接看 | 男女下面一进一出网站 | 久久精品国产a三级三级三级 | 国产在线小视频 | 一区二区三区亚洲精品国 | 91不卡 | 国产精品久久久久久婷婷天堂 | 高清一区二区视频 | 91精品久久久久久久久久入口 | 亚洲精品亚洲人成人网 | 色婷婷av一区二区三区软件 | 日本福利视频免费观看 | 国产精品久久久久久久久久久久久久 | 在线观看特色大片免费网站 | 中文字幕亚洲区一区二 | 久久91| 日韩一区二区三区在线 | 国产成人av电影 | 九九热在线视频 | 久久国产精品一区二区三区 | 欧美二区三区 | 国产精品久久久久久久久免费相片 | 日日噜噜噜夜夜爽爽狠狠视频97 | 精品国产一区二区 | 亚洲精品视频在线播放 |