微机组成原理与接口技术 - 实验报告

一、设计目的:

  1. 了解可编程并行接口 8255 的内部结构
  2. 掌握工作方式、初始化编程及应用

二、设计内容:

  1. 交通灯实验:利用 8255 的 A 口模拟交通信号灯,
  2. 在完成①基础上,增加通过读取开关控制交通红绿灯的亮灭时间

设计思路:

需要一个计时器,可以使用CPU内部的计时器或者外部的硬件计时器。计时器需要能够启动、停止、清零,并且能够设置倒计时时间。可以使用中断来检测计时器是否到达设定时间。接下来需要控制红、黄、绿灯的亮灭,可以使用IO口输出高低电平来控制。为了实现绿灯变为红灯的3s内,绿灯灭而黄灯亮的效果,可以使用状态机来实现灯的控制逻辑。状态机需要根据当前时钟周期、计时器状态和自身状态进行转移。最后需要将倒计时数值显示在2位七段数码管上。可以使用IO口输出数字对应的LED段选信号和共阳/共阴信号,使得对应的数字在数码管上亮起来。

三、设计任务和要求:

在十字路口的东西、南北方向各装有红、黄、绿指示灯,设计一个交通灯实时控制系统。要求:

  • 东西向和南北向通行时间分别为15s和30s
  • 由绿灯变为红灯的3s内,绿灯灭而黄灯亮
  • 时间由2位七段数码管做倒计时显示

四、可选器材:

QTHPCI 软件,8255 可编程并行接口电路

五、参考资料:

《微机组成原理与接口技术》

六、汇编程序及电路图

ORG 100H          ; 程序起始地址为100H

INIT:
    MOV AL, 80H   ; 初始化端口地址,将8255控制字写入控制寄存器
    OUT 0A8H, AL  ; 控制字为80H,即使能8255芯片
    CALL DISP     ; 显示初始值
    MOV CX, 15    ; 初始计时器值为15秒
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒
    MOV CX, 30    ; 初始计时器值为30秒

TRAFFIC_LIGHT:
    MOV AL, 01H   ; 设置Port B的输出值为00000001B,表示东西方向绿灯亮,其他灯灭
    OUT 0AAH, AL  ; 将输出值写入Port B
    CALL DISP     ; 显示计时器值
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒
    MOV AL, 02H   ; 设置Port B的输出值为00000010B,表示东西方向黄灯亮,其他灯灭
    OUT 0AAH, AL  ; 将输出值写入Port B
    CALL DISP     ; 显示计时器值
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒
    MOV AL, 04H   ; 设置Port B的输出值为00000100B,表示南北方向绿灯亮,其他灯灭
    OUT 0AAH, AL  ; 将输出值写入Port B
    CALL DISP     ; 显示计时器值
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒
    MOV AL, 08H   ; 设置Port B的输出值为00001000B,表示南北方向黄灯亮,其他灯灭
    OUT 0AAH, AL  ; 将输出值写入Port B
    CALL DISP     ; 显示计时器值
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒

    DEC CX        ; 计时器减1
    JNZ TRAFFIC_LIGHT ; 如果计时器不为0,则继续执行TRAFFIC_LIGHT

    MOV CX, 3     ; 设置计时器值为3秒
    MOV AL, 02H   ; 设置Port B的输出值为00000010B,表示东西方向黄灯亮,其他灯灭
    OUT 0AAH, AL  ; 将输出值写入Port B
    CALL DISP     ; 显示计时器值
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒

    MOV AL, 04H   ; 设置Port B的输出值为00000100B,表示南北方向绿灯亮,其他灯灭
    OUT 0AAH, AL  ; 将输出值写入Port B
    CALL DISP     ; 显示计时器值
    CALL DELAY    ; 延迟1秒
    CALL DELAY    ; 延迟1秒

    JMP INIT      ; 跳转到INIT,重新开始执行交通灯控制程序

DISP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值