新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 標記的用法,用一個按鍵控制1個LED燈的亮滅,按鍵去抖

        標記的用法,用一個按鍵控制1個LED燈的亮滅,按鍵去抖

        作者: 時間:2016-11-25 來源:網絡 收藏
        我們學習怎么用一個按鍵K1控制1個LED燈的亮和滅兩種狀態。按一次K1燈亮,再按一次K1燈滅。再按一次又亮,再按一次又滅。
        我們學習一下用一個bit變量來做一個標記,然后在按鍵的控制下,這個標記會變化,再根據這個標記的值,LED也輸出不同的狀態。
        因為按鍵按下時可能會有抖動的情況,每次按下時,可能會發生了人難以覺察到的多次抖動,相當于一下子按下了很多次。這會導致程序無法識別出您真正的按鍵意圖。
        但是抖動一般都是發生在剛按下鍵和松開鍵的時候,所以,我們只要避開這一段時間,等鍵穩定按下或者松開時,再去讀它的值,一般就可以正確讀取了。
        所以,當讀到第一次按鍵的值時,要延時等待一會,再處理。在松開后,也延時一會,免得檢測到松開的抖動以為又有按鍵。(注,更復雜的應用,需要在按下延時之后重新驗證按鍵,為了簡化和方便理解,這個例程里沒有這樣做。)
        另外,因為程序是循環運行的,當一次按鍵處理后,又會再循環回來繼續檢測,如果您的按鍵這時還沒有松開,又會被讀到一次新的按鍵,并做處理。所以我們還要做一個特殊的處理,識別到一個按鍵并處理完成之后,還要等待這個按鍵松開后,再繼續循環運行。
        看程序:


        請根據例程里的注釋理解程序。
        請編譯,進入仿真,全速運行,看結果。
        全速后,由于light變量初始化時默認為0,所以燈是亮的。按下K1,松開后,燈滅了;再按一次K1,松開后,燈滅了。
        這個例子里,我們只用一個按鍵就控制了燈的亮滅,這種方法可以節省了硬件資源,也就是節省了硬件成本。在實際項目設計中,有成本優勢,產品就更具競爭力。所以我們應該多學習類似的可以節省資源的方法。
        作業:
        改為4個按鍵,分別控制4個LED的亮和滅。相當應用到多個房間的單鍵開關燈共用一個cpu處理。


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 岳普湖县| 平武县| 光山县| 木里| 西和县| 高邑县| 普安县| 虞城县| 德令哈市| 枝江市| 轮台县| 佳木斯市| 宜城市| 衡水市| 阿图什市| 五台县| 福安市| 团风县| 渝北区| 江口县| 桐柏县| 遂宁市| 梁山县| 嵊州市| 娱乐| 沧源| 锦屏县| 常州市| 麦盖提县| 汶上县| 娱乐| 株洲市| 彰化市| 京山县| 合阳县| 吉林市| 奉节县| 江川县| 会东县| 堆龙德庆县| 枣庄市|