找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 5725|回復: 9
打印 上一主題 下一主題
收起左側(cè)

如何結(jié)合單片機定時器實現(xiàn)按鍵按一下燈閃爍一次(我是菜鳥)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:358564 發(fā)表于 2019-8-21 16:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
cnt=0;
按鍵按下;cnt++;

if(cnt>3)
{
cnt=0;
}

要求按鍵每按一次燈閃爍一次,不能用delay(100)
這樣子的延時函數(shù),我寫不出來,求大神幫忙。。。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:332444 發(fā)表于 2019-8-21 20:53 | 只看該作者
假設(shè)LED=0亮;按鍵=0表示按下,那么,LED=按鍵按下;即可
回復

使用道具 舉報

板凳
ID:267330 發(fā)表于 2019-8-21 21:27 | 只看該作者
用中斷啊
回復

使用道具 舉報

地板
ID:602531 發(fā)表于 2019-8-21 23:03 | 只看該作者
結(jié)合定時器去做就好
回復

使用道具 舉報

5#
ID:437615 發(fā)表于 2019-8-21 23:14 | 只看該作者
這個要學一下,不是用定時器,用外中斷0,外中斷很容易,就三句EA=1;EX0=1;IT0=0;不過中斷服務(wù)內(nèi)閃燈還會用到延時
回復

使用道具 舉報

6#
ID:462827 發(fā)表于 2019-8-22 00:47 | 只看該作者
不能用delay就用定時中斷唄
回復

使用道具 舉報

7#
ID:138097 發(fā)表于 2019-8-22 08:29 | 只看該作者
if(按鍵按下)
{
開啟定時器中斷;
}


void 定時器中斷函數(shù)(100ms)
{
LED = !LED;
關(guān)定時器中斷;
}
回復

使用道具 舉報

8#
ID:65956 發(fā)表于 2019-8-22 08:47 | 只看該作者
如果只是想按一下按鍵燈閃一下,那連定時器都不需要,三種方法,一種是放在你按鍵函數(shù)中去作,因為你按鍵時軟件有防抖,所以時間足夠燈閃一下了;另一種是設(shè)置一個標志位,按下按鍵時標志位置1,在主函數(shù)中判斷該標志位,是1先清標志位后則燈閃一下,但這個需要用到延時函數(shù);第3種就是用定時器,你按下按鍵時打開定時器,定時器設(shè)置多少時間后LED亮多久,時間到即關(guān)閉LED燈并關(guān)閉定時器,這樣就可以了
回復

使用道具 舉報

9#
ID:214223 發(fā)表于 2019-8-22 09:40 | 只看該作者

cnt=0;按鍵按下;cnt++;

if(cnt>3)
{
cnt=0;
}

首先我覺得延時函數(shù)很簡單,相較于定時器,不如采用延時。
其次就樓主簡單的程序我覺得你可能是想通過按鍵按一下亮,按一下不亮
那么
可以這樣寫:
cnt=0;
cnt++;

if(a%2==0)
D1=1;//關(guān)
if(a%2==1)
D1=0;//開
這樣就可以實現(xiàn)按鍵奇數(shù)次亮,偶數(shù)次滅。不要忘了寫按鍵消抖。
回復

使用道具 舉報

10#
ID:601639 發(fā)表于 2019-8-22 10:00 | 只看該作者
按鍵程序要設(shè)置一個消抖,檢測到按鍵彈起是定時器開始計數(shù),同時點亮燈,定時時間到后,燈滅。也可以設(shè)置一個標志位,當按下時,標志位置1,時間到時標志位置0;在主函數(shù)里面檢測到標志位時燈亮,標志位為0時燈滅。
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表