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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

怎樣讓單片機程序按鍵后執行一次就停止呢

  [復制鏈接]
跳轉到指定樓層
樓主
ID:603592 發表于 2019-8-30 21:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
就比如兩個按鍵控制一個LED 按下按鍵1: LED亮1秒后滅 (只亮一次不循環 )
按下按鍵1: LED亮2秒后滅 (只亮一次不循環 )
像按下去閃爍直接取反就好了 那亮一次改怎么弄  思路框架應該是什么樣的

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:370639 發表于 2019-8-31 08:26 | 只看該作者
檢測按鍵;亮;延時1秒;滅,就這么簡單
回復

使用道具 舉報

板凳
ID:56665 發表于 2019-8-31 09:01 | 只看該作者
陌上輕雨寒 發表于 2019-8-31 08:26
檢測按鍵;亮;延時1秒;滅,就這么簡單

你這個放while循環里面會一直閃爍的,雖然你想它只執行一次,樓主肯定也試過。
回復

使用道具 舉報

地板
ID:605695 發表于 2019-8-31 09:07 | 只看該作者
等待按鍵,按鍵按下任務執行,執行完進入死循環,只有等單片機重啟才能再按按鍵。如果想按一次以后都不能用,那就在后備寄存器或者可存儲芯片里存標識,上電讀取標識位是否按下過。
回復

使用道具 舉報

5#
ID:604919 發表于 2019-8-31 09:33 | 只看該作者
你對單片機還沒有理解清楚!單片機你可以理解它只執行一次。如果沒有循環,它就只運行一次。
回復

使用道具 舉報

6#
ID:604919 發表于 2019-8-31 09:34 | 只看該作者
比如:LED=1,如只有這么一條語句,你打開單片機,它就會只會執行一次。
回復

使用道具 舉報

7#
ID:604919 發表于 2019-8-31 09:35 | 只看該作者
你想要執行很多次,就得加循環。while(1)。
回復

使用道具 舉報

8#
ID:604919 發表于 2019-8-31 09:37 | 只看該作者
如果你用兩個按鍵來控制一個LED燈,不需要加循環,就只執行一次。
回復

使用道具 舉報

9#
ID:604919 發表于 2019-8-31 09:38 | 只看該作者
1,先用一個循環監聽是按下按鍵1還是按鍵2,記得加按鍵延遲。
回復

使用道具 舉報

10#
ID:604919 發表于 2019-8-31 09:38 | 只看該作者
在按鍵里分別對應LED亮的時間長度。
回復

使用道具 舉報

11#
ID:604919 發表于 2019-8-31 09:40 | 只看該作者
比如按按鍵1,亮1秒后停止。LED=1 ;延遲1秒,LED=0;這就完成了按鍵1的功能。
回復

使用道具 舉報

12#
ID:604919 發表于 2019-8-31 09:41 | 只看該作者
再按鍵2也是一樣。LED=1,延遲2秒,LED=0;完成了按鍵2的操作。
回復

使用道具 舉報

13#
ID:604919 發表于 2019-8-31 09:42 | 只看該作者
說得那么詳細應該明白了吧?LED=1燈亮,LED=0燈滅。
回復

使用道具 舉報

14#
ID:604919 發表于 2019-8-31 09:44 | 只看該作者
如果你想弄復雜一點,比如我想連續按1二次,就會自動執行2,你可以加個計數參數。
回復

使用道具 舉報

15#
ID:604919 發表于 2019-8-31 09:53 | 只看該作者
你要理解兩個點:
1,單片機程序原本就只會執行一次。是我們為了讓單片機一直執行下去,才加了循環。也就是說,不加循環,就只執行一次。
2,燈亮和滅無非就是0和1.單片機的腳出來的無非就是0和1,燈亮就是LED=1,燈滅就是LED=0;取反是算法更簡單而已。
兩個按鍵控制一個LED,按鍵判斷需要循環進行,
先判斷是哪個按鍵按下了,再決定LED亮燈的時間長度。判斷按鍵的時候記得加上延遲去抖動。
比如:按鍵1按下,延遲0.005秒,再判斷是否是按鍵1按下,如果是,執行   LED=1,延遲1秒,LED=0;
按鍵2按下,延遲0.005秒,再判斷是否是按鍵2按下,如果是,執行   LED=1,延遲2秒,LED=0;
這么詳細,應該明白了吧?


回復

使用道具 舉報

16#
ID:149144 發表于 2019-8-31 10:01 | 只看該作者
可以說詳細點嗎
兩個按鍵控制…… 按下按鍵 1  …… 按下按鍵 1  ……
只按按鍵 1  為什么還要兩個按鍵,一個按鍵就可以了。
按下按鍵要松手嗎,按著的時候燈亮滅,還是松開的時候再執行 ?
回復

使用道具 舉報

17#
ID:516309 發表于 2019-9-2 08:23 來自手機 | 只看該作者
引用標志位不知是否可以
回復

使用道具 舉報

18#
ID:606526 發表于 2019-9-3 12:09 | 只看該作者
不加循環
回復

