|
通過lcd1602顯示,有兩個(gè)界面,可以用四位的獨(dú)立鍵盤進(jìn)行調(diào)位、加減、切換界面。
按鍵
一、實(shí)驗(yàn)?zāi)康?br />
二、按鍵原理圖
三、相關(guān)操作函數(shù)
四、關(guān)于消抖
五、按鍵控制實(shí)現(xiàn)程序
六、HAL庫的按鍵實(shí)現(xiàn)
七、一些思考與問題
- 實(shí)驗(yàn)?zāi)康?/font>
- 在流水燈實(shí)現(xiàn)中,我們通過對GPIO與LED燈相連的相應(yīng)引腳輸出高低電平來控制燈的亮滅。使用的是輸出模式。
- 今天的實(shí)驗(yàn)學(xué)習(xí)要使用GPIO口的輸入模式,通過對與按鍵相連的引腳數(shù)據(jù)的讀取來控制燈的亮滅。
- 了解什么是按鍵抖動(dòng)和軟件消抖的方法。
- 在圖中我們看到,KEY1鍵和KEY2、3、4鍵有些不同。KEY1鍵按下輸出為高電平,而其他三個(gè)鍵按下左接地輸出低電平。
- 同時(shí)可以看出KEY1接GPIOA的0號引腳,KEY2、3、4分別接GPIOE的1、2、3號引腳。
 - 除了我們在流水燈中講到的時(shí)鐘使能函數(shù),幾個(gè)GPIO控制函數(shù)外,僅需要用到另外一個(gè)GPIO控制函數(shù),函數(shù)定義如下圖。(同樣是在上章提到的固件庫中)。
- 該函數(shù)是讀入引腳信號的,既可以用于讀按鍵信號
- 當(dāng)然,除了按位讀取,也可以多位讀取,相關(guān)的函數(shù)有興趣可自己查閱固件庫。
機(jī)械的按鍵結(jié)構(gòu)中必然有彈簧,由于彈簧的彈性,按鍵按下或松開的短暫過程中不會(huì)立即改變電平狀態(tài),而是需要一定的接觸、不充分接觸、斷開導(dǎo)致的電平變化過程,一定時(shí)間后才能穩(wěn)定電位,稱之為抖動(dòng)。 - 抖動(dòng)會(huì)影響按鍵狀態(tài)的讀取,需要通過消除抖動(dòng)來達(dá)到確定按鍵狀態(tài),方法有硬件消抖和軟件消抖。本實(shí)驗(yàn)板不具備硬件消抖,既必須通過軟件進(jìn)行消抖。
- 軟件消抖有什么方法呢?
- 通過中斷,定時(shí)讀取引腳狀態(tài),確定時(shí)限內(nèi)連續(xù)幾次讀入狀態(tài)一致,則可確定其進(jìn)入抖動(dòng)后的穩(wěn)定狀態(tài),則可開始下一步操作。但目前我們未學(xué)習(xí)使用STM32的中斷控制,所以不采用這種方法。
- 第二種方法是延時(shí)。在第一次讀到某種狀態(tài)后,通過延時(shí)函數(shù)使CPU合適的時(shí)間的無意義操作后,再次讀取狀態(tài),若兩次狀態(tài),則可以認(rèn)為進(jìn)入穩(wěn)定裝入,則可開始下一步操作。
按鍵控制實(shí)現(xiàn)程序
六、HAL庫的按鍵實(shí)現(xiàn) - 同樣是像流水燈中介紹的方式創(chuàng)建工程,設(shè)置時(shí)鐘,設(shè)置燈的引腳狀態(tài)。但多了對按鍵引腳的設(shè)置。找到PA0和PE1設(shè)置為輸出推挽不上不下拉低速模式。其他步驟流水燈工程創(chuàng)建一致。
接下來我們看具體的程序。
這兩個(gè)庫的程序在判斷按鍵狀態(tài)的時(shí)候是并行判斷,準(zhǔn)確來說是一個(gè)先一個(gè)后的if判斷,并沒有討論同時(shí)按下兩個(gè)鍵如何判斷和操作原則。雖然這種if并行判斷可以處理一些同時(shí)按下的情況,但不能對應(yīng)到所有的情況。那么,可以思考下,如何實(shí)現(xiàn)雙鍵按下的判斷?
完整的Word格式文檔51黑下載地址:
按鍵.docx
(1.05 MB, 下載次數(shù): 34)
2019-3-8 19:27 上傳
點(diǎn)擊文件名下載附件
流水燈.docx
(4.7 MB, 下載次數(shù): 20)
2019-3-8 19:27 上傳
點(diǎn)擊文件名下載附件
|
評分
-
查看全部評分
|