实验八 矩阵键盘应用实验

实验八 矩阵键盘应用实验.doc

一、实验目的

  1. 掌握矩阵式键盘识别技术
  2. 进一步掌握数码管显示原理

二、实验主要仪器和环境

  1. Keil5
  2. 普中A2开发板
  3. stc-isp

三、实验内容

用单片机的并行口P1接矩阵键盘,在数码管上显示每个按键的“0—F”序号。对应的按键的序号排列如图所示:

四、流程框图

五、实验程序

KEY_VALUE   EQU     R0          ;R0 存储键值ORG     0000HAJMP    INIT
INIT:                           ;系统初始化MOV     DPTR,   #TAB1       ;指向字形码表首地址
LOOP:                           ;循环ACALL   KEYSCAN             ;ACALL   DTSEG               ;AJMP    LOOP                ;
DTSEG:                          ;数码管显示MOV     A   ,   KEY_VALUE   ;MOVC    A   ,   @A+DPTR     ;MOV     P0  ,   A           ;RET
KEYSCAN:                        ;矩阵按键扫描MOV     P1  ,   #0FH        ;进行列检测MOV     A   ,   P1          ;读取P1的值CJNE    A   ,   #0FH    ,XD     ;判断按键是否按下RET
XD: ACALL   DELAY10MS           ;延时10ms进行消抖MOV     A   ,   P1          ;再次读取按键的值CJNE    A   ,   #0FH    ,CSLIE ;再次检测键盘是否按下RET
CSLIE:                          ;测试列MOV     P1  ,   #0FH        ;MOV     A   ,   P1          ;
LIE1:                           ;第一列MOV     C   ,   P1.3        ;JC      LIE2                ;MOV     KEY_VALUE   ,   #0  ;第一列按键按下LJMP    CEHANG              ;跳转到测试行
LIE2:MOV     C   ,   P1.2        ;JC      LIE3                ;MOV     KEY_VALUE   ,   #1  ;第二列按键按下LJMP    CEHANG              ;
LIE3:MOV     C   ,   P1.1        ;JC      LIE4                ;MOV     KEY_VALUE   ,   #2  ;第三列按键按下LJMP    CEHANG              ;
LIE4:MOV     C   ,   P1.0        ;JC      CEHANG              ;MOV     KEY_VALUE   ,   #3  ;第四列按键按下LJMP    CEHANG              ;
CEHANG:                         ;测试行MOV     P1  ,   #0F0H       ;MOV     A   ,   P1          ;
HANG1:MOV     C   ,   P1.7        ;第一行JC      HANG2      MOV     A   ,   #0          ;ADD     A   ,   KEY_VALUE   ;第一行按键按下MOV     KEY_VALUE   ,   A   ;
LOOP1: MOV     C   ,   P1.7        ;JNC     LOOP1               ;检测按键松开LJMP    RETURN
HANG2:MOV     C   ,   P1.6        ;JC      HANG3               ;MOV     A   ,   #4ADD     A   ,   KEY_VALUE   ;MOV     KEY_VALUE   ,   A   ;第二行按键按下
LOOP2:MOV     C   ,   P1.6        ;JNC     LOOP2               ;检测按键松开LJMP    RETURN
HANG3:MOV     C   ,   P1.5        ;JC      HANG4MOV     A   ,   #8 ADD     A   ,   KEY_VALUE   ;MOV     KEY_VALUE   ,   A   ;第三行按键按下
LOOP3:MOV     C   ,   P1.5        ;JNC     LOOP3               ;检测按键松开LJMP    RETURN
HANG4:MOV     C   ,   P1.4        ;JC      RETURNMOV     A   ,   #12         ;ADD     A   ,   KEY_VALUE   ;MOV     KEY_VALUE   ,   A   ;第四行按键按下
LOOP4:MOV     C   ,   P1.4        ;JNC     LOOP4               ;检测按键松开
RETURN:RET
DELAY10MS:          ;@11.0592MHzPUSH 30HPUSH 31HMOV 30H,#18MOV 31H,#230
NEXT:DJNZ 31H,NEXTDJNZ 30H,NEXTPOP 31HPOP 30HRETTAB1:;0 - F共阴极字形码DB      03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0-9DB      77H,7CH,39H,5EH,79H,71H;A-FEND

六、程序分析

使用EQU伪指令重新命名R0为KEY_VALUE方便代码后续的理解。

本文使用行列扫描的方法进行矩阵按键的扫描。需要注意的是,在行扫描结束后,会有一个LOOP循环,该段程序的作用是检测按键是否松开,只有按键松开才算作一次按下。

其他部分都较为简单,不多做解释。

七、体会

遇到的问题:矩阵按下时,蜂鸣器会异响,观察原理图可知是因为控制蜂鸣器的是P1.5端口与矩阵按键扫描时有冲突。

解决的办法:只需要添加一个检测按键松开的LOOP循环即可解决,这样就不会反复扫描,反复拉高拉低P1.5导致蜂鸣器发出异响

