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