性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

打破教科書上的按鍵檢測方法

傳統(tǒng)的教科書,無一例外都是采用delay的方法檢測按鍵,但是這種方法有很多缺陷,今天發(fā)一貼說說,各位大俠不要見笑,初級菜鳥可以借鑒。
傳統(tǒng)的處理方法:在第一次檢測到有鍵按下時(shí),執(zhí)行一段延時(shí) 10ms 的子程序以后再確認(rèn)該按鍵電平是否能保持閉合狀態(tài)的電平,如果保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下,從而消除抖動的影響. 
缺點(diǎn): 
1.  傳統(tǒng)的處理方法執(zhí)行 10ms 的延時(shí)子程序,會降低程序的實(shí)時(shí)性。 
2.  傳統(tǒng)的處理方法一次按鍵動作的確認(rèn),只檢測兩次,在高抗干擾環(huán)境下的會有按鍵的誤動作。
建議: 
1.  建議彈跳時(shí)間為 100ms 才可有效通過 EFT 雜訊認(rèn)證。 
2.  建議主程序中連續(xù)檢查 100ms 的穩(wěn)定低電平才可認(rèn)定按鍵按下成立。 
3.  相同道理連續(xù)檢查 100ms 高電平才可認(rèn)定按鍵彈起。 
4.  為了保證 MCU 的執(zhí)行效率,按鍵的檢測盡量不要使用 Delay 的方式,可以考慮采用輪詢檢測和計(jì)時(shí)器配合的方式進(jìn)行。

方法如下:
在發(fā)現(xiàn)低電平后,我們每一個(gè)循環(huán)(時(shí)基)去讀取一次電平,并與上次進(jìn)行比較,若是相同則計(jì)數(shù)器加 1,直至達(dá)到足夠的次數(shù)就進(jìn)行處理,否則計(jì)數(shù)器清零,重新開始。

全部回復(fù)(8)
正序查看
倒序查看
do_best
LV.2
2
2013-09-19 11:40
想法很不錯,支持樓主。之前用按鍵就遇到問題,有時(shí)候會誤操作
0
回復(fù)
黑夜11
LV.5
3
2013-09-29 21:31
@do_best
想法很不錯,支持樓主。之前用按鍵就遇到問題,有時(shí)候會誤操作
那么復(fù)雜,檢測兩次不見得比延時(shí)效率高
0
回復(fù)
2013-10-07 22:58

此法很有效而且有創(chuàng)意,我們類似問題也是這樣解決的

 

0
回復(fù)
madboy21
LV.8
5
2013-10-12 17:26
100mS就太長了,夠我們按幾下了
0
回復(fù)
464124801
LV.4
6
2013-11-27 10:43
這方法初開的都會用吧,我就一個(gè)初學(xué)的,第一次玩單片機(jī),寫的第一個(gè)程序手電筒控制3級調(diào)光加安下3秒跳閃光我就知道用了,循環(huán)4次,
0
回復(fù)
rsszd
LV.6
7
2013-12-01 19:55

你這樣的監(jiān)測,我有個(gè)問題:

如果你采用計(jì)數(shù)(記夠設(shè)定的次數(shù)),你的監(jiān)測次數(shù)是累加,如果這個(gè)監(jiān)測信號總是不穩(wěn),假如存在干擾,因?yàn)槭抢奂?它只要夠次數(shù)就動作,此時(shí)就是誤判,如何避免這個(gè)問題呢?

這個(gè)方法我認(rèn)為還是不夠完善

0
回復(fù)
464124801
LV.4
8
2013-12-05 02:52
@rsszd
你這樣的監(jiān)測,我有個(gè)問題:如果你采用計(jì)數(shù)(記夠設(shè)定的次數(shù)),你的監(jiān)測次數(shù)是累加,如果這個(gè)監(jiān)測信號總是不穩(wěn),假如存在干擾,因?yàn)槭抢奂?它只要夠次數(shù)就動作,此時(shí)就是誤判,如何避免這個(gè)問題呢?這個(gè)方法我認(rèn)為還是不夠完善
這不是累加的,只是多判定幾次,好比你按下開關(guān)是0。3S,那么4次判定就在0。2S完成,4次中有一次不成立都會從新判定4次。
0
回復(fù)
rsszd
LV.6
9
2013-12-05 12:53
@464124801
這不是累加的,只是多判定幾次,好比你按下開關(guān)是0。3S,那么4次判定就在0。2S完成,4次中有一次不成立都會從新判定4次。

你實(shí)際寫過調(diào)試過嗎?

想法我覺得還可以,實(shí)現(xiàn)起來可能并不太可靠

不知你有沒有實(shí)際試過?

0
回復(fù)
發(fā)