找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3787|回复: 0
打印 上一主题 下一主题
收起左侧

数码管显示4x4键盘的键号的单片机汇编程序与仿真

[复制链接]
跳转到指定楼层
楼主
数码管显示4x4键盘的键号仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

目录..................................................................................................................................................1
数码管显示4x4矩阵键盘的键号    2
摘要    2
    关键词    2
第一章 硬件    2
AT89C51    2
4*4键盘    6
第二章 软件    9
    KEIL4    9
   汇编程序    10
   Proteus    15
   仿真电路图    17
第三章 实物    17
   材料    17
   实物展示    18
第四章 课程设计心得    19
参考文献    20


单片机源程序(汇编语言)如下:
  1. scan_code EQU 30H
  2.           ORG 0000H
  3.                   JMP start
  4.                   ORG 0030H
  5. start:   
  6.           MOV P0,#0FFH ;初始化p0口,使输出无显示
  7. loop:                                    ; 循环调用read—key获取键盘信息,若键盘按下,
  8.          CALL read_key        ; 则用R7返回键值信息
  9.          CJNE R7,#0FFH,next         ; 若R7返回值不为0xff,则调用显示函数
  10.                   JMP loop
  11. next:                                             ;显示程序
  12.           MOV A,R7
  13.                   MOV DPTR,#disp_code
  14.                  MOVC A,@A+DPTR
  15.                   MOV P0,A
  16.                   JMP loop
  17. read_key:
  18.           MOV scan_code,#7FH
  19.                   MOV P1,#0FH
  20.                   MOV A,P1
  21.                   MOV R7,#0FFH
  22.                  CJNE A,#0FH,wait_key   ;键盘按下则p1的值会改变
  23.                   JMP end_key
  24. wait_key:
  25.          CALL delay_10ms        ;延时10ms,若p1口仍右键按下,则跳到scan—key
  26.                   MOV A,P1
  27.                   MOV R7,#0FFH
  28.                   MOV R6,#4
  29.                  CJNE A,#0FH,scan_key
  30.                   JMP end_key
  31. scan_key:
  32.           MOV P1,scan_code       ;将0x7f循环右移并赋给P1
  33.                   MOV A,P1
  34.                  CJNE A,scan_code,get_key;p1的值改变则确定出其行数
  35.                    RR A
  36.                   MOV scan_code,A
  37.                  DJNZ R6,scan_key
  38.                   JMP end_key
  39. get_key:
  40.    ;       MOV P1,#0FH
  41.         ;          MOV R1,P1
  42.         ;         CJNE R1,#0FH,$
  43.                   MOV R7,#4
  44. get_key0:
  45.           JNB ACC.0,add_r6;移位循环判断最低位,为0则确定其列数
  46.                    RR A
  47.                  DJNZ R7,get_key0
  48.                   MOV R7,#0FFH
  49.                   JMP end_key
  50. add_r6:
  51.           DEC R6        ;从第0个键盘数起,数满(R6-1)*4个键盘,再加上第R6行
  52.                   MOV A,R6      ;的列数R7-1,便得第几个键盘按下
  53.                   MOV B,#4
  54.                   MUL AB
  55.                   DEC R7
  56.                   ADD A,R7
  57.                   MOV R7,A
  58. end_key:
  59.           RET
  60. delay_10ms:
  61.           MOV R7,#10
  62. delay0:
  63.           MOV R6,#0FAH
  64. delay1:
  65.           NOP                    ;   1us
  66.                   NOP                        ;  1us
  67. ……………………

  68. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码



所有资料51hei提供下载:
数码管显示4x4矩阵键盘的键号.zip (354.64 KB, 下载次数: 32)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表