【74LS273扩展I/O口实验】—— 微机原理实验

一、实验要求

  1. LED灯控制:以74LS273作为I/O口,编写程序控制8个单色LED灯,I/O端口号为168H。
  2. 数码管显示:设计一七段LED数码管显示电路,编写程序,实现在数码管从0-9的循环显示(间隔1秒)。(可使用74LS47作为LED的显示译码)思考:如果要求循环速度可调,即显示间隔可变,系统设计应做什么样的变化。

二、实验目的

  1. 学习简单I/O接口的方法。
  2. 学习74LS273的使用方法。
  3. 学习编制数据向外设输出的程序。
  4. 学习LED数码管的显示方法。

三、实验电路

实验1

(1)原理分析:

  • 74LS273为锁存器,可以作为I/O数据寄存器保存CPU与外设之间的传送数据。D0-D7是数据输入端口,Q0-Q7是数据输出端口,8个数据输出可以分别连接8个单色LED灯。CPU通过控制D0-D7从而达到控制锁存数据Q0-Q7输出的目的。CPU输出与8个LED状态的关系见下表,8个LED的编号见下图:
    在这里插入图片描述
    在这里插入图片描述
  • I/O端口号为0168H,当地址线A15-A0为0000 0001 0110 1000时选中74LS273,此时D0-D7数据线上数据便可以输出。译码电路的作用就是当A15-A0这16根地址线中的A3,A5,A6,A8为1,其余为0时,允许数据输出。
  • 8个LED灯采用共阳极接法,阳极通过电阻后接电源,阴极需要给低电平才能够导通,这就对应了上表中的数据Q0-Q7输出。LED灯接法见上图:
  • 对于延时问题,采用程序循环方式实现:
                 MOV CX,0E000H
                 LOOP $
      LOOP $ 的作用是一直执行当前指令(即LOOP指令),可以用来延时。每执行一次LOOP指令,CX自动减1。

(2)电路连接图:
在这里插入图片描述

实验2

(1)原理分析:

  • 同第一部分,采用74LS273做I/O接口数据锁存器,默认I/O接口地址为0168H。
  • 74LS47的功能是将BCD码数字直接转化成七段数码块中的数字。74LS47引脚见图2,七段数码管见图3。向74LS47的DCBA四个端口输入0-9的二进制数,QA-QG对应的输出见表2,默认LT和BI为无效状态。
  • 数码管采用共阳极接法,当a-g对应输入端口输入低电平时,对应的数码管亮。反之,输入为高电平时,对应的数码管熄灭。
    在这里插入图片描述
  • 将74LS273的Q3-Q0分别连接到74LS47的DCBA,将74LS47的QA-QG分别连接数码管。Q3-Q0从0000B到1001B变化,数码管上就可以显示0-9的数字。那么,通过控制AL的值,从而控制D0-D7从00H到09H变化,即可完成题目要求。
  • 显示间隔采用控制程序循环次数实现,即通过改变CX的值,从而改变显示间隔:
       MOV CX,0E000H
       LOOP $
    在这里插入图片描述

(2)电路连接图:
在这里插入图片描述

四、实验代码及实验结果

实验1

(1)实验代码:

IO0 EQU 8000H
CODE SEGMENT
    ASSUME CS:CODE
START:  MOV DX,IO0
        MOV AL,0FEH
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,0FDH
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,0FBH
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,0F7H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,0EFH
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,0DFH
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,0BFH
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,07FH
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        JMP START
ENDLESS:
        JMP ENDLESS
CODE    ENDS
        END START

(2)实验结果:

在这里插入图片描述

实验2

(1)实验代码:

IO0 EQU 8000H
CODE SEGMENT
    ASSUME CS:CODE
START:  MOV DX,IO0
        MOV AL,00H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,01H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,02H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,03H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,04H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,05H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,06H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,07H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,08H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        MOV AL,09H
        OUT DX,AL
        MOV CX,0E000H
        LOOP $
        
        JMP START
ENDLESS:
        JMP ENDLESS
CODE    ENDS
        END START

(2)实验结果:

扫描二维码关注公众号,回复: 15055149 查看本文章

在这里插入图片描述

五、实验总结

参考资料:74LS47中文资料汇总; Proteus电路仿真及应用
这是第六次线上实验,是74LS273扩展I/O实验,通过本次实验,我学会了简单I/O接口的方法和74LS273的使用方法。除此之外,我还学会了LED数码管的显示方法,实验过程中,我还简单的学习了编程数据向外设输出的程序。

猜你喜欢

转载自blog.csdn.net/m0_51913750/article/details/130127376