红绿灯设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
红绿灯设计
一、设计目的
查阅可编程并行芯片8255或其他相关资料,用简单的输入输出端口等硬件,配合延时和控制程序控制灯的亮灭。通过对红、绿、黄LED(发光二极管)的控制熟练掌握8255A可编程并行接口的编程方法。
二、设计要求
编写程序控制8255A可编程并行接口芯片,使红、绿、黄发光二极管按照十字路口交通信号灯的规律交替发光。当按下任意键则停止运行,返回DOS。
1、红绿灯亮灭规律:a:初态为东西南北4个红灯全亮,禁止通行;b:经过一定时间南北路口绿灯亮东西路口红灯亮;c:经过一定时间,南北路口绿灯灭;d:南北路口黄灯闪烁;e:经过一定时间,4个路口红灯全亮。f:经过一定时间,东西路口绿灯亮,南北路口红灯亮;g:东西路口绿灯灭;h:东西路口黄灯闪烁.i:转向步骤a循环执行。
三、电路及连线设计
本次微机原理设计的题目为交通灯,它是通过对8255芯片和LED发光二极管的连接设计来模拟交通信号灯的控制,使红黄绿三色灯按照正常交通规则亮灭;
十字路口交通信号灯的工作原理是在正常情况下以8086/8088的CPU与8255芯片相连接来实现的。8255芯片包括四个口,即A口、B口、C口和控制口。通过对其控制端口写入控制字,来设定8255的工作方式,在本设计中,使8255工作于方式0,将B口和C口都设计为输出,A口设计成输入。其中B口控制东西方向的交通灯,C口控制南北方向的交通灯。当程序正常
运行时,依次为东西南北方向都是红灯,延时后,南北方向的绿灯和东西方
向红灯亮,延时后南北方向的黄灯闪3次,随后南北方向的红灯和东西方向
的绿灯亮,延时后,东西方向的黄灯闪3次,之后同理进行循环。
四、流程图设计
开始
8255初始化
南北红,东西红
延时
南北绿,东西红
延时
南北黄灯闪烁
南北红,东西绿
延时
东西黄灯闪烁
开始进行8255初始化然后南北红灯东西红灯亮,延时南北绿灯东西红灯亮延时南北黄灯闪烁,南北红灯东西绿灯亮延时东西黄灯闪烁,然后从开始循环。
五、程序设计如下:
SSTACK SEGMENT STACK ;定义堆栈段
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,SS:SSTACK
START:
MOV AL,90H
MOV DX,9003H
OUT DX,AL ;将8255控制字设置为10010000
; B、C口输出 A口输入工作方式0 RED: MOV AL,22H
MOV DX,9001H
OUT DX,AL ;东西方向红灯亮
MOV DX,9002H
OUT DX,AL ;南北方向红灯亮
CALL DELAY ;调用延时程序DELAY NORMAL:STI
MOV AL,88H
MOV DX,9002H
OUT DX,AL ;南北方向绿灯亮
MOV AL,22H
MOV DX,9001H
OUT DX,AL ;东西方向红灯亮
CALL DELAY ;调用演示程序DELAY
MOV AL,00H
MOV DX,9002H
OUT DX,AL ;南北方向绿灯灭
CALL DELAY1 ;调用演示程序DELAY1
MOV CX,0005H ;将黄灯闪烁次数设为5 RECALL1:MOV AL,44H
MOV DX,9002H
OUT DX,AL ;南北方向黄灯亮
CALL DELAY2
XOR AL,AL
OUT DX,AL ;南北方向黄灯灭
CALL DELAY2 ;调用演示程序DELAY2
LOOP RECALL1
MOV AL,88H
MOV DX,9001H
OUT DX,AL ;东西方向绿灯亮
MOV AL,22H
MOV DX,9002H
OUT DX,AL ;南北方向红灯亮
CALL DELAY
CALL DELAY ;两次调用演示程序DELAY,东西方向设为主干道 MOV AL,00H
MOV DX,9001H
OUT DX,AL ;东西方向绿灯灭
CALL DELAY1 ;调用延时程序DELAY1
MOV CX,0005H ;将黄灯闪烁次数设为5
RECALL2:MOV AL,44H
MOV DX,9001H
OUT DX,AL ;东西方向黄灯亮
CALL DELAY2 ;调用延时程序DELAY2 XOR AL,AL
OUT DX,AL ;东西方向黄灯灭
CALL DELAY2 ;调用延时程序DELAY2
LOOP RECALL2
JMP NORMAL ;无条件跳转到NORMAL,实现循环DELAY: PUSH CX ;延时程序 DELAY
MOV BX,008FH
T1:MOV CX,1000H
T2:NOP
NOP
LOOP T2
DEC BX
CMP BX,0000H
JNZ T1
POP CX
RET
DELAY1: PUSH CX ;延时程序 DELAY1
MOV CX,0FFFFH
T3:NOP
NOP
LOOP T3
POP CX
RET
DELAY2: PUSH CX ;延时程序 DELAY2
MOV CX,0F900H
T4:PUSH AX
POP AX
LOOP T4
POP CX
RET
CODE ENDS