<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 矩陣式鍵盤(pán)掃描原理

矩陣式鍵盤(pán)掃描原理

作者: 時(shí)間:2011-10-27 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/150094.htm

  將鍵值顯示在七節顯示器上的單片機源碼。把每個(gè)都分成水平和垂直的兩端接入,比如說(shuō)碼是從垂直的入,那就代表那一行所接收到的碼是同一個(gè)bit,而讀入掃描碼的則是水平,掃描的動(dòng)作是先輸入掃描碼,再去讀取輸入的值,比對之后就可知道是哪個(gè)鍵被按下。

  比如說(shuō)掃描碼送入01111111,前面的0111是代表掃描第一行P1.0列,而后面的1111是讓讀取的4行接腳先設VDD,若第一行的第三列按鍵被按下,那讀取的結果就會(huì )變成01111101(注意1111變成1101),其中LSB的第三個(gè)bit會(huì )由1變成0,這是因檎飧靄醇被按下之后,會(huì )被垂直的掃描碼電位short,而把讀取的LSB的bit電位拉到0,此即檣描。

  由於這種按鍵是機械式的開(kāi)關(guān),當按鍵被按下時(shí),鍵會(huì )震動(dòng)一小段時(shí)間才穩定,榱吮苊餿8051誤判槎啻問(wèn)淙臚一按鍵,我們必須在偵測到有按鍵被按下,就Delay一小段時(shí)間,使以達穩定狀態(tài),再去判讀所按下的鍵,就可以讓的輸入穩定。

  SCAN:

  MOV R3,#F7H ; 掃描初始值

  MOV R1,#00H ; 取碼指標

  SCAN1:

  MOV A,R3 ; 開(kāi)始掃描

  MOV P1,A ; 將掃描值輸出到 P1

  MOV A,P1 ; 讀入 P1 判斷是否有按下

  MOV R4,A ; 存到 R4, 判斷是否放開(kāi)

  SETB C ; C=1

  MOV R5,#04H ; 掃描 P14~P17

  L1:

  RLC A ; 將按鍵值左移一位元

  JNC KEYIN ; 若 C=0, 有按, 執行 KEYIN

  INC R1 ; 將指標值加 1, 繼續掃描下一行

  DJNZ R5,L1 ; 掃描四行

  MOV A,R3 ; 載入掃描值

  SETB C ; C=1

  RRC A ; 掃描下一列(P13~P10)

  MOV R3,A ; 存回掃描值

  JC SCAN1 ; C=1, 尚未完成掃描

  RET ; 結束鍵盤(pán)掃描, 回到 Main Program

  KEYIN:

  MOV R7,#10 ; 消除彈跳

  D2:

  MOV R6,#248

  DJNZ R6,$

  DJNZ R7,D2

  D3:

  MOV A,P1 ; 讀入 P1

  XRL A,R4

  JZ D3

  MOV A,R1

  MOV DPTR,#TABLE

  MOVC A,@A+DPTR

  Table:

  db0c0h,0f9h,0a4h,0b0h,099h   ;0-4

  db   092h,082h,0f8h,080h,090h   ;5-9

  db   088h,083h,0a7h,0a1h,086h   ;A-E

  db   08eh            ;F

  end

DIY機械鍵盤(pán)相關(guān)社區:機械鍵盤(pán)DIY




關(guān)鍵詞: 原理 掃描 鍵盤(pán) 矩陣式

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>