RM新时代网站-首页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>嵌入式開發(fā)>獨(dú)立鍵盤和矩陣鍵盤基礎(chǔ)知識(shí)資料下載

獨(dú)立鍵盤和矩陣鍵盤基礎(chǔ)知識(shí)資料下載

2021-03-31 | pdf | 93.33KB | 次下載 | 2積分

資料介紹

今天,我們來講解一下板子上的一個(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定義地址?!皊tc15f2k60s2.h”就不需要了,而且可以直接用 “P30”等來表示 “P3^0” 等。 本文轉(zhuǎn)載自:電子產(chǎn)品世界(作者:阿飛) 免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理。 (mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
  12. 0.70 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)窗簾控制器仿真程序
  14. 1.93 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21548次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183278次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
RM新时代网站-首页