当前位置:   article > 正文

汇编程序——根据开关状态在7段数码管上显示数字或者字符_七段数码管显示字符

七段数码管显示字符

题目描述
  • 根据开关状态在7段数码管上显示数字或者符号
  • 设输出接口的地址为F0H
  • 设输入接口的地址为F1H
  • 当开关状态分别为0000~1111时,在七段数码管上显示0到F十六个字符
  • 电路图如下

在这里插入图片描述

先验知识回顾
I/O接口
  • I/O串口的构成:
    • 译码器:
    • 控制逻辑

在这里插入图片描述

  • 数据输入寄存器:使用三态门
    • 三态门:就是一个二极管,加上一个控制电路E
    • E是高电平,就是常规触发器
    • E是低电平,电路处于一种关断的状态
  • 数据输出寄存器:锁存器
    • 锁存器,就是由CP控制的容器
    • CP控制写,可以一直读,一般是要和三态门一块使用的
具体的作用
  • 速度匹配问题:主要是实现数据的缓冲和暂存
    • 信箱机制
    • 南桥/北桥
  • 信号的驱动能力
    • 数码管的常规电流是mA级别,计算机不能驱动的电流比之大的点器
74LS244
  • 概述:

    • 含8个三态门的集成电路芯片
    • 在外设具有数据保存能力时,用来输入数据
  • 真值表:
    在这里插入图片描述

  • 对数据并没有锁存功能,根据控制信号的状态,对输入的数据直接进行输出。

74L138译码器
  • 图示
    在这里插入图片描述
  • 引脚功能:
    • A0~A2地址输入端
      • A0~A2对应Y0——Y7;A0,A1,A2以二进制形式输入,然后转换成十进制,对应相应Y的序号输出低电平,其他均为高电平
    • VCC:电源正极
    • GND:接地
    • Y0~Y7:输出端,高电平有效,上面画一个横线就是低电平有效
    • E1,E2,E3选通端:
      • 当一个选通端(E1)为高电平,另两个选通端()和()为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。
  • 使用
    • 将对应的位有二进制转成十进制即可。
74LS273
  • 特点:
    • 含有单向输出的8个触发器
    • 缓冲的时钟输入和直接的清零输入,D0~D7
    • 每一个触发器均有单独的数据输入,Q0~Q7
    • 正脉冲触发,低电平清除,常用做数据锁存器和地址锁存器
    • CP锁存器控制端,上升沿默认是上升沿触发锁存

这里有一个讲的挺好的博客,传送门

具体电路图分析
译码器分析

在这里插入图片描述

  • 输入和输出地址
    在这里插入图片描述
  • 通过地址译码能够选中当前的端口地址
    • F0H是输出地址:CP为真,上升沿有效
    • F1H是输入地址:E1有效,数据可以从I输入,输出到O
      在这里插入图片描述
  • 在A3~A7之间中使用门电路任意组合,形成两个低电平一个高电平的输出。
74LS244分析

在这里插入图片描述

  • 前提:地址端输入为写时,即地址为F1H时,Y1输出为低电平,经过或电路输出为低电平,E1为低电平有效,故I端口的输入可以输出到O端口中,即键盘上的按钮可以输出到D0到D3中,保存到内存中
74LS273部分分析

在这里插入图片描述

  • 前提:当地址为F0H时,Y0为低电平,输入写指令,将内部数据写入到锁存器中,CP低电平有效,上升沿,实现数据从D0到D7的写入,经过反相器,低电平,实现二极管的发光的效果。
总的效果分析

对应的七段数码管的编码

在这里插入图片描述

程序段
  • 要求:是依次分时间将F到0的十六个字符送入到特定的地址中,并调用之前的程序实现计时功能。
assume cs:code,ds:data,ss:stack
data segment ; 数据段定义
	number db 70,69,68,67,66,65,57,56,55,54,53,52,51,50,49,48
		; 十六个输出的倒计时数字,按照十六进制保存的
data ends

stack segment
    dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0  ;36个字节的栈
stack ends

code segment
start:
	;指定数据段的段地址
	mov ax,data
	mov ds,ax
	
	;设置栈段的栈顶地址
	mov ax,stack
    mov ss,ax 
    mov sp,20H

	;设定计时循环的次数
	mov cx,16
	
	;将number的偏移地址送入到bx中
	lea bx,number

show:	

	;将bx中的数据保存到的ax中
	mov ax,[bx]
	
	; 调用显示数字子程序
	call print 

	; 调用延时子程序
	call delay 
	
	;bx向后移动一位
	inc bx

	loop show  ; 循环显示16个数字
	mov ax,4c00h
	int 21h

;打印子程序
print proc
	; 保护现场
	push ax
	push dx
   	
	;将数据打印到频幕上
	mov dl,al
	mov ah,02h
	int 21h
	
	
	pop dx
	pop ax
	ret
print endp

;延时子程序
delay proc
		; 保护现场
		push ax
		push cx
		push dx
  
		; 中断号:15H BIOS中断
	              
	                ;(1) AH:86H
		;(2) CX:DX= 延时时间(单位是微秒),CX是高字,DX是低字
		mov ah,86h
   	    mov cx,0FH
    	mov dx,4240H     
		 ; 调用15号中断延时
    		int 15h 
    		
		;还原现场
		pop dx
		pop cx
		pop ax
		ret
delay endp

code ends
end start
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/225903
推荐阅读
相关标签
  

闽ICP备14008679号