日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]矩陣式鍵盤掃描原理

矩陣鍵盤掃描原理

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

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

  由於這種按鍵是機(jī)械式的開關(guān),當(dāng)按鍵被按下時(shí),鍵會(huì)震動(dòng)一小段時(shí)間才穩(wěn)定,為了避免讓8051誤判為多次輸入同一按鍵,我們必須在偵測(cè)到有按鍵被按下,就Delay一小段時(shí)間,使鍵盤以達(dá)穩(wěn)定狀態(tài),再去判讀所按下的鍵,就可以讓鍵盤的輸入穩(wěn)定。

  SCAN:

  MOV R3,#F7H ; 掃描初始值

  MOV R1,#00H ; 取碼指標(biāo)

  SCAN1:

  MOV A,R3 ; 開始掃描

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

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

  MOV R4,A ; 存到 R4, 判斷是否放開

  SETB C ; C=1

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

  L1:

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

  JNC KEYIN ; 若 C=0, 有按, 執(zhí)行 KEYIN

  INC R1 ; 將指標(biāo)值加 1, 繼續(xù)掃描下一行

  DJNZ R5,L1 ; 掃描四行

  MOV A,R3 ; 載入掃描值

  SETB C ; C=1

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

  MOV R3,A ; 存回掃描值

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

  RET ; 結(jié)束鍵盤掃描, 回到 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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