|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
我看不懂...希望對你們有用[轉] |
||||
| 作者:timetime 欄目:單片機 | ||||
矩陣按鍵部分由16個輕觸按鍵按照4行4列排列,連接到JP50端口。將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鍵沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態(tài)就可得知是否有鍵按下了。 確定矩陣式鍵盤上何鍵被按下,介紹一種“行掃描法”。 行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法. 判斷鍵盤中有無鍵按下: 將全部行線置低電平,然后檢測列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。 判斷閉合鍵所在的位置: 在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵就是閉合的按鍵。 下面給出一個具體的例子:
8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3設置為輸入線,行線P1.4-P.17設置為輸出線。4根行線和4根列線形成16個相交點。 1. 檢測當前是否有鍵被按下。檢測的方法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態(tài),若P1.0-P1.3為全“1”,則無鍵閉合,否則有鍵閉合。 2. 去除鍵抖動。當檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。 3. 若有鍵被按下,應識別出是哪一個鍵閉合。方法是對鍵盤的行線進行掃描。P1.4-P1.7按下述4種組合依次輸出:
在每組行輸出時讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,否則有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉換成所定義的鍵值。 4. 為了保證鍵每閉合一次CPU僅作一次處理,必須去除鍵釋放時的抖動。 實驗目的: 通過XL1000的16位矩陣按鍵, 在數碼管上分別顯示0---9,A,B,C,D,E,F。 2 接8位數碼管的數據線。將數碼管部份的數據口 JP5接到CPU部份的P0口JP51. 3 接8位數碼管的顯示位線。將數碼管部份的顯示位口 JP8接到CPU部份的P2口JP52.
;本程序實現(xiàn)掃描按鍵顯示功能. |
| 2樓: | >>參與討論 |
| 作者: 長天秋水 于 2007/5/15 11:22:48 發(fā)布:
呵呵,這個在大學的時候學過的,但是沒有親手做過,不知道做的時候又會遇到什么問題呢。 我現(xiàn)在做的東西只要用一個按鈕控制就好了。 |
|
| 3樓: | >>參與討論 |
| 作者: timetime 于 2007/5/15 12:09:29 發(fā)布:
我自己都不會做...還沒有親手做出來過什么...更別說就用一個按鈕了... 最近上網的時間多點.就在網上找些東西拿來看.順便和大家分享下 |
|
|
|
| 免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |