实验五 键盘按键与数码管显示(汇编与微机原理)

  键盘按键与数码管显示

实验目的:

熟悉星研集成开发环境,掌握微机接口程序编写调试的基本方法。

掌握矩阵式键盘的工作原理及识别键盘按键的方法。

掌握8段数码管显示数字或字符的工作原理和它的使用方法。

掌握用8255扫描键盘及用8255刷新数码管显示的方法。

实验:

      在(2行*8列)小键盘上任意按下某个按键,该键的键值将同时显示在8个数码管上。按键松开时显示上一次的按键值。

(2行*8列)小键盘:

     实验箱上2行*8列小键盘上当某个按键被按下时,该键所在行的行线值为0、所在列的列线值也为0。根据这个特点结合上述原理图采用“列扫描法”可以识别出当前被按下的按键。

8个数码管:

     实验箱上8个8段数码管。每个数码管有8个笔段,按逆时针方向依次称为a段、b段、c段、d段、e段、f段、g段、dp段,8个段接收来自外部的一个8位二进制数(D7—D0),并且笔段a 对应数据位D0……..笔段dp 对应数据位D7 ,由于数码管是共阳的,当段码端接收低电平时相应的笔段就会点亮,段码端接收的数据决定了数码管显示的具体内容。(例:要显示数字0,则笔段a、b、c、d、e、f  都必须点亮,笔段g、h不应该点亮,8个段接收的值应该是11000000,数据D0--D7就应该是11000000(0C0H),让段码端接收11000000它就会显示0)。

     数码管的位码控制GND端,当它接收低电平时该数码管会被选中有效工作:即这时只要段码端有有效的数据数码管就会显示数据,当它接收高电平时数码管不工作,这时即使段码端有有效数据数码管也不会显示任何数据。

8255各端口的分工:

      8255的A口工作在方式0输出状态控制数码管的段码;B端口工作在方式0输出状态控制数码管的位码,并且同时控制键盘列线的扫描;C端口工作在方式0输入状态,其中的PC0、PC1控制键盘的第一、第二行行值的读入。

实验代码:

.MODEL	TINY		
PA_8255		EQU	0270H           
PB_8255		EQU	0271H
PC_8255		EQU	0272H
CTRL_8255	EQU	0273H
.STACK	100
.DATA    
buffer          DB      ?               
SEG_TAB		DB	0C0H, 0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H    DB	080H, 90H, 88H, 83H,  0C6H,0A1H,86H,8EH,0FFH .CODE
START:  	MOV     AX,@DATAMOV     DS,AXMOV	ES,AXNOP		MOV	DX,CTRL_8255	;8255初始化MOV	AL,89HOUT	DX,AL		LEA	SI,bufferMOV	AL,10H          ;默认数码管不显示MOV     [SI],ALCALL	DIR             ;调用显示子程序MAIN2:		LEA	DI,buffer       CALL	Getkey          ;得到按键在SEG_TAB中的值放入ALSTOSB                   ;将AL赋值给DI指向的地址CALL	DIR            		JMP	MAIN2DIR		PROC	NEAR            PUSH	AXPUSH	BXPUSH	DXLEA	SI,buffer	;置显示缓冲器初值	MOV	AL,[SI]LEA	BX,SEG_TAB				XLAT			;查表取显示数据->ALMOV	DX,PA_8255OUT	DX,AL		;AL段数据->8255 PA口		MOV     DX,PB_8255MOV     AL,0		;位码控制GND端低电平有效, 显示8位数据管OUT     DX,AL           CALL	DL1ms				POP	DXPOP	BXPOP	AXRET
DIR		ENDPDL1ms		PROC	NEAR		PUSH	CXMOV	CX,500LOOP	$POP	CXRET
DL1ms		ENDPGETKEY		PROC	NEAR	       PUSH	BXPUSH	DX
LK:		CALL	AllKey		;调用判有无闭合键子程序		JNE	LK1             CALL	DIR		;调用显示子程序JMP	LK             ;补充程序完成列扫描,得到按键在SEG_TAB中的值放入AL
LK1:		MOV BL, 0FEH	;0FEH-->BL 第0列开始扫描,用BL保存列线扫描口数值,从PB0开始MOV BH, 0	;0-->BH   用BH保存列线值,从第0列开始
LK2:		MOV DX, PB_8255	;写B口位码控制端  MOV AL, BL	;OUT DX, AL	;将BL写入B口列线控制端MOV DX, PC_8255	;读C口IN  AL, DX	;TEST AL, 1	;PC0不等于0转向LONE继续判断PC1JNZ  LONE	;MOV AL, 0	;0行有键闭合,0-〉AL  PC0等于0表示0行有键闭合,用BH存放按键值JMP	LKP             LONE:		TEST AL, 2          JNZ NEXT	;PC1不等于0则转向NEXT列计算器+1MOV AL, 08	;1行有键闭合,08H-->AL	        LKP:		ADD BH, AL	;用BH保存键值LK3:		CALL	AllKey         JNE	LK3     ;判断释放否MOV AL, BH	;BH键号->AL		JMP EXITNEXT:		INC BH		;列计数器加1		TEST BL, 80H	;JZ EXIT		;判是否已扫到最后一列则转向KENDROL BL, 1	;将BL循环左移一位JMP	LK2
EXIT:		POP	DXPOP	BXRET                     
GETKEY		ENDPAllKey		PROC	NEAR            ;判断键盘是否有按键闭合        MOV	DX,PB_8255                                                XOR	AL,AL                                      OUT	DX,AL		;全"0"->扫描口,列线控制端低电平有效MOV     DX,PC_8255      ;读C口数据                                     IN	AL,DX		;读键状态		 AND	AL,03H		;取低二位	CMP     AL,3            ;取C口低二位和00000011b比较RET
AllKey		ENDPEND	START

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/173173.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

优秀的员工成为公司的管理者之后,为何表现平庸?因为他们缺乏这些思维

在企业的实践中,我们发现平时能力最强的员工,在被提拔到管理层之后就慢慢变得平庸了,再也不是以前那个无所不能的“企业能人”了,甚至在一些事情的处理上还会有些笨拙。面对这种情况,我们一定会感觉很疑惑,…

Eclipse和Intellij IDEA的格式化代码快捷键

Eclipse和Intellij IDEA的格式化代码快捷键 eclipse的格式化快捷键是 Windows/Linux: Ctrl Shift F Mac: Cmd Shift F 按下这个组合键将会对当前编辑的代码进行格式化,使其符合你在Eclipse配置中定义的代码样式规范。你可以在Eclipse的偏好设置中配置代码格式化…

PC8231(CC/CV)5V/2.4A同步降压芯片 频率可调 限流欠压补偿

一.概述 PC8231 是一款同步降压转换器, 该转换器可驱动输出 2.4A 负载电流。 设计允许 PC8231 在 9V 到40V 宽输入电压范围内工作。通过将 COMP/EN 引脚逻辑电平拉低来实现外部关断功能,并进入待机模式。外部补偿使反馈控制环路具有良好的线…

JavaScript 原型,原型链的特点

JavaScript 的原型(Prototype)和原型链(Prototype chain)是 JavaScript 面向对象编程中的重要概念。 原型(Prototype) 在 JavaScript 中,每个对象都有一个原型对象,而这个原型对象…

CRM的智能招投标对企业有什么意义?

如今CRM系统的生态系统越来越壮大,这些工具的集成极大地丰富了CRM系统的应用场景,例如CRM系统集成企业微信等社交媒体为获客提供便利;再比如CRM集成ChatGPT提高邮件内容质量,对于经常接触招投标项目的业务人员来说,在C…

英特尔工作站:助力专业用户实现高效创作

原创 | 文 BFT机器人 英特尔工作站是由全球知名的英特尔公司设计和开发的一款计算平台。英特尔在工作站处理器领域将其产品分为性能型和移动型两类,它的诞生旨在满足专业用户在科学、工程、设计等领域对高性能计算的需求。英特尔工作站配备了最新的英特尔处理器、大…

EI期刊论文复现:考虑电动汽车可调度潜力的充电站两阶段市场投标策略程序代码!

本程序代码参考EI期刊论文《考虑电动汽车可调度潜力的充电站两阶段市场投标策略》,程序中基于历史数据评估可调度潜力,由联合报价模型确定节点边际电价,作为报价的参考,包含个体竞价模式,纳什博弈竞价,算例…

docker (简介、dcoker详细安装步骤)- day01

一、 为什么出现 Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应…

Git远程仓库常用开发命令和理解

远程仓库 创建与合并分支 每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。 HEAD严格来说不是指向提交,而…

01.vue3大事件——项目初始化、技术介绍

后台数据管理系统 - 项目架构设计 在线演示:https://fe-bigevent-web.itheima.net/login 接口文档: https://apifox.com/apidoc/shared-26c67aee-0233-4d23-aab7-08448fdf95ff/api-93850835 接口根路径: http://big-event-vue-api-t.itheima.net 本项…

不能打电话的流量卡真的合法?一篇文章让你读懂这个问题!

不能打电话的流量卡合法吗?主要还是看你选择的流量卡类型了。 ​  市面上不能打电话的流量卡大致分为两种: 一种是不带手机号码的物联卡,企业设备采购的话是合法的,一般运营商在将物联卡发售给企业法人后,为每个企业…

工作流能实现自动化吗?应该用什么工具?

研究显示,CRM系统工作流自动化软件不仅能简化冗余的工作且不需要监控和指导就能提高员工的工作效率。企业需要工作流自动化软件吗?答案是肯定的,工作流自动化的好处有哪些? 为什么企业需要工作流自动化软件 每家企业都希望降本增…

项目启动出现白屏问题需要刷新后才能显示解决方案

Vue项目起始时出现白屏问题需要刷新后才能显示解决方案 项目加\<div>为什么页面会出现加载过慢问题&#xff1f;如何让页面变得更快懒加载静态资源缓存 Webpack解决方案减少Js冗余操作 项目加<div> 在vue中,我们常常会因为在template模板中没有加div标签而使得页面…

企业营销管理能够实现自动化吗?怎么做?

当今企业面临着越来越多的营销难题&#xff1a;如何有效培育潜在客户、如何提高营销活动的效果、如何优化营销资源的分配......企业的营销管理怎么做&#xff1f;或许CRM系统营销自动化会起到作用。 客户细分&#xff1a; 企业可以通过CRM的客户细分功能&#xff0c;根据客户…

C#文件夹基本操作(判断文件夹是否存在、创建文件夹、移动文件夹、删除文件夹以及遍历文件夹中的文件)

判断文件夹是否存在时&#xff0c;可以使用Directory类的Exists()方法或者DirectoryInfo类的Exists属性来实现。 一、判断文件夹是否存在 1.Directory类的Exists()方法 Exists()方法用于确定给定路径是否引用磁盘上的现有目录&#xff0c;语法如下。 public static bool Ex…

cesium雷达扫描圈

import * as Cesium from "cesium"; let lastStage""; // 圆扩散 export function showCircleScan(viewer,lon, lat,color,maxRadius,height) {var cartographicCenter new Cesium.Cartographic(Cesium.Math.toRadians(lon), Cesium.Math.toRadians(lat),…

内衣洗衣机和手洗哪个干净?最好用的迷你洗衣机

随着大家工作的压力越来越大&#xff0c;下了班之后只能想躺平&#xff0c;在洗完澡之后看着还需要手洗的内衣裤真的很头疼。有些小伙伴还有会攒几天再丢进去洗衣机里面一起&#xff0c;而且这样子是非常不好的&#xff0c;用过的内衣裤长时间不清洗容易滋生细菌&#xff0c;而…

单片机学习3——数码管

数码管&#xff0c;根据内部结构&#xff0c;可分为共阴极数码管和共阳极数码管。七段发光管加上一个小数点&#xff0c;共计8段。因此&#xff0c;我们对它编程的时候&#xff0c;刚好是用一个字节。 数码管的显示方式&#xff1a; 1&#xff09;静态显示&#xff1b; 2&…

QT网络协议知识体系(一)

//获取主机的名称和ip地址 //获取主机的所有信息

终于等到你!常用的组织架构图模板,高清图片一键导出

组织架构图是一种用来展示一个组织内部人员和职责关系的图表。通过组织架构图&#xff0c;我们可以清晰地了解一个组织的层级架构和各个部门之间的关系。在本文中&#xff0c;我们将向大家推荐8个常用的组织架构图模板&#xff0c;帮助你快速制作出专业的组织架构图。 1. 市场营…