久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 14829|回復: 12
收起左側

26課:矩陣式鍵盤接口技術及程序設計

  [復制鏈接]
ID:1 發表于 2013-5-21 05:13 | 顯示全部樓層 |閱讀模式
在單片機系統中鍵盤中按鈕數量較多時,為了減少I/O口的占用,常常將按鈕排列成矩陣形式,如圖1所示。在矩陣式鍵盤中,每條水平線和垂直線在交叉處不直接連通,而是通過一個按鈕加以連接。這樣,一個端口(如P1口)就能組成4*4=16個按鈕,比之直接將端口線用于鍵盤多出了一倍,而且線數越多,區別越明顯,比如再多加一條線就能組成20鍵的鍵盤,而直接用端口線則只能多出一鍵(9鍵)。由此可見,在需要的鍵數比較多時,采用矩陣法來做鍵盤是合理的。


<單片機矩陣式鍵盤接口技術及編程接口圖>
矩陣式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,上圖中,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。這樣,當按鈕沒有按下時,所有的輸出端都是高電平,代表無鍵按下。行線輸出是低電平,一旦有鍵按下,則輸入線就會被拉低,這樣,通過讀入輸入線的狀態就可得知是否有鍵按下了。具體的識別及編程辦法如下所述。
矩陣式鍵盤的按鈕識別辦法
確定矩陣式鍵盤上何鍵被按下介紹一種“行掃描法”。
行掃描法 行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鈕識別辦法,如上圖所示鍵盤,介紹過程如下。
判斷鍵盤中有無鍵按下 將全部行線Y0-Y3置低電平,然后檢測列線的狀態。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鈕之中。若所有列線均為高電平,則鍵盤中無鍵按下。
判斷閉合鍵所在的位置 在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其辦法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態。若某列為低,則該列線與置為低電平的行線交叉處的按鈕就是閉合的按鈕。
下面給出一個具體的例程:
圖仍如上所示。8031單片機的P1口用作鍵盤I/O口,鍵盤的列線接到P1口的低4位,鍵盤的行線接到P1口的高4位。列線P1.0-P1.3分別接有4個上拉電阻到正電源+5V,并把列線P1.0-P1.3設置為輸入線,行線P1.4-P.17設置為輸出線。4根行線和4根列線形成16個相交點。
檢測當前是否有鍵被按下。檢測的辦法是P1.4-P1.7輸出全“0”,讀取P1.0-P1.3的狀態,若P1.0-P1.3為全“1”,則無鍵閉合,不然有鍵閉合。
去除鍵抖動。當檢測到有鍵按下后,延時一段時間再做下一步的檢測判斷。
若有鍵被按下,應識別出是哪一個鍵閉合。辦法是對鍵盤的行線進行掃描。P1.4-P1.7按下述4種組合依次輸出:
P1.7 1 1 1 0
P1.6 1 1 0 1
P1.5 1 0 1 1
P1.4 0 1 1 1
在每組行輸出時讀取P1.0-P1.3,若全為“1”,則表示為“0”這一行沒有鍵閉合,不然有鍵閉合。由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉換成所定義的鍵值
為了保證鍵每閉合一次CPU僅作一次處理,必須卻除鍵釋放時的抖動。



《單片機矩陣式鍵盤接口技術及編程》
鍵盤掃描程序:
從以上分析得到單片機鍵盤掃描程序的流程圖如圖2所示。程序如下
SCAN: MOV P1,#0FH
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT1
SJMP NEXT3
NEXT1: ACALL D20MS
MOV A,#0EFH
NEXT2: MOV R1,A
MOV P1,A
MOV A,P1
ANL A,#0FH
CJNE A,#0FH,KCODE;
MOV A,R1
SETB C
RLC A
JC NEXT2
NEXT3: MOV R0,#00H
RET
KCODE: MOV B,#0FBH
NEXT4: RRC A
INC B
JC NEXT4
MOV A,R1
SWAP A
NEXT5: RRC A
INC B
INC B
INC B
INC B
JC NEXT5
NEXT6: MOV A,P1
ANL A,#0FH
CJNE A,#0FH,NEXT6
MOV R0,#0FFH
RET
鍵盤處理程序就作這么一個簡單的介紹,實際上,鍵盤、顯示處理是很復雜的,它一般占到一個應用程序的大部份代碼,可見其重要性,但說到,這種復雜并不來自于單片機的本身,而是來自于操作者的習慣等等問題,因此,在編寫鍵盤處理程序之前,最好先把它從邏輯上理清,然后用適當的算法表示出來,最后再去寫代碼,這樣,才能快速有效地寫好代碼。到本課為止,本站教程暫告一個段落!請繼續關注http://www.zg4o1577.cn的單片機教程。感謝大家的關心和支持!教程中如果有不對之處也希望大家在評論中提出,我們會及時正更錯誤的.


