和12岁小同志搞创客开发:检测按键状态的两件法宝
目錄
1、檢測電平變化,判斷按鍵狀態
2、使用中斷觸發,判斷按鍵狀態
機緣巧合在網上認識一位12歲小同志,從零開始系統輔導其創客開發思維和技巧。
???項目專欄:https://blog.csdn.net/m0_38106923/category_11097422.html?
按鍵是創客開發過程中必不可少的器件之一,用戶可以通過按鍵實現交互控制。例如:按鍵開關燈、長按按鍵解除報警、按鍵實現設備控制等功能。
檢測按鍵狀態有兩種方式:第一種,檢測按鍵端口的輸出電壓信號變化,判斷按鍵的狀態;第二種,按鍵狀態變化觸發中斷。
下面讓我們學習這兩種檢測按鍵狀態的方法~
1、檢測電平變化,判斷按鍵狀態
在如何驅動各類型傳感器?這篇文章中講到:可以將傳感器進行分類,主要包括:數字量輸出類型傳感器、數字量輸入類型傳感器、模擬量電壓類型傳感器、模擬量電流類型傳感器和協議類型傳感器。
按鍵本質上并不是傳感器,但是按照驅動方式來看,可當作數字量輸出類型傳感器,進行驅動。
可以通過按鍵的設計圖明白其中的原理,如下圖所示,假設TP點接入單片機IO端口,當按鍵未被按下時,此處為5V高電平,當按鍵被按下時,此處就會變為0V低電平,通過這種高、低電平狀態變化判斷按鍵的狀態變化。
那么設計按鍵控制LED亮、滅的程序就非常好理解了,如下所示:
2、使用中斷觸發,判斷按鍵狀態
我們在設計功能時,難免要用到延時,如果延時時間過長,可以發現按鍵就不那么靈敏了,主要原因在于:延時消耗過多的處理器資源,程序大多時間都運行在延時函數中,無法進行按鍵狀態的判斷。
這時候就需要使用中斷觸發功能了~
當控制器正在處理內部數據時,外界發生了緊急情況,要求CPU暫停當前的工作轉去處理這個緊急事件。處理完畢后,再回到原來被中斷的地址,繼續原來的工作,這樣的過程稱為中斷,過程如下所示:
可通過監測按鍵電平信號變化,觸發中斷,如下圖情況所示,當按鍵未按下,此時是5V高電平信號。
當按下按鍵瞬間,高電平會切換到低電平,產生下降沿信號,此時可觸發下降沿中斷。
?當松開按鍵瞬間,低電平會切換到高電平,產生上降沿信號,此時可觸發上降沿中斷。
中斷程序的實現也非常簡單,無需在主程序中設計程序,選擇合適的中斷信號觸發模式,將需要實現的功能寫在中斷處理函數中,當檢測到相應的觸發信號,中斷處理函數就可以運行了,如下所示:
?有一點需要注意,中斷處理函數適合處理“急件”,處理完畢后,再回到原來被中斷的地址,繼續原來的工作,所以不應該在中斷程序中有大量長時間的延時,以免對主程序產生影響。
總結
以上是生活随笔為你收集整理的和12岁小同志搞创客开发:检测按键状态的两件法宝的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LabVIEW纹理分析(基础篇—9)
- 下一篇: 和12岁小同志搞创客开发:如何使用继电器