1 / 15

鍵盤輸入控制

鍵盤輸入控制. 4×3 矩陣鍵盤之連接. 微控制器如何得知有按鍵被按. 中斷 (Interrupt) 方式: 當有按鍵被按時,有一外部硬體電路去偵測得知,並對微控制器產生硬體中斷信號 以鍵盤主動通知微控制器,平常無按鍵時,微控制器可處理其它部份之程式。 詢問 (Polling) 方式: 微控制器以軟體方式,定期去詢問外部鍵盤是否有按鍵被按。 以微控制器為主動,需一段時間即去詢問外部之鍵盤以得知其狀況,所以較耗微控制器之處理時間。. 軟體掃描方式. 4×3 矩陣鍵盤與微控制器連接圖. 鍵盤掃描之時序.

kyna
Télécharger la présentation

鍵盤輸入控制

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 鍵盤輸入控制 • 4×3矩陣鍵盤之連接

  2. 微控制器如何得知有按鍵被按 • 中斷(Interrupt)方式: • 當有按鍵被按時,有一外部硬體電路去偵測得知,並對微控制器產生硬體中斷信號 • 以鍵盤主動通知微控制器,平常無按鍵時,微控制器可處理其它部份之程式。 • 詢問(Polling)方式: • 微控制器以軟體方式,定期去詢問外部鍵盤是否有按鍵被按。 • 以微控制器為主動,需一段時間即去詢問外部之鍵盤以得知其狀況,所以較耗微控制器之處理時間。

  3. 軟體掃描方式 • 4×3矩陣鍵盤與微控制器連接圖

  4. 鍵盤掃描之時序 Time4 1 1 1 0 掃描週期Time3 1 1 0 1 Time2 1 0 1 1 Time1 0 1 1 1 PS0 PS1 PS2 PS3 KeyIN[3..0] KeyIn0 KeyIn1 KeyIn2 KeyIn3

  5. 鍵盤掃描與七段顯示器掃描的結合

  6. LAB4、 鍵盤輸入控制 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0

  7. 鍵盤彈跳現象 • 一般按鍵按下與放開,會有3ms~10ms的交替不穩現象。 • 掃描移位時間設為1ms,一個掃描週期為4ms。 • 連續兩個掃描週期皆偵測到相同按鍵被按下 (8ms) • 連續兩個掃描週期皆偵測到按鍵被放開 (8ms) 3ms ~ 10ms 3ms ~ 10ms

  8. 範例5.6鍵盤輸入控制 • Key_OverOnePressedInColumn旗標 • 判斷同一行是否有多個按鍵被按下 • Yes=1;No=0 • Key_OnlyOnePressedCount變數 • 記錄一個掃描週期中,有幾個按鍵被按下 • 判斷是否只有一個按鍵被按下 • Key_OverOnePressedInColumn=0 • Key_OnlyOnePressedCount=1 P5-70

  9. 每1ms中斷一次 存放A與status 設定Timer0, 1ms中斷一次 設定旗標 回存A與status

  10. 沒有按鍵按下 掃描一週期 第一顆按鍵 第二顆按鍵 第三顆按鍵 第四顆按鍵 掃描線儲存 有多個 按鍵按下 按鍵內容儲存 一顆按鍵按下 Count加1 是否有多個 按鍵按下

  11. Page 5-78 Key_scan PROC SNZ Key_HaveShiftScan RET CLR Key_HaveShiftScan MOV a,4 SUB a,Key_ScanColumn SNZ Z JMP Seg_ShowValue CLR Key_ScanColumn CALL Confirm CLR Key_OverOnePressedInColumn CLR Key_OnlyOnePressedCount Seg_ShowValue: SET DataBus SET Segment_SEL CLR Segment_SEL ;Segment latch data FFH MOV a,Key_ScanColumn MOV Key_ScanColumn_temp,a RL Key_ScanColumn_temp RL Key_ScanColumn_temp RL Key_ScanColumn_temp RLA Key_ScanColumn_temp AND a,01110000B MOV PD,a ;scan data out CALL Segment

  12. Page 5-79 SZ Key_OverOnePressedInColumn RET MOV a,PD AND a,00001111B MOV Key_DataBuffer,a ;KeyIn data in MOV a,00001111B SUB a,Key_DataBuffer SZ Z RET MOV a,00000111B SUB a,Key_DataBuffer SZ Z JMP OnlyOneInColumn MOV a,00001011B SUB a,Key_DataBuffer SZ Z JMP OnlyOneInColumn MOV a,00001101B SUB a,Key_DataBuffer SZ Z JMP OnlyOneInColumn MOV a,00001110B SUB a,Key_DataBuffer SZ Z JMP OnlyOneInColumn ;determine only one key is pressed in a column SET Key_OverOnePressedInColumn RET 0 1 1 1

  13. 同一行是否有 多個按鍵按下 按鍵對應的值 是否只有一 個按鍵按下 第一行掃描線 第二行掃描線 第三行掃描線 第四行掃描線 連續二個掃描 週期,為同一顆 按鍵

  14. 0 4 8 C 1 5 9 D 2 6 A E 3 7 B F

  15. Page 5-82 lookup table ;=================================================== ORG LASTPAGE Segment_table: ; pgfedcba DC 11000000B ;0 DC 11111001B ;1 DC 10100100B ;2 DC 10110000B ;3 DC 10011001B ;4 DC 10010010B ;5 DC 10000010B ;6 DC 11111000B ;7 DC 10000000B ;8 DC 10010000B ;9 DC 10001000B ;A DC 10000011B ;b DC 10100111B ;c DC 10100001B ;d DC 10000110B ;E DC 10001110B ;F Based address 0 Based address 4 Based address 8 Based address c

More Related