八、测试报告

数码管显示对应按下的矩阵按键的键值

<微机原理>[汇编语言]-[实验八]矩阵键盘应用实验相关推荐

  1. 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真

    51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 文章目录 51单片机开发 矩阵键盘中断实验与简易计算器及proteus仿真 实验内容 一.实验一 矩阵键盘中断实验 数码管显示 1.仿 ...

  2. 山东大学单片机原理与应用实验 3.4 矩阵键盘扫描实验

    目录 一.实验题目 二.实验要求 三.实验过程及结果记录 1. 在Proteus 环境下建立图1所示原理图,并将其保存为keyscan_self.DSN 文件. 2. 编写控制源程序,将其保存为key ...

  3. 微机原理实验8254计算机钢琴,GitHub - SincereXIA/PianoMFC: 西电微机原理课设项目,键盘电子乐器演奏程序设计(电子琴),MFC...

    PianoMFC 西电微机原理课设项目,键盘电子乐器演奏程序设计(电子琴),MFC 需要连接西电微机原理实验室提供的 QTH9054 微机试验箱,使用其蜂鸣器发声,若不连接,程序会直接播放 mp3 文 ...

  4. 【单片机实验】矩阵键盘

    实验五 矩阵键盘 一.实验目的 1.掌握矩阵键盘的硬件电路原理和软件编程方法: 2.掌握利用数码管显示矩阵键盘键值的编程方法. 二.实验说明 本实验提供了一个4X4小键盘,开始先将4行置一,4列置零, ...

  5. 实验六 键盘扫描显示实验(矩阵键盘)

    实验六 键盘扫描显示实验(矩阵键盘) 一.实验要求 在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在八位数码管上显示出来. 实验程序可分成 ...

  6. 矩阵键盘简易计算机设计报告,矩阵键盘设计实验报告

    <矩阵键盘设计实验报告>由会员分享,可在线阅读,更多相关<矩阵键盘设计实验报告(21页珍藏版)>请在人人文库网上搜索. 1.南京林业大学实验报告基于 AT89C51单片机 4x ...

  7. 微型计算机电子琴实验报告,《微机原理与接口技术》简易电子琴实验报告.doc...

    <微机原理与接口技术>简易电子琴实验报告 . 信息学院信息安全系专业课程 <微机原理与接口技术> 简易电子琴实验报告 目录 一.设计要求 ................... ...

  8. 计算机控制实验总结电机调速,实验八-电机调速实验.docx

    实验八-电机调速实验.docx (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验八 电机调速实验一.实验目的1. 了解直流电机 ...

  9. 简易模型计算机性能分析报告,计算机组成原理 实验八 简单模型计算机实验解析.doc...

    实验八 简单模型计算机实验 实验目的 通过实验分析简单模型机结构,了解计算机的工作原理. 掌握计算机微程序控制器的控制方法,掌握计算机指令执行过程 实验原理 基本整机模型数据框图如图所示,计算机数据通 ...

最新文章

  1. 科大星云诗社动态20210410
  2. 计算机二级操作范文,计算机二级考试(范文).doc
  3. python实现倒n字形排列_Leetcode问题库——Z形变换(Python),补充X形变换,字形
  4. Servlet其他关联类---ServletContext类
  5. 文件拷贝(字符、字节)
  6. Microsoft Enterprise Library 5.0 系列(四) Logging Application Block
  7. Postman工具使用
  8. 简述关系型数据库和非关系型数据库
  9. java遇到无穷大抛异常_Java中一个for语句导致无穷大死循环的例子
  10. 如何以子类的形式运行多进程?
  11. android中jni数据加密,Android jni字符串如何加密
  12. 屏幕录像软件哪个好用?怎么快速录制清晰无水印的视频?
  13. 远程计算机无法操作,win7系统的QQ远程协助无法控制计算机的问题的解决方法
  14. Windows徽标键(WinKey)的屏蔽和恢复
  15. 你的Web系统真的安全吗?
  16. iis信息服务器win8,win8配置iis服务器
  17. 签到 电梯 电脑 保温杯
  18. 大小是否对自然语言文本生成很重要
  19. 怎么给php加音乐,视频中添加背景音乐 怎么给视频添加背景 给视频中某段加背景音乐...
  20. 笔记本电脑的S0-S5的状态

热门文章

  1. 【极客日报】约会网站228万用户数据遭泄露;Uber 大量高管离职;周鸿祎称360曾发现特斯拉有漏洞...
  2. 【论文翻译】HinCTI: 基于异构信息网络的网络威胁情报建模与识别系统
  3. c语言研究死循环的原因(例码)
  4. 悬壶济众生,公益也先行——郭俊海主任
  5. HC595简单原理及proteus仿真(一)草履虫能听懂版
  6. Word通配符(正则表达式)批量替换举例
  7. C++友元知识点详解
  8. matplotlib - 2D 与 3D 图的绘制(下)
  9. TypeSprict
  10. 我年轻的时候通过跳槽涨工资