使用道具 舉報

19#
ID:505787 發表于 2019-9-4 17:55 | 只看該作者
led點亮,掃描案件,按鍵按下檢查是哪個按鍵,去抖。進入一個在shile里面搞倆個while(1)里面設置好定時關閉就行了。燈不亮即便再關也沒有問題
回復

使用道具 舉報

20#
ID:601639 發表于 2019-9-5 11:03 | 只看該作者
設置個標志位不就行了,按一次,標志位+1,檢測不到標志位,燈就不會再亮了。想什么時候亮,再把標志位置位回來。
回復

使用道具 舉報

21#
ID:547839 發表于 2019-9-5 20:32 | 只看該作者
用標志位,按鍵讀取高低電平,然后判斷條件。或者用中斷,外部中斷
回復

使用道具 舉報

22#
ID:484951 發表于 2019-9-5 21:57 | 只看該作者
用中斷,在中斷服務函數里面啟動LED延時之后關閉
回復

使用道具 舉報

23#
ID:608245 發表于 2019-9-6 06:11 | 只看該作者
1)main函數里不寫控制邏輯,只寫初始化代碼。控制LED的邏輯寫在外部中斷里。
回復

使用道具 舉報

24#
ID:608245 發表于 2019-9-6 06:13 | 只看該作者
2)不開中斷,在main函數里不斷檢測兩個按鍵狀態。同時用兩個全局變量記錄燈是不是已經亮過了。如果沒亮過那么檢測到按鍵按下就點亮。如果已經亮過了那即使檢測到按鍵按下也不點亮。
回復

使用道具 舉報

25#
ID:426861 發表于 2019-9-6 10:42 | 只看該作者
條件判斷啊,C語言的基礎知識
回復

使用道具 舉報

26#
ID:584556 發表于 2019-9-6 15:25 | 只看該作者
這種問題入門后都比較簡單了,第一步先檢查按鍵是否按下,如果按下則執行你的操作(如點燈),判斷按鍵是否松開,如果按鍵松開則不進行操作(如熄滅燈)
回復

使用道具 舉報

27#
ID:1005338 發表于 2022-5-24 10:45 | 只看該作者
void main()
{       
                LED1=0;        //點亮
                delay_ms(5000); //大約延時450ms
                LED1=1;        //熄滅
                delay_ms(5000);        
}
像以上程序,雖然沒有循環,但實際運行起來后一直不停地亮、滅、亮、滅,這是為什么?
回復

使用道具 舉報

28#
ID:1029096 發表于 2022-5-24 10:48 | 只看該作者
用個if語句
回復

使用道具 舉報

29#
ID:1004455 發表于 2022-5-24 11:11 | 只看該作者
不要寫在while里面就不會一直循環,寫個按鍵,當按鍵按下led燈亮一下就好了
回復

使用道具 舉報

30#
ID:1005338 發表于 2022-5-24 11:27 | 只看該作者
LXJG 發表于 2022-5-24 11:11
不要寫在while里面就不會一直循環,寫個按鍵,當按鍵按下led燈亮一下就好了

如果寫個按鍵是可以解決,那是因為按鍵沒有被再次按下,就不會再亮燈。
但上面這個簡單的程序中,明顯是沒有while循環的,為什么程序會重復執行呢?
我一直也有這個困惑,main主程序是不是一直會自動重復循環?結束了再從頭再來?51單片機是不是默認的就是這樣?
回復

使用道具 舉報

31#
ID:1005338 發表于 2022-5-24 12:05 | 只看該作者
51好黑電子論壇 發表于 2019-8-31 09:33
你對單片機還沒有理解清楚!單片機你可以理解它只執行一次。如果沒有循環,它就只運行一次。

我試過多次了,雖然沒有while,它也會重復執行main
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: aaa一区| 国产精品美女久久久久久久久久久 | 亚洲成人自拍 | 日本久草视频 | 婷婷久久网 | 精品日韩一区 | 黄色毛片在线播放 | 日韩一区二区三区在线观看 | 99久久久久久 | 欧美久久久久久久久 | 国产精品综合视频 | 91在线看片 | 不卡视频一区二区三区 | 日韩福利电影 | av网站免费观看 | 日韩在线视频免费观看 | avav在线看 | 亚洲成人免费 | 狠狠色狠狠色综合日日92 | 亚洲一级视频在线 | 亚洲视频二区 | 国产视频一区二区 | 精品视频网| av在线成人 | 超碰人人插 | 亚洲成人一区 | jlzzjlzz国产精品久久 | 亚洲欧美国产毛片在线 | 男女精品网站 | 亚洲精品1区2区3区 91免费看片 | 免费一二区 | 久久久久久久久久久丰满 | 亚洲视频中文字幕 | 欧美日韩国产一区二区三区 | 请别相信他免费喜剧电影在线观看 | 成人在线观看黄 | 成人日韩| 91视频在线看 | 成人美女免费网站视频 | 欧美中文字幕在线观看 | 户外露出一区二区三区 |