電子發(fā)燒友App

硬聲App

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

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

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

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

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

資料介紹

今天,我們來講解一下板子上的一個模塊——機械按鍵。 機械按鍵分為兩種使用模式:獨立按鍵和矩陣按鍵。這兩個模式是通過板子上的一個硬件部分來切換的,使用方法不相同,但原理都差不多,在大家使用小紅板學(xué)習(xí)的時候這方面都應(yīng)該也有接觸過。沒錯,它與小紅板上的使用方式幾乎是相同的。 相信很多人在學(xué)習(xí)的時候,都覺得按鍵很簡單對吧?但是大家要注意的是,想要寫出一個完全沒bug(按鍵能夠特別靈敏地判斷狀態(tài))的按鍵其實并不簡單。而且它總是結(jié)合數(shù)碼管、LED燈等各種模塊來配合使用的,按鍵各種按下狀態(tài)中實現(xiàn)各種功能,各種邏輯寫起來也是有一定難度的。 好的,話不多說了,接下來我會為大家分別講解一下獨立鍵盤和矩陣鍵盤基礎(chǔ)知識。 機械按鍵原理圖 我們先來看一下按鍵部分的原理圖: 我們看右邊藍色框框起來引腳,可以看到大部分的按鍵都是通過P3端口來控制的。 為什么說是大部分呢?因為板子上的兩個引腳有變化:P3^6 --> P4^2; P3^7 --> P4^4 前邊說的鍵盤兩種模式是通過左邊橙色框里框起來的硬件(對應(yīng)板子上的J5)來控制的。當(dāng)跳線帽接2-3時,模式為獨立按鍵;接1-2時,模式為矩陣按鍵(千萬別抬杠哦)。 獨立按鍵原理 好的,我們現(xiàn)在先開始獨立按鍵的講解。 這里的獨立按鍵與小紅板上的使用方法是完全一樣的。 我們看左邊紅色框里框起來的部分,這四個按鍵就是獨立按鍵,可以看到它右邊分別接了P3^0~P3^3引腳,左邊通過跳線帽接到了GND。 然后,我們又知道51單片機在默認狀態(tài)下,引腳都為高電平,當(dāng)對應(yīng)按鍵按下時,右邊的引腳就與左邊的GND接在了一起,電平就會被拉低,所以直接判斷對應(yīng)的引腳是否為低電平就可以知道這個按鍵有沒有被按下。 使用按鍵的時候要注意一點就是機械按鍵的抖動,我們看下邊這張圖: 上邊藍色框框起來的是我們理想中的波形圖(默認高電平,按下低電平),實際中的波形是下邊紅色框框起來的。 可以看到綠色框中的電平一直在抖動,這段電平就會對我們判斷按鍵是否觸發(fā)產(chǎn)生干擾。由于板子上沒有消除抖動的硬件設(shè)計,我們就需要通過程序延時來跳過這段抖動。 很簡單,只需要在判斷引腳電平為低以后加10ms左右的延時,如果這時候引腳電平還是低電平,就代表我們的按鍵確實被按下了。還有,在我們按下沒松手的時候,程序會一直循環(huán)執(zhí)行我們這段程序。 為了避免這種問題,還需要在按鍵程序中加入“松手檢測”,看下邊一段程序: if(P30 == 0) //判斷按鍵S7是否按下 { Delay_key(10); //10ms延時用來消抖 if(P30 == 0) //再次判斷按鍵S7是否按下 { /* 按下S7時需要執(zhí)行的程序放這里 */ while(P30 == 0); //松手檢測 } } 這就是獨立按鍵的檢測函數(shù),嘻,很簡單吧? 矩陣按鍵原理 好的獨立按鍵講完了我們來講解一下矩陣按鍵。(切換的時候記得要把跳線帽換一下哦) 這時我們再看原理圖,每行的四個按鍵都接在了一起,右端分別接在了P3^0、P3^1、P3^2、P3^3引腳,每列的四個按鍵也接在了一起,左端分別接在了P3^4、P3^5、P4^2、P4^4引腳。 當(dāng)按下一個按鍵的時候,我們只要想辦法判斷它是哪一行哪一列的就行啦。通過程序先把P3^4、P3^5、P4^2、P4^4全部拉低,再判斷P3^0、P3^1、P3^2、P3^3中哪一個引腳變?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) } } 這段代碼沒加注釋,是因為我希望大家可以不只依賴于注釋。細品一下這段代碼,在品的時候多加思考,絕對比只看注釋理解得更加透徹。 KeyValue是我們在程序最開始定義的一個全局變量,它主要起標志的作用,這就是傳說中的標志位,通過判斷給它的賦值就可以判斷按下的哪一個按鍵(KeyValue=6 --> 按鍵6...),把這個函數(shù)在主函數(shù)while循環(huán)中執(zhí)行就可掃描矩陣按鍵。當(dāng)然,這只是其中一種判斷形式,常用的還有逐行判斷等等,大家可以自己試一下。 值得注意的是,我們這里的頭文件使用的是“stc15f2k60s2.h”,相較于“reg52.h”,它的功能更加強大。而且在“reg52.h”中是沒有P4端口的定義的,在使用的時候要在程序開頭部分添加一句代碼 “sfr P4 = 0xC0;” 來給P4定義地址?!皊tc15f2k60s2.h”就不需要了,而且可以直接用 “P30”等來表示 “P3^0” 等。 本文轉(zhuǎn)載自:電子產(chǎn)品世界(作者:阿飛) 免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理。 (mbbeetchina)
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

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

本月

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

總榜

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