資料介紹
今天,我們來講解一下板子上的一個(gè)模塊——機(jī)械按鍵。
機(jī)械按鍵分為兩種使用模式:獨(dú)立按鍵和矩陣按鍵。這兩個(gè)模式是通過板子上的一個(gè)硬件部分來切換的,使用方法不相同,但原理都差不多,在大家使用小紅板學(xué)習(xí)的時(shí)候這方面都應(yīng)該也有接觸過。沒錯(cuò),它與小紅板上的使用方式幾乎是相同的。
相信很多人在學(xué)習(xí)的時(shí)候,都覺得按鍵很簡(jiǎn)單對(duì)吧?但是大家要注意的是,想要寫出一個(gè)完全沒bug(按鍵能夠特別靈敏地判斷狀態(tài))的按鍵其實(shí)并不簡(jiǎn)單。而且它總是結(jié)合數(shù)碼管、LED燈等各種模塊來配合使用的,按鍵各種按下狀態(tài)中實(shí)現(xiàn)各種功能,各種邏輯寫起來也是有一定難度的。
好的,話不多說了,接下來我會(huì)為大家分別講解一下獨(dú)立鍵盤和矩陣鍵盤基礎(chǔ)知識(shí)。
機(jī)械按鍵原理圖
我們先來看一下按鍵部分的原理圖:
我們看右邊藍(lán)色框框起來引腳,可以看到大部分的按鍵都是通過P3端口來控制的。
為什么說是大部分呢?因?yàn)榘遄由系膬蓚€(gè)引腳有變化:P3^6 --> P4^2; P3^7 --> P4^4
前邊說的鍵盤兩種模式是通過左邊橙色框里框起來的硬件(對(duì)應(yīng)板子上的J5)來控制的。當(dāng)跳線帽接2-3時(shí),模式為獨(dú)立按鍵;接1-2時(shí),模式為矩陣按鍵(千萬別抬杠哦)。
獨(dú)立按鍵原理
好的,我們現(xiàn)在先開始獨(dú)立按鍵的講解。
這里的獨(dú)立按鍵與小紅板上的使用方法是完全一樣的。
我們看左邊紅色框里框起來的部分,這四個(gè)按鍵就是獨(dú)立按鍵,可以看到它右邊分別接了P3^0~P3^3引腳,左邊通過跳線帽接到了GND。
然后,我們又知道51單片機(jī)在默認(rèn)狀態(tài)下,引腳都為高電平,當(dāng)對(duì)應(yīng)按鍵按下時(shí),右邊的引腳就與左邊的GND接在了一起,電平就會(huì)被拉低,所以直接判斷對(duì)應(yīng)的引腳是否為低電平就可以知道這個(gè)按鍵有沒有被按下。
使用按鍵的時(shí)候要注意一點(diǎn)就是機(jī)械按鍵的抖動(dòng),我們看下邊這張圖:
上邊藍(lán)色框框起來的是我們理想中的波形圖(默認(rèn)高電平,按下低電平),實(shí)際中的波形是下邊紅色框框起來的。
可以看到綠色框中的電平一直在抖動(dòng),這段電平就會(huì)對(duì)我們判斷按鍵是否觸發(fā)產(chǎn)生干擾。由于板子上沒有消除抖動(dòng)的硬件設(shè)計(jì),我們就需要通過程序延時(shí)來跳過這段抖動(dòng)。
很簡(jiǎn)單,只需要在判斷引腳電平為低以后加10ms左右的延時(shí),如果這時(shí)候引腳電平還是低電平,就代表我們的按鍵確實(shí)被按下了。還有,在我們按下沒松手的時(shí)候,程序會(huì)一直循環(huán)執(zhí)行我們這段程序。
為了避免這種問題,還需要在按鍵程序中加入“松手檢測(cè)”,看下邊一段程序:
if(P30 == 0) //判斷按鍵S7是否按下
{
Delay_key(10); //10ms延時(shí)用來消抖
if(P30 == 0) //再次判斷按鍵S7是否按下
{
/* 按下S7時(shí)需要執(zhí)行的程序放這里 */
while(P30 == 0); //松手檢測(cè)
}
}
這就是獨(dú)立按鍵的檢測(cè)函數(shù),嘻,很簡(jiǎn)單吧?
矩陣按鍵原理
好的獨(dú)立按鍵講完了我們來講解一下矩陣按鍵。(切換的時(shí)候記得要把跳線帽換一下哦)
這時(shí)我們?cè)倏丛韴D,每行的四個(gè)按鍵都接在了一起,右端分別接在了P3^0、P3^1、P3^2、P3^3引腳,每列的四個(gè)按鍵也接在了一起,左端分別接在了P3^4、P3^5、P4^2、P4^4引腳。
當(dāng)按下一個(gè)按鍵的時(shí)候,我們只要想辦法判斷它是哪一行哪一列的就行啦。通過程序先把P3^4、P3^5、P4^2、P4^4全部拉低,再判斷P3^0、P3^1、P3^2、P3^3中哪一個(gè)引腳變?yōu)榱说碗娖骄涂梢耘袛嗟趲仔邪存I按下了,同樣的方法來判斷按鍵是哪一列的就可以啦。
再看下邊一段程序:
void key_scan()
{
P34 = P35 = P42 = P44 = 0;
P30 = P31 = P32 = P33 = 1;
if(P30 == 0)
{
delayms(10)
if(P30 == 0) KeyValue = 7;
while(P30 == 0)
}
if(P31 == 0)
{
delayms(10)
if(P31 == 0) KeyValue = 6;
while(P31 == 0)
}
if(P32 == 0)
{
delayms(10)
if(P32 == 0) KeyValue = 5;
while(P32 == 0)
}
if(P33 == 0)
{
delayms(10)
if(P33 == 0) KeyValue = 4;
while(P33 == 0)
}
P34 = P35 = P42 = P44 = 1;
P30 = P31 = P32 = P33 = 0;
if(P34 == 0)
{
delayms(10)
if(P34 == 0) KeyValue = KeyValue 12;
while(P34 == 0)
}
if(P35 == 0)
{
delayms(10)
if(P35 == 0) KeyValue = KeyValue 8;
while(P35 == 0)
}
if(P42 == 0)
{
delayms(10)
if(P42 == 0) KeyValue = KeyValue 4;
while(P42 == 0)
}
if(P44 == 0)
{
delayms(10)
if(P44 == 0) KeyValue = KeyValue;
while(P44 == 0)
}
}
這段代碼沒加注釋,是因?yàn)槲蚁M蠹铱梢圆恢灰蕾囉谧⑨尅<?xì)品一下這段代碼,在品的時(shí)候多加思考,絕對(duì)比只看注釋理解得更加透徹。
KeyValue是我們?cè)诔绦蜃铋_始定義的一個(gè)全局變量,它主要起標(biāo)志的作用,這就是傳說中的標(biāo)志位,通過判斷給它的賦值就可以判斷按下的哪一個(gè)按鍵(KeyValue=6 --> 按鍵6...),把這個(gè)函數(shù)在主函數(shù)while循環(huán)中執(zhí)行就可掃描矩陣按鍵。當(dāng)然,這只是其中一種判斷形式,常用的還有逐行判斷等等,大家可以自己試一下。
值得注意的是,我們這里的頭文件使用的是“stc15f2k60s2.h”,相較于“reg52.h”,它的功能更加強(qiáng)大。而且在“reg52.h”中是沒有P4端口的定義的,在使用的時(shí)候要在程序開頭部分添加一句代碼 “sfr P4 = 0xC0;” 來給P4定義地址。“stc15f2k60s2.h”就不需要了,而且可以直接用 “P30”等來表示 “P3^0” 等。
本文轉(zhuǎn)載自:電子產(chǎn)品世界(作者:阿飛)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理。
(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- stm32矩陣鍵盤的程序
- 學(xué)習(xí)筆記之51單片機(jī)鍵盤篇(非編碼鍵盤與編碼鍵盤、非編碼鍵盤的掃描方式、獨(dú)立鍵盤、矩陣鍵盤)
- 51單片機(jī)鍵盤接口-獨(dú)立按鍵和矩陣按鍵
- 使用單片機(jī)實(shí)現(xiàn)LCD矩陣鍵盤的程序免費(fèi)下載 19次下載
- 單片機(jī)的矩陣鍵盤實(shí)驗(yàn)文件和程序免費(fèi)下載 16次下載
- 使用單片機(jī)進(jìn)行矩陣鍵盤基本控制的詳細(xì)資料和程序免費(fèi)下載
- 使用51單片機(jī)實(shí)現(xiàn)矩陣鍵盤的代碼免費(fèi)下載
- 使用51單片機(jī)實(shí)現(xiàn)矩陣式鍵盤的資料和程序免費(fèi)下載
- 使用51單片機(jī)實(shí)現(xiàn)矩陣鍵盤的程序免費(fèi)下載
- 使用51單片機(jī)進(jìn)行矩陣鍵盤的程序免費(fèi)下載
- 簡(jiǎn)易矩陣鍵盤的C語言程序免費(fèi)下載 21次下載
- 矩陣鍵盤依次輸入控制的C語言程序資料免費(fèi)下載 5次下載
- 4×4鍵盤矩陣按鍵電路圖和HEX資料免費(fèi)下載 35次下載
- 第四棵--KEY獨(dú)立鍵盤和矩陣鍵盤的檢測(cè) 0次下載
- 矩陣鍵盤 0次下載
- 基于單片機(jī)的獨(dú)立鍵盤與矩陣鍵盤檢測(cè) 2144次閱讀
- 單片機(jī)鍵盤檢測(cè)與應(yīng)用 5394次閱讀
- 通過采用DSP芯片實(shí)現(xiàn)非編碼矩陣鍵盤的設(shè)計(jì) 2634次閱讀
- 51單片機(jī)對(duì)矩陣鍵盤實(shí)現(xiàn)16個(gè)按鍵操作的電路設(shè)計(jì) 3w次閱讀
- 單片機(jī)矩陣鍵盤的使用之讀取鍵盤 4434次閱讀
- 51單片機(jī)對(duì)矩陣鍵盤實(shí)現(xiàn)16個(gè)按鍵操作的設(shè)計(jì) 3.6w次閱讀
- 基于51單片機(jī)的4*4矩陣鍵盤字符輸入 1w次閱讀
- 什么是矩陣鍵盤?4*4鍵盤的原理軟件設(shè)計(jì)分析 3.9w次閱讀
- 單片機(jī)8x8矩陣鍵盤原理說明 2.6w次閱讀
- 4x4矩陣鍵盤工作原理及掃描程序 24.2w次閱讀
- 矩陣式鍵盤使用方法 2.5w次閱讀
- 一文看懂矩陣鍵盤的特點(diǎn)及工作方式 3.8w次閱讀
- 矩陣鍵盤有什么用_矩陣鍵盤有何用途 1.6w次閱讀
- 基于FPGA的矩陣鍵盤控制器的設(shè)計(jì) 5049次閱讀
- 基于ARM的矩陣鍵盤設(shè)計(jì)及其linux驅(qū)動(dòng)實(shí)現(xiàn) 3188次閱讀
下載排行
本周
- 1GD100PIX120C6SNA規(guī)格書
- 0.98 MB | 3次下載 | 免費(fèi)
- 2一款入耳式耳機(jī)的仿真與分析
- 0.44 MB | 2次下載 | 免費(fèi)
- 3Eurotherm TKS Temperature 用戶手冊(cè)
- 1.46 MB | 2次下載 | 免費(fèi)
- 4人形機(jī)器人電機(jī)驅(qū)動(dòng)和傳感報(bào)告
- 4.27 MB | 2次下載 | 免費(fèi)
- 5無線系統(tǒng)中天線和RF元件電磁建模
- 7.48 MB | 1次下載 | 4 積分
- 6Multisim模擬電路仿真教程
- 1.93 MB | 1次下載 | 3 積分
- 7DMP300C1型微機(jī)變壓器保護(hù)測(cè)控裝置技術(shù)說明書
- 4.11 MB | 次下載 | 10 積分
- 8用MT3540芯片設(shè)計(jì)BOOST電路 1(可下載)
- 445.66 KB | 次下載 | 免費(fèi)
本月
- 1晶體三極管的電流放大作用詳細(xì)說明
- 0.77 MB | 32次下載 | 2 積分
- 2Python從入門到精通背記手冊(cè)
- 18.77 MB | 27次下載 | 1 積分
- 3雙極型三極管放大電路的三種基本組態(tài)的學(xué)習(xí)課件免費(fèi)下載
- 4.03 MB | 25次下載 | 1 積分
- 4AIWA HS-J303 MKⅡ維修手冊(cè)
- 22.47 MB | 23次下載 | 10 積分
- 5多級(jí)放大電路的學(xué)習(xí)課件免費(fèi)下載
- 1.81 MB | 21次下載 | 2 積分
- 6九陽豆?jié){機(jī)高清原理圖
- 2.47 MB | 20次下載 | 1 積分
- 7AIWA HS-J202/HS-J202M/HS-J800維修手冊(cè)
- 13.60 MB | 15次下載 | 10 積分
- 81875功放原理圖
- 0.04 MB | 11次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191382次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183337次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81585次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73814次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論