找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 2629|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)鍵盤掃描顯示匯編源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:568296 發(fā)表于 2019-6-20 20:47 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
這次做的單片機(jī) 鍵盤掃描顯示匯編源碼
一、實(shí)驗(yàn)?zāi)康?div id="yk0cmeq" class="blockcode">
  1. ORG 0000H
  2. AJMP MAIN
  3. LEDMAP:
  4. DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H
  5. DB 7FH, 6FH, 77H, 7CH, 39H, 5EH, 79H, 71H
  6. ;  八段管顯示碼
  7. Delay: MOV R6, #01H;  延時(shí)子程序
  8. Delay1:MOV R7, #00H
  9. Delay2:DJNZ R7, Delay2
  10. DJNZ R6, Delay1
  11. RET
  12. DisplayLED:
  13. MOV R0, #60H
  14. MOV R1, #06H ; 共 共 6  個(gè)八段管
  15. MOV R2, #00100000B ;  從左邊開始顯示
  16. Loop:
  17. MOV DPTR, #8002H
  18. MOV A, #00H
  19. MOVX @DPTR, A;  關(guān)所有八段管
  20. MOV A, @R0
  21. MOV DPTR, #8004H ;  段控制口
  22. MOVX @DPTR, A
  23. MOV DPTR, #8002H ;  位控制口
  24. MOV A, R2
  25. MOVX @DPTR,A ; 顯示一位八段管
  26. ACALL Delay
  27. MOV A, R2 ;  顯示下一位
  28. RR A
  29. MOV R2,A
  30. INC R0
  31. DJNZ R1, Loop
  32. RET
  33. TestKey:
  34. MOV DPTR, #8002H
  35. MOV A, #00H
  36. MOVX @DPTR, A;  輸出線置為 0
  37. MOV DPTR, #8001H
  38. MOVX A, @DPTR ;  讀入鍵狀態(tài)
  39. CPL A
  40. ANL A, #0FH ;  高四位不用
  41. RET
  42. KeyTable: ;  鍵碼定義
  43. DB 16H, 15H, 14H, 0FFH
  44. DB 13H, 12H, 11H, 10H
  45. DB 0DH, 0CH, 0BH, 0AH
  46. DB 0EH, 03H, 06H, 09H
  47. DB 0FH, 02H, 05H, 08H
  48. DB 00H, 01H, 04H, 07H
  49. GetKey:
  50. MOV DPTR, #8002H
  51. MOV R1, #00100000B
  52. MOV R2, #06H
  53. KLoop:
  54. MOV A, R1 ;  找出鍵所在列
  55. CPL A
  56. MOV DPTR, #8002H
  57. MOVX @DPTR, A
  58. CPL A
  59. RR A
  60. MOV R1,A ;  下一列
  61. MOV DPTR, #8001H
  62. MOVX A, @DPTR
  63. CPL A
  64. ANL A, #0FH
  65. JNZ Goon1 ;  該列有鍵入
  66. DJNZ R2, KLoop
  67. MOV R2, #0FFH ;  沒有鍵按下,
  68. 回 返回 0FFH
  69. AJMP Exit
  70. Goon1:
  71. MOV R1,A; 值 鍵值 = 列 列 *4 + 行 行
  72. MOV A, R2
  73. DEC A
  74. RL A
  75. RL A
  76. MOV R2, A ; R2 = (R2-1)*4
  77. MOV A, R1 ; R1  中為讀入的行值
  78. MOV R1, #04H
  79. LoopC:
  80. RRC A ;  移位找出所在行
  81. JC Exit
  82. INC R2 ; R2 =R2+  行值
  83. DJNZ R1, LoopC
  84. Exit:
  85. MOV A, R2 ;  取出鍵碼
  86. MOV DPTR, #KeyTable
  87. MOVC A, @A+DPTR
  88. MOV R2, A
  89. WaitRelease:
  90. MOV DPTR, #8002H ;  等鍵釋放
  91. CLR A
  92. ACALL TestKey
  93. JNZ WaitRelease
  94. MOV A, R2
  95. RET
  96. MAIN:
  97. MOV 60H, #0FFH ; 示 顯示 8.8.8.8.
  98. MOV 61H, #0FFH
  99. MOV 62H, #0FFH
  100. MOV 63H, #0FFH
  101. MOV 64H, #00H
  102. MOV 65H, #00H
  103. MLoop: ACALL DisplayLED ;  顯示
  104. ACALL TestKey ;  有鍵入?
  105. JZ MLoop ;  無鍵入,  繼續(xù)顯示
  106. ACALL GetKey ;  讀入鍵碼
  107. ANL A, #0FH ;  顯示鍵碼
  108. MOV DPTR, #LEDMap
  109. MOVC A, @A+DPTR
  110. MOV 65H,A
  111. LJMP MLoop
  112. END
復(fù)制代碼

1 .掌握鍵盤和顯示器的接口方法和編程方法
2 .掌握鍵盤掃描和數(shù)碼管顯示器的工作原理
二、 實(shí)驗(yàn)內(nèi)容
利用實(shí)驗(yàn)儀上的鍵盤掃描電路和顯示電路 , 做一個(gè)掃描鍵盤和數(shù)碼顯示實(shí)驗(yàn) , 把按鍵
輸入的鍵碼在六位數(shù)碼管上顯示出來。實(shí)驗(yàn)程序分為三個(gè)模塊:
① 鍵輸入模塊:掃描鍵盤、讀取一次鍵盤并將鍵值存入鍵值緩沖單元。
② 顯示模塊:將顯示單元的內(nèi)容在顯示器上動態(tài)顯示。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表