51單片機基礎:按鍵

上次咱們說的是數碼管,實際上數碼管要比按鍵難,不過跟後面的1602比還是不及的,今天要說的就是按鍵,按鍵控制可以說是一個單片機最基本的地方,在電子畢業設計中,基本上都有按鍵控制電路,51單片機的按鍵控制電路還是相當簡單的,就是識別0和1,也就是高低電平,但實際上還是有問題的,今天我們只說獨立按鍵,在畢業設計中,獨立按鍵也是應用最為廣泛的。老樣子,我們先來看看按鍵部分的電路原理圖:

51單片機基礎:按鍵

可以看到,按鍵由四個IO口控制,即P30——P33,而根據電路也可以知道,當按鍵按下去的時候,電路導通,此時電路聯通,為低電平,當鬆開按鍵,電路斷開,為高電平狀態。

原理圖

今天我們就來做一個最簡單的獨立按鍵的實驗,即用獨立按鍵控制LED燈的亮滅,我們看一下LED燈的電路:

51單片機基礎:按鍵

51單片機使用還是老規矩,我們先定義一下引腳:

51單片機基礎:按鍵

程序

大家看看註釋,我就不多說了,再看看主程序:

51單片機基礎:按鍵

有的人可能就會有疑惑了,為什麼識別按鍵按下之後還需要再識別一次呢。實際上這是為了消抖,那到底什麼是消抖。根據硬件按鍵原理圖可以知道,開發板上的按鍵是直接連接到IO口上的,那麼如果在按鍵按下的時候,會發生多次循環響應。51單片機的處理速度足夠整個while循環裡面的程序在一瞬間來回運行若干次了,那麼如果直接檢測按鍵的話,會出現很不穩定的情況。比如說按鍵控制數碼管上的數字依次加一,按一次就加一次。如果不進行消抖處理的話,那麼在你按下去的一瞬間,數字已經加了很多次了。所以在這裡用了軟件延時的消抖,避免重複檢測的情況。有人可能心想,為什麼不弄一個硬件消抖的電路呢,那當然可以,加一個電容就可以了,也稱之為電容按鍵,一般來說,stm32的開發板上都採用的電容按鍵,也就是硬件消抖,那樣根本無需再用軟件延時消抖了。

效果

那麼,到這裡就結束了,大家可以大致看看演示圖片:

51單片機基礎:按鍵




分享到:


相關文章: