计算机组成原理与接口技术实验
实实实实 验验验验 报报报报 告告告告
实 验 人:
院(系):
实验题目:
学 号:
日 期:
专业(班级):
交通灯控制实验
一. 实验目的
通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口和计数器8253
的使用。
二. 实验原理
实验电路图如下:
1
计算机组成原理与接口技术实验
1、数码管S1接高电平,S0与dp接低电平,使用左侧数码管显示不带小数点的数字。IRQ接单
脉冲,每次按下单脉冲产生中断信号,交通灯进入紧急模式。
2、8255芯片工作方式为A口输出,C口输入。PC5接8253芯片的OUT1用于检查是否经过一秒;
PA0~PA6接7段数码管用于显示黄灯时间;PC6和PC7分别接手动开关K6和K7,其中PC6用于检
测是否跳出紧急模式,PC7用于检测夜间黄灯模式。片选地址为288H。
3、8253芯片作为分频器(将1MHZ的信号变为1HZ信号)。计数器0在方式3下工作,初值1000,
计数器1在方式0下工作,初值1000。芯片的OUT0与CLK1相连接(计数器0和1组合使用),片
选地址为280H,OUT1接入8255芯片的PC5。
4、74LS273用作锁存器。74LS273的D1~D8接TPC机中数据总线D0~D7,代表LED交通灯显示的
状态,并通过Q1~Q8显示在LED灯上;片选地址2A8H与IOW通过或门连接到74LS273的时钟信号
CLK上,当选中2A8H或者键盘有输入时产生上升沿激活74LS273,输入数据并输出到LED灯上。
实验程序流程图如下:
左图为紧急模式子程序流程图
下图为延时子程序流程图
2
开 始
设 置 中 断 矢 量
(IR Q 3)
开 放 中 断 (IR Q 3)
设8255 为A口 输 出 ,C口
输 入
设8253 计 数 器 0为 方 式
3,初 值 1000
设 置 默 认 状 态:红(3 0 秒) ,
黄(5秒) , 绿(2 5 秒)
重 置 亮 灯 时 间 ,黄 灯 亮 时 关
闭 数 码 管 ,改 变 灯 的 状 态
点 亮 相 应 的 灯
Y
黄灯亮时显示数码管
时 间 是 否 用 完?
计 数 时 间 减1
N
N
计算机组成原理与接口技术实验
左图为主程序的流程图
下图为夜间模式的流程图
开 始
8 2 5 5 的P C 7,即 夜 间 模 式 开
关 是 否 为1?
Y
关 闭 数 码 管
计 数 器 1写 入 初 值 5 0
点 亮 两 盏 黄 灯
调用延时子程序和夜
间 模 式 子 程 序
键 盘 是 否 有 输 入?
Y
从 键 盘 接 受 字 符,表
示 通 行 时 间
字 符 是 否 为1~9?
N
关 数 码 管 、L E D 灯
返 回 DO S
结 束
根据输入数字时间重
置 亮 灯 时 间
8 2 5 5 的P C 5, 即 计 数 器
out1是 否 为 1?
Y
关 闭 黄 灯 0.5S
N
Y
8 2 5 5 的P C 5, 即 计 数 器
out1是 否 为 1?
Y
8 2 5 5 的P C 7, 夜 间 模 式
开 关 , 是 否 为 1?
N
还 原 L E D 灯 状 态
结 束
N
Y
N
3
计算机组成原理与接口技术实验
三. 实验内容
1.要求一:
(1)南北与东西方向,每个方向由红黄绿三个灯控制
(2)南北向: 红(30 秒),黄(5 秒),绿(25 秒)
东西向: 红(30 秒),黄(5 秒),绿(25 秒)
采用 8253 定时,上述基本参数可以根据实际情况自行调整,灯的变化规律与实际路
口规律相同,绿灯在最后 5 秒钟时,黄灯亮,然后红灯亮,不允许两个方向同时亮绿灯。
(3)黄灯的时间在数码管上进行显示。
2.要求二:
(1)设计一个紧急控制开关信号,当紧急开关信号为 1 时,两个方向的灯全为红灯。紧急
开关撤消后,按照开关按下之前的状态继续运行(其参数要保存)。
(2)设计一个夜间行车开关,当开关按下后,两个方向都只有黄灯闪烁,其它灯熄灭。
四. 实验器材
PC机一台,实验箱一个(主要用到8255芯片,ADC0809芯片,74ls273芯片)
五. 实验分析与设计
程序分为五个部分
1、主程序:实现正常模式下亮灯(默认情况红(30秒),黄(5秒),绿(25秒)),接
受输入的字符并处理(修改亮灯时间或者退出),进入各种功能子程序。
2、输入检测子程序:检测是否从键盘输入了数据
3、延时程序:延时1秒。
4、紧急模式子程序:实际上是中断服务程序,负责保存当前状态,点亮红灯直到紧急
模式退出开关为1,退出前恢复进入紧急模式之前的状态。
5、夜间模式子程序:检测夜间模式开关是否打开,打开时闪烁黄灯直到检测到夜间模
式开关关闭,退出前恢复进入夜间模式之前的状态。
4
计算机组成原理与接口技术实验
程序具体实现如下:
DATA SEGMENT
IO8255A
EQU 288H
IO8255C
EQU 28AH
IO8255D
EQU 28BH
IO8253A
EQU 280H
IO8253B
EQU 281H
IO8253C
EQU 283H
COUNT_DOWN DB
6DH,66H,4FH,5BH,06H
;数码管显示黄灯倒计时(5、4、3、2、1)
0DH,0AH,'INPUT A NUMBER(1~9,OTHER KEY TO EXIT)','$'
;提示输入信息
?
?
?
;绿灯亮的时间
;黄灯倒计时(COUNT_DOWN的偏移值)
;记录当前LED灯的指示状态
MESG
TIME
COUNT
DB
DB
DB
STATE
DB
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN: MOV AX,DATA
MOV DS,AX
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET INT3
MOV AX,250BH
INT 21H
IN AL,21H
AND AL,0F7H
OUT 21H,AL
;设置IRQ3的中断矢量
;读中断屏蔽寄存器
;开放IRQ3中断
5
计算机组成原理与接口技术实验
MOV DX,IO8255D
;设为A口输出,C口输入
MOV AX,89H
OUT DX,AL
MOV DX,IO8253C
;设计数器0为方式3
MOV AL,36H
OUT DX,AL
MOV DX,IO8253A
MOV AX,1000
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV AX,DATA
MOV DS,AX
MOV AL, 25
MOV TIME,AL
;写入计数器初值1000
;默认状态:红(30秒),黄(5秒),绿(25秒)
MOV DX,OFFSET MESG
;显示提示信息
MOV AH,9
INT 21H
LIGHTEN:MOV AL,TIME
MOV AH,0
6
计算机组成原理与接口技术实验
MOV CX,AX
MOV DX,2A8H
MOV AL,81H
OUT DX,AL
MOV STATE,AL
;亮灯--1 0 0
0 0 1
;亮灯--红黄绿 红黄绿
STI
;开中断
L1:
CALL DELAY
CALL NIGHT
CALL CHECK_INPUT
;检查是否输入了字符,如果输入了字符就跳转INPUT
JNE NEXT
;此处跳跃超出短跳范围,所以使用两次跳转实现
JMP INPUT
NEXT:
LOOP L1
;循环,直到亮绿灯的时间过完
;亮灯--1 0 0
0 1 0
;亮灯--红黄绿 红黄绿
MOV DX,2A8H
MOV AL,82H
OUT DX,AL
MOV STATE,AL
MOV CX,5
MOV COUNT,0
L2:
MOV BX,OFFSET COUNT_DOWN
MOV AL,COUNT
XLAT
MOV DX,IO8255A
OUT DX,AL
CALL DELAY
;数码管显示黄灯时间
7
CALL NIGHT
CALL CHECK_INPUT
;检查是否输入了字符,如果输入了字符就跳转INPUT
计算机组成原理与接口技术实验
JE INPUT
INC COUNT
LOOP L2
MOV DX,IO8255A
;关闭数码管
MOV AL,0
OUT DX,AL
MOV AL,TIME
MOV AH,0
MOV CX,AX
MOV DX,2A8H
MOV AL,24H
OUT DX,AL
MOV STATE,AL
L3:
CALL DELAY
CALL NIGHT
;亮灯--0 0 1
1 0 0
;亮灯--红黄绿 红黄绿
CALL CHECK_INPUT
;检查是否输入了字符,如果输入了字符就跳转INPUT
JE INPUT
LOOP L3
MOV DX,2A8H
MOV AL,44H
OUT DX,AL
MOV STATE,AL
MOV CX,5
;亮灯--0 1 0
1 0 0
;亮灯--红黄绿 红黄绿
8