評分

參與人數 1黑幣 +4 收起 理由
Oscard + 4 很給力!

查看全部評分

回復

使用道具 舉報

ID:93625 發表于 2018-6-27 10:04 | 顯示全部樓層
看來把這課給漏學了,補上
回復

使用道具 舉報

ID:263745 發表于 2017-12-21 18:00 | 顯示全部樓層
大學學過的匯編語言全還給老師了
回復

使用道具 舉報

ID:8655 發表于 2017-10-30 11:50 | 顯示全部樓層
學習了  謝謝樓主
回復

使用道具 舉報

ID:107365 發表于 2017-4-26 11:02 來自手機 | 顯示全部樓層
版主您好!首先感謝分享,辛苦啦!  請教,按鍵軟件消抖延時5~10ms,這對單片機資源不是太浪費了嗎,又沒有更好的方法呢 (⊙o⊙)
回復

使用道具 舉報

ID:185661 發表于 2017-4-14 19:52 | 顯示全部樓層
匯編看不懂
回復

使用道具 舉報

ID:88716 發表于 2015-8-24 09:01 來自手機 | 顯示全部樓層
例子怎么都是用匯編語言呢
回復

使用道具 舉報

ID:60611 發表于 2015-6-11 21:51 | 顯示全部樓層
現在還用匯編的很少了哈
回復

使用道具 舉報

ID:73815 發表于 2015-6-2 13:45 | 顯示全部樓層
這上面寫的程序要是每句后面加上講解對初學者幫助很大
回復

使用道具 舉報

ID:77081 發表于 2015-4-15 21:14 | 顯示全部樓層
矩陣式鍵盤接口技術及程序設計
回復

使用道具 舉報

ID:72292 發表于 2015-1-15 23:30 | 顯示全部樓層
樓主,你寫的很有幫助,可是我還想進一步問一下。如蚊子所述:由此得到閉合鍵的行值和列值,然后可采用計算法或查表法將閉合鍵的行值和列值轉換成所定義的鍵值。
  我想問問查表法,這個表怎么定義?是自己隨意定義么,還是按照什么規則定義的?謝謝了。
回復

使用道具 舉報

ID:71662 發表于 2015-1-6 14:59 | 顯示全部樓層
很不錯的東西   謝謝分享啊
回復

使用道具 舉報

ID:68367 發表于 2014-11-22 16:57 | 顯示全部樓層

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品www久久久久久广东 | 亚洲电影中文字幕 | 亚洲欧美一区二区三区国产精品 | 中文字幕视频免费 | 农村妇女毛片精品久久久 | 一级在线免费观看 | 日韩中文字幕在线视频 | 伊人网国产| 精品国产视频在线观看 | 日本久久网| 久久夜色精品国产 | 99精品网 | 中文字幕在线国产 | 日本不卡一区二区三区在线观看 | 日韩成人在线网站 | 国产精品成人一区二区三区夜夜夜 | 91精品久久久久久久久久小网站 | 福利片在线观看 | 欧美日韩三级 | 欧美在线国产精品 | 超碰在线影院 | 日韩欧美在线观看视频网站 | 国产日产精品一区二区三区四区 | 国产成人麻豆免费观看 | 夜夜骑综合 | 欧美一级黄色片 | 欧美成人免费在线 | 国产精品国产三级国产aⅴ无密码 | 亚洲先锋影音 | 亚洲精品一区中文字幕乱码 | 中文天堂在线一区 | 激情福利视频 | 中文字幕综合在线 | 伊人春色在线观看 | 免费骚视频 | 成人精品国产免费网站 | 国产视频一区二区 | 黄色大片毛片 | 99国产精品99久久久久久 | 日韩精品一区二区三区在线观看 | 天天干视频网 |