实验二 模拟交通灯实验
一、实验目的
1. 学习在PC机系统中扩展简单I/O 接口的方法。
2. 进一步学习编制数据输出程序的设计方法。
3. 学习模拟交通灯控制的方法。
二、实验内容
用 8255 做输出口,控制十二个发光管(4 组红绿黄灯)的亮灭,模拟十字路口交通灯
管理。
三、实验区域电路连接图
PC0→L3;PC1→L7;PC2→L11;PC3→L15;红灯
PC4→L2;PC5→L6;PC6→L10;PC7→L14;绿灯
PB4→L1;PB5→L5;PB6→L9;PB7→L13。 黄灯
8255 数据、控制线内部已线连好。
6
四、编程指南
1. 通过 8255A 控制发光二极管,PB4-PB7 对应黄灯,PC0-PC3 对应红灯,PC4-PC7 对
应绿灯,以模拟交通路灯的管理。
2. 要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口 l、3 为南北
方向,2、4 为东西方向,初始状态为四个路口的红灯全亮,之后,1、3 路口的绿灯亮,2、
4 路口的红灯亮,1、3 路口方向通车。延时一段时间后,l、3 路口的绿灯熄灭,而 l、3
路口的黄灯开始闪烁,闪烁若干次以后, 3 路口红灯亮,l、而同时 2、 路口的绿灯亮,42、
4 路口方向通车,延时一段时间后,2、4 路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次
以后,再切换到 l、3 路口方向,之后,重复上述过程。
3. 程序中设定好 8255A 的工作模式及三个端口均工作在方式 0,并处于输出状态。
4. 各发光二极管共阳极,使其点亮应使 8255A 相应端口的位清 0。
五、程序框图
开始
设置 8255 各口
为输出模式
四个路口红灯全亮
延时一段时
点亮 1、3 路口绿灯
延 时
1、3 路口黄灯闪烁 8 次
四个红灯全亮
点亮 2、 路口绿灯 4
延 时
熄灭 2、 路口绿灯 4
2、4 路口黄灯闪烁 8 次
熄灭 1、 路口绿灯 3
四个红灯全亮
7
六、实验步骤
1. 按连线图连接好,检查无误后打开实验箱电源。
2. 在 PC 端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。
3. 运行程序后,观察模拟交通管理灯是否按照设计的规律变化。
4. 如果运行不正常就要检查连线,程序。排查错误,修改程序,直到运行程序正常。
七、实验程序清单及注释
根据要求编写程序,最后记录调试成功的程序,写好注释便于自己或他人阅读。
八、实验报告
应包括画电路图、实验程序框图、编程(要有注释)、调试过程及心得体会等。
问答题:
1. 8255A 的哪个端口能实现位操作控制(按位置位/复位)?执行控制字写入
操作的端口是哪个?
2. 写出下图中 Intel8255A 占用的 4 个端口地址。
8
九.实验程序
CODE SEGMENT
ASSUME CS:CODE
ORG 1200H
START: MOV DX 0FF2BH ;控制端口地址
MOV AL,80H ;输入控制命令字 10000000,
OUT DX,AL
MOV AL,0F0H ;点亮四个红灯,四个绿灯不亮
MOV DX,0FF2AH
OUT DX,AL
MOV AL,0FFH ;黄灯不亮
MOV DX,0FF29H
OUT DX,AL
NOP
NOP
NOP
NOP
NOP
;延时
COME: MOV AL,5FH ;熄灭红灯,点亮 1、3 路口绿灯
;延时
MOV DX,0FF2AH
OUT DX,AL
NOP
NOP
NOP
NOP
NOP
MOV AL,0FFH ;熄灭 1、3 路口绿灯
OUT DX,AL
MOV BL,08H ;输入计数初值 8,用于循环八次
LOOP1: MOV AL,0A0H ;电亮 1、3 路口黄灯
;计数值减一
MOV DX,0FF29H
OUT DX,AL
MOV AL,0F0H ;熄灭黄灯
OUT DX,AL
DEC BL
JNZ LOOP1 ;循环上面步骤,直到黄灯闪烁八次
MOV AL,0F0H ;点亮四个红灯
MOV DX,0FF2AH
OUT DX,AL
MOV AL,5FH ;熄灭红灯,点亮 2、4 路口绿灯
OUT DX,AL
NOP
NOP
;延时
NOP
NOP
NOP
MOV AL,0FFH ;熄灭 2、4 路口绿灯
OUT DX,AL
MOV BL,08H ;输入计数初值 8
LOOP2: MOV AL,50H ;点亮 2、4 路口黄灯
;计数减一
MOV DX,0FF29H
OUT DX,AL
MOV AL,0F0H ;熄灭 2、4 路口黄灯
OUT DX,AL
DEC BL
JNZ LOOP2 ;循环,直到黄灯闪烁 8 次
MOV AL,0F0H ;点亮四个红灯
MOV DX,0FF2AH
OUT DX,AL
NOP
NOP
NOP
NOP
NOP
JMP COME ;跳转回到 1、3 路口点亮
;延时
CODE ENDS
END START
十.调试过程及心得体会
编号程序后,我们将程序装入实验箱,观察 LED 灯.开始时发现 LED 灯不会按照要求显
示,发现了一个死循环,修改后我们就用单步调试的办法一步一步的调试,找出了几个问题,修
改后程序就能够达到要求了,但是最后的显示时间上我们还是使用了单步调试的 NOP ,造成
在最后的显示时间不够长,人眼看不太清,但是总体还是做好了.
十一.问题
1. 8255A 的 RESET 能实现位操作控制,执行控制字写入操作的端口是 WR
2.图中占用的 4 个端口地址为:0FFF0H--0FFF2H--0FFF4H--0FFF6H