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

这篇具有很好参考价值的文章主要介绍了<微机原理>[汇编语言]-[实验八]矩阵键盘应用实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实验八 矩阵键盘应用实验

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

一、实验目的

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

二、实验主要仪器和环境

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

三、实验内容

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

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

四、流程框图

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

五、实验程序

KEY_VALUE   EQU     R0          ;R0 存储键值
    ORG     0000H
    AJMP    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   ,   #4
    ADD     A   ,   KEY_VALUE   ;
    MOV     KEY_VALUE   ,   A   ;第二行按键按下
LOOP2:
    MOV     C   ,   P1.6        ;
    JNC     LOOP2               ;检测按键松开
    LJMP    RETURN
HANG3:
    MOV     C   ,   P1.5        ;
    JC      HANG4
    MOV     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      RETURN
    MOV     A   ,   #12         ;
    ADD     A   ,   KEY_VALUE   ;
    MOV     KEY_VALUE   ,   A   ;第四行按键按下
LOOP4:
    MOV     C   ,   P1.4        ;
    JNC     LOOP4               ;检测按键松开
RETURN:
    RET
DELAY10MS:			;@11.0592MHz
	PUSH 30H
	PUSH 31H
	MOV 30H,#18
	MOV 31H,#230
NEXT:
	DJNZ 31H,NEXT
	DJNZ 30H,NEXT
	POP 31H
	POP 30H
	RET

TAB1:;0 - F共阴极字形码
    DB      03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;0-9
    DB      77H,7CH,39H,5EH,79H,71H;A-F
        
    END

六、程序分析

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

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

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

七、体会

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

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

八、测试报告

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

<微机原理>[汇编语言]-[实验八]矩阵键盘应用实验文章来源地址https://www.toymoban.com/news/detail-497089.html

到了这里,关于<微机原理>[汇编语言]-[实验八]矩阵键盘应用实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【汇编语言与微机原理】 期末复习题整理(小题)

    在机器数(补码)中,对真值0的表示是唯一的。 与十进制数56等值的二进制数是(111000) 二进制数10101转换成十进制数是(21)。 十进制数-75用二进制数10110101表示,其表示方式是(补码)。 关于补码机器数的描述中错误的是(不可能出现一个数的补码与其原码相同 ) 某计

    2024年01月15日
    浏览(32)
  • 实验五 键盘按键与数码管显示(汇编与微机原理)

    实验目的: 熟悉星研集成开发环境,掌握微机接口程序编写调试的基本方法。 掌握矩阵式键盘的工作原理及识别键盘按键的方法。 掌握8段数码管显示数字或字符的工作原理和它的使用方法。 掌握用8255扫描键盘及用8255刷新数码管显示的方法。 实验:       在(2行*8列)小

    2024年02月04日
    浏览(35)
  • 【微机原理课设protues-汇编】基于8086四种波形发生器仿真设计-基于8086数码管矩阵键盘控制设计-基于8086微机原理直流电机控制系统-基于单片机PWM直流电机控制系统设计汇编

    文章转自电设屋,资料百度网盘下载地址  https://www.aiesst.cn/share.html 目录 1207基于8086四种波形发生器仿真设计-微机原理汇编仿真资料 1202基于8086数码管矩阵键盘控制设计-全套资料 1218基于8086智能汽车控制系统设计-微机原理课设 1209基于8086微机原理直流电机控制系统-设计资料

    2024年02月12日
    浏览(30)
  • 汇编语言实验——大数相乘

    1.1实验内容 实现两个十进制大整数的相乘(100位以上),输出乘法运算的结果。 1.2实验环境 Microsoft Visual Studio 2017+masm 32 1.3实验思路 1.3.1数据读入 大数相乘由于输入的数字过大而不能用一个dword来存储,所以需要使用数组来存取每一位,每一位大小范围在0-9中,按位读取输入

    2024年02月09日
    浏览(29)
  • 南京邮电大学汇编语言程序设计实验一(汇编语言语法练习与代码转换)

    排除语法错误:给出的是一个通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序,但有很多语法错误。要求实验者按照原样对源程序进行编辑,汇编后,根据TASM给出的信息对源程序进行修改,知道没有语法错误为止。然后进行链接,并执行相应可

    2024年02月08日
    浏览(45)
  • 《汇编语言》王爽(第四版)第八章 实验7

    文章目录 前言 一、题目 二、分析 1.内存分配情况 2.数据结构分析 3.实现思路 (1)设置段寄存器 (2)复制“年份”数据 (3)复制“年总收入”数据 (4)复制“雇员人数”数据 (5)计算“人均收入” 三、代码 1.实现代码 2.优化代码 3.最终代码 总结 王爽老师《汇编语言》

    2024年02月04日
    浏览(59)
  • 《汇编语言》王爽(第四版) 第十章 实验10

    文章目录 前言 一、子程序1 显示字符串 1.实验任务 2.分析 (1)如何在指定位置显示 (2)如何显示指定颜色 (3)保存子程序中用到的寄存器 3.代码 二、子程序2 解决除法溢出的问题 1.实验任务 2.代码 三、子程序3 数值显示 1.实验任务 2.显示一个word型数据的代码 总结 本文是

    2024年02月08日
    浏览(30)
  • 单片机原理与接口技术(汇编语言)

    学习建议 结合哈工大的教程视频及课件学习 【公开课】哈工大 单片机原理及应用 单片机基础 计算机 计算机只能识别存储数码0和1 微型计算机中,负数常用补码表示 电子元器件的电位被区分为两种状态:高电位和低电位 常见高电位范围:2V ~ 5V 常见低电位范围:0V ~ 0.8V 正

    2024年01月20日
    浏览(36)
  • 实验一8086计CPU系统寻址方式和汇编语言程序设计

    实验一8086计CPU系统寻址方式和汇编语言程序设 一、实验目的 (1)掌握8086CPU系统的逻辑地址和寻址方式。 (2)掌握8086CPU系统中机器数的表示方式。 (3)掌握指令的机器码表示方法。 (4)掌握堆栈的概念和操作过程。 (5)掌握集成开发环境下的程序设计和调试方法。 (6)掌握汇编语言实

    2023年04月22日
    浏览(34)
  • 南京邮电大学汇编语言程序设计实验二(用户登录验证程序的设计)

    1.掌握循环程序的编写以及结束循环的方法。 2.掌握DOS、BIOS功能调用的使用方法。 用户登录验证程序的实现 程序执行后,给出提示操作,请用户键入用户名和密码;用户在键入密码时,程序不回显键入字符;只有当用户键入的用户名,密码字符串和程序内定的字符串相同时

    2023年04月18日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包