收到小伙伴的來信,怎樣區分按鈕的短按(按下后松開)與長按(按下并保持一段時間)。說實話,在工業現場,按鈕長按來實現某個功能使用的并不多。我曾經在某個信號需要人工確認時使用了長按功能,當時是結合定時器與按鈕的輸入信號來實現的。要實現按鈕的短按與長按的區分,我提供一種思路供大家參考。

基本思路:
使用沿信號配合定時器指令。如果在短時間內檢測到了該信號的上升沿及下降沿,則認為按鈕是短按狀態;如果在某個時間內(比如2秒鐘),只檢測到了該信號的上升沿而沒有下降沿,則認為按鈕是長按狀態;
結合這個思路我使用SCL語言實現了一個函數塊FB5020_BtnClickHold,其變量聲明如下圖所示:

其中:
signal:要檢測的按鈕信號(或其它類似信號);
R:用于復位內部變量;
timeCheck:用于檢測的時間,默認2秒;
click:按鈕是短按狀態;
hold:按鈕是長按狀態;
注:短按與長按不會同時為TRUE。為保證正確,應在獲取信號后使用R對內部靜態變量進行復位;
代碼如下圖所示:

這段代碼我已經測試過,如果你有任何問題或其它思路,歡迎留言交流。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
定時器
+關注
關注
23文章
3368瀏覽量
123597 -
按鈕
+關注
關注
0文章
134瀏覽量
13460
發布評論請先 登錄
相關推薦
熱點推薦
如何利用定時器區分長按和短按?
范圍:0.1V~5.0V),閾值調整完成后,再次按下S7按鍵,退出"設置"界面(圖6),返回數據顯示界面。”如何利用定時器區分長按和短按?解決思路
發表于 01-21 06:54
基于狀態機的單片機按鍵短按長按功能的實現
本文主要介紹了基于狀態機的單片機按鍵短按長按功能的實現,按鍵的擊鍵過程也是一種狀態的切換,也可以看著是一個狀態機,一個按鍵的擊鍵過程包括:按下、抖動、閉合、抖動和釋放等狀態。本次系統的設計,能實現按鍵的短按和
發表于 12-28 08:43
?2.1w次閱讀
按鍵長按短按復用_MCS-51
//長按短按復用void key_int(void){ if (key == 0) { delay1ms(10);//消除前部抖動 if (key == 0) { flag
發表于 12-05 09:21
?5次下載
實現按鈕的短按與長按的區分
在工業現場,按鈕長按來實現某個功能使用的并不多。我曾經在某個信號需要人工確認時使用了長按功能,當時是結合定時器與按鈕的輸入信號來實現的。
RL78/G23 SMS 短信按鈕長按/短按判斷應用說明
電子發燒友網站提供《RL78/G23 SMS 短信按鈕長按/短按判斷應用說明.pdf》資料免費下載
發表于 01-29 11:03
?0次下載
TPS3423 毫微功耗雙按鈕控制器,具有短按和長按差異化技術手冊
TPS3423 和 TPS3424 是按鈕控制器,可提供廣泛的短按和長按獨立檢測功能。這些器件每個按鈕提供多達兩個輸出(RESET 和 INT),可用于各種用例,包括啟用穩壓器或斷路器
如何區分按鈕的短按與長按?
評論