第一節 按鍵的基本知識
按鍵按照結構原理可分為兩類,一類是觸點式開關按鍵,如機械式開關、導電橡膠式開關燈;另一類是無觸點式開關按鍵,如電氣式按鍵,磁感應按鍵等。前者造價低,后者壽命長。目前,微機系統中最常見的是觸點式開關按鍵。
在單片機應用系統中,除了復位按鍵有專門的復位電路及專一的復位功能外,其他按鍵都是以開關狀態來設置控制功能或輸入數據的。當所設置的功能鍵或數字鍵按下時,計算機應用系統應完成該按鍵所設定的功能,按鍵信息輸入時與軟件結構密切相關的過程。
對于一組按鍵或一個鍵盤,總有一個接口電路與MCU相連。MCU可以采用查詢或中斷方式了解有無將按鍵輸入,并檢查是哪一個按鍵按下,將該鍵號送入程序,然后通過指令轉入執行該鍵的功能程序,執行完成后再返回主程序。
按鍵通常使用機械觸點式按鍵開關,其主要功能式把機械上的通斷轉換為電氣上的邏輯關系。也就是說,它能提供標準的TTL邏輯電平,以便于通用數字系統的邏輯電平相容。機械式按鍵再按下或釋放時,由于機械彈性作用的影響,通常伴隨有一定的時間觸點機械抖動,然后其觸點才穩定下來。
抖動時間的長短與開關的機械特性有關,一般為5~10ms。在觸點抖動期間檢測按鍵的通與斷,可能導致判斷出錯,即按鍵一次按下或釋放錯誤的被認為是多次操作,這種情況是不允許出現的。為了克服按鍵觸點機械抖動所致的檢測誤判,必須采取消抖措施。硬件的消抖方案有很多種:在按鍵引腳與微控制器之間添加外部電路元件,如電容、電阻或Schmitt觸發器等,這些電路元件可以濾除按鍵的電氣噪音,提供更穩定的電平信號。
單片機控制系統中,如果只需要幾個功能鍵,此時,可采用獨立式按鍵結構。獨立按鍵式直接用I/O口構成的單個按鍵電路,其特點式每個按鍵單獨占用一根I/O口,每個按鍵的工作不會影響其他I/O口的狀態。獨立式按鍵電路配置靈活,軟件結構簡單,但每個按鍵必須占用一個I/O口,因此,在按鍵較多時,I/O口浪費較大,不宜采用。
獨立按鍵的軟件常采用查詢式結構。先逐位查詢與I/O口的輸入狀態,如某一根I/O口輸入為低電平,則可確認該I/O口所對應的按鍵已按下,然后,再轉向該鍵的功能處理程序。
單片機按鍵一般通過配備上拉電阻來實現輸入端高低電平的切換。
4條輸入線接到單片機的IO口上,當按鍵K1按下時,+5V通過電阻R1然后再通過按鍵K1最終進入GND形成一條通路,那么這條線路的全部電壓都加到了R1這個電阻上,KeyIn1這個引腳就是個低電平。當松開按鍵后,線路斷開,就不會有電流通過,那么KeyIn1和+5V就應該是等電位,是一個高電平。我們就可以通過KeyIn1這個IO口的高低電平來判斷是否有按鍵按下。
第二節 硬件解讀
從圖中我們可以看出,藍橋杯物聯網開發板上面有2個可編程按鍵,分別連接到PA8和PB8。如果PA8是高電平,就證明按鍵沒有被按下,反之則被按下。
第三節 CubeMX配置
第一步:配置PA8和PB8為輸入模式,如下:
第二步:配置GPIO為上拉,并配置用戶標簽,如下圖,
其中:具體配置信息如下:
GPIO mode:表示輸入模式,固定可為輸入模式(Input mode);
GPIO Pull-up/Pull-down:表示是否上下拉,可配置為上拉(Pull-up)或者下拉(Pull-down)或不上拉也不下拉(No Pull-up and no Pull-down);
User Label:表示用戶標簽,可修改IO口名稱,比如可寫入KEY,把IO口名稱變為KEY;
第四節 MDK代碼
結合上圖,可以看出需要20ms的消抖時間。所以按鍵的模板代碼如下:
不要忘記在.h文件中聲明哦:
最后我們在while中讀取按鍵,就可以啦:
第五節 實驗現象
注意:
2,請選擇A開發板。
現象:
1,按下按鍵ASW1,AL1翻轉一次。
2,按下按鍵ASW2,AL2翻轉一次。
來源:撞上電子微信公眾號
版權:東莞市東城墨竹公子電子工作室
日期:2024.11.03
第六節 課后作業
按下按鍵ASW1,AL3翻轉。
-
單片機
+關注
關注
6039文章
44583瀏覽量
636526 -
GPIO
+關注
關注
16文章
1213瀏覽量
52184 -
藍橋杯
+關注
關注
1文章
129瀏覽量
10161
發布評論請先 登錄
相關推薦
評論