第一節基本原理
鍵盤在單片機應用系統中能夠實現向單片機輸入數據、傳送命令的功能,是人工干預單片機的主要手段。下面介紹鍵盤的工作原理、鍵盤按鍵的識別過程和識別方法以及鍵盤與單片機的接口和編程。
在進行鍵盤使用之前,需要先了解一下鍵盤的工作原理。以下將分三個部分介紹鍵盤的工作原理。
1.鍵盤輸入的特點鍵盤實質上是一個按鍵開關的集合。通常鍵盤的開關為機械彈性開關,利用的是機械觸點的合斷特性。一個電信號通過機械觸點的斷開、閉合過程,其行線電壓輸出波形如圖所示。
圖中t1和t3是鍵閉合和斷開過程中的抖動期,抖動時間長短和機械特性有關,一般為5~10ms;t2為穩定的閉合期,時間由按鍵動作所決定;一般為十分之幾到幾秒;t0、t4為斷開期。
2.按鍵的確認按鍵的閉合與否反映在行線輸出電壓是高電平還是低電平上,如果高電平表示斷開,則低電平表示鍵閉合,通過對行線電平的檢測從而判斷是否有按鍵被按下。
3.消除按鍵抖動消除按鍵的抖動通常有軟件和硬件兩種方法。硬件消抖一般采用雙穩態消抖電路,如下圖所示。圖中兩個與非門構成一個RS觸發器。b點的抖動電壓波形通過RS觸發電路后變成正規的正弦波,這一點很容易從RS觸發器的工作過程得到驗證。
?
在按鍵較多時,硬件消抖無法勝任,因此常用軟件消除鍵盤的抖動,在第一次檢測到鍵按下時,延時10ms的時間再確認該鍵的電平是否繼續保持閉合狀態的電平,如果繼續保持為閉合狀態的電平,則確認有鍵按下,從而消除抖動的影響。
第二節 硬件解讀
藍橋杯嵌入式主板上面是有5個按鍵的,其中4個用戶按鍵,一個復位按鍵,本章的實驗就是用戶按鍵來控制LED燈。先看看下圖的原理圖吧:
?? 上圖就是4個獨立按鍵的原理圖,我們以左上角的為例,按鍵一端連接到GND,另外一端連接到VDD,也就是說,PB1平時是高電平的狀態,一旦按鍵被按下,就與GND相連,變成低電平了。至于其他的消抖等等不再詳述,都學習stm32了,想必51應該學過了。
第三節 環境配置
1,打開stm32cubeMX,選擇“File-New Project ...”。
2,如圖,在方框中搜索“stm32g431rb”(可大寫,可小寫)。然后選擇LQFPN64的封裝的芯片。
3,選中“A-Z”,查看藍橋杯嵌入式芯片stm32g431rb的所有功能。
4,選中“SYS”,在Debug項目中選擇“Serial Wire”,可以看見PA13與PA14引腳變成綠色,分別用作SYS_SWDIO和SYS_SWCLK。
5,選中“PD2-GPIO_Output”,“PC8-GPIO_Output”,“PC9-GPIO_Output”,“PC10-GPIO_Output”,“PC11-GPIO_Output”,“PC12-GPIO_Output”,“PC13-GPIO_Output”,“PC14-GPIO_Output”和“PC15-GPIO_Output”,這樣就可以讓芯片的PD2和PC8~PC15作為輸出引腳了。
6,選中“PA0-GPIO_Input”,“PB0-GPIO_Input”,“PB1-GPIO_Input”,“PB2-GPIO_Input”,這樣就可以讓芯片的PA0和PB0~PB2作為輸入引腳了,也據說用戶按鍵引腳。
7,選中“Project Manager-Project”。在Project Name中填寫項目的名字(盡可能不要用中文),在Project Location中選擇項目保存的路徑,在Toolchain/IDE中選擇編譯器,藍橋杯嵌入式比賽用的是MDK5,所以我們選擇MDK-ARM V5。
8,點擊GENERATE CODE生成代碼。
9,點擊”CLOSE”,關閉stm32cubeMX,代碼生成成功。
第四節 程序編寫
1,用MDK5打開stm32cubeMX生成的工程。
2,點擊“Rebuild”,進行代碼的編譯,可以看出代碼沒有任何問題,證明我們利用stm32cubeMX生成代碼很成功。
3,在main.c文件中添加下面定義:
?
4,在main.c文件中加入以下封裝好了的函數:
5,將封裝好的函數在main.h中聲明:
6,在mian函數中初始化LED:
7,編寫while里面的函數:
8,編譯代碼。
9,點擊”Options for Target...“。
10,點擊”Debug“,然后選擇下載器”CMSIS-DAP Debugger“,并點擊”OK“。
11,選擇“Settings”。
12,選擇”Flash Downlosd”,勾選”Reset and Run”并點擊”OK”。
13,點擊”Download“,開始下載程序。
14,程序下載成功。
第五節 注意事項與實驗現象
實驗注意事項:
1,程序語句需要位于程序的BEGIN與END之間。
3,J6,J7,J8需要用跳線帽連接,否則無法下載程序。
實驗現象:
LD9和LD11常亮。按下B1,LD1亮;按下B2,LD2亮:按下B3,LD3亮;按下B4,LD4亮。
宗旨:
免費的服務,永遠的開源
說明:
1.本教程免費,開源,禁止用于任何商業用途,違者必究。
2.本教程版權所屬為東莞市東城墨竹公子電子工作室,盜版必究。
-
物聯網
+關注
關注
2909文章
44701瀏覽量
373971
發布評論請先 登錄
相關推薦
評論