实验七 交通灯控制实验
一、实验目的
通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。 二、实验内容
本实验以L1、L2、L3作为东西路口的交通灯与PC0 PC1 PC2相连, L6、L7、L8作为南
北路口的交通灯与PC5、PC6、PC7相连,编程使六个灯按交通灯变化规律亮灭。 三、实验原理介绍
本实验用到两部分电路:8255 电路、LED 电路。 四、实验步骤 1、实验连线
CS0<-->8255CS,LED1<-->PC0,LED2<-->PC1,LED3<-->PC2,LED6<-->PC5 ,LED7<-->PC6,LED8<-->PC7。 五、实验提示
十字路口交通灯的变化规律要求:
1 南北路口的绿灯亮,东西路口的红灯同时亮30秒左右。 2 南北路口的绿灯闪烁若干次,同时东西路口的红灯继续亮。 3 南北路口的黄灯亮2秒,东西路口的红灯继续亮。 4 南北路口的红灯亮,同时东西路口的红灯继续亮2秒。
5 南北路口的红灯亮, 同时东西路口的红灯和黄等一起亮2秒。 6 南北路口的红灯亮, 同时东西绿灯亮30秒。 7 南北路口的红灯亮, 同时东西绿灯亮闪若干次。 8 南北路口的红灯亮, 同时东西黄灯亮2秒。 9 南北路口的红灯亮, 同时东西红灯亮2秒。
10 南北路口的红灯和黄等一起亮2秒,同时东西红灯亮。 11 转1 重复 六、程序框图(如图7)
实验程序
;*L1(RED),L2(YELLOW),L3(GREEN) 东西方向 L6(RED),L7(YELLOW),L8(GREEN) 南北方向*; ;*按任意键退出 ,交通灯顺序为:红灯亮,然后黄灯和红灯一起亮,绿灯亮,绿灯闪,黄灯亮,红灯亮.*; DATA SEGMENT
IOPORT EQU 0A800H IO8255C EQU IOPORT+0A4H IO8255CON EQU IOPORT+0A6H
MES DB 'Press any key to exit!',0AH,0DH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MES MOV AH,9 INT 21H
MOV DX,IO8255CON ;使8255的C口为输出方式 MOV AX,80H OUT DX,AL
MOV AX,0DEH ;两个红灯亮,黄灯、绿灯灭
CALL DISP ;调用8255的C口显示单元(以下雷同) MOV AX,5
CALL DELAY ;延时1秒
LLL: MOV AX,0DCH ;东西路口红灯黄灯同时灯亮;南北路口红灯亮 CALL DISP MOV CALL MOV CALL MOV CALL MOV TTT: MOV CALL MOV CALL MOV CALL MOV CALL DEC JNZ MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL MOV CALL MOV JMP AX,5
DELAY AX,0DBH DISP AX,50
DELAY BX,05H AX,0DBH DISP AX,1
DELAY AX,0DFH DISP AX,1
DELAY BX
TTT AX,0DDH DISP AX,5
DELAY AX,0DEH DISP AX,5
DELAY AX,09EH DISP AX,5
DELAY AX,7EH
DISP AX,50
DELAY BX,05H GGG
;延时1秒
;东西路口绿灯亮;南北路口红灯亮 ;延时10秒
;R2中的值为绿灯闪烁次数 ;东西路口绿灯亮;南北路口红灯亮 ;延时0.2秒
;东西路口绿灯灭;南北路口红灯亮 ;延时0.2秒 ;返回TTT,使东西路口;绿灯闪烁五次 ;东西路口黄灯亮,南北路口红灯亮 ;延时1秒
;东西路口红灯亮;南北路口红灯灯亮 ;延时1秒
;东西路口红灯亮;南北路口红灯黄灯同时亮 ; ;延时1秒 ;东西路口红灯亮,南北路口绿灯亮 ;延时10秒 ;南北路口绿灯闪 GOO: JMP LLL
GGG: MOV AX,07EH ;东西路口红灯亮;南北路口绿灯亮 CALL DISP MOV AX,1
CALL DELAY ;延时0.2秒
MOV AX,0FEH ;东西路口红灯亮;南北路口绿灯灯灭 CALL DISP MOV AX,1
CALL DELAY ;延时0.2秒 DEC JNZ MOV CALL MOV CALL MOV CALL MOV CALL MOV MOV INT JZ MOV INT DELAY: PUSH ONE:
MOV ONE1:
MOV LOOP1: NOP
LOOP DEC JNZ DEC JNZ MOV AH,06 MOV INT JZ MOV INT DELAYX: POP RET
BX
GGG ;返回GGG,使南北路口;绿灯闪烁五次 AX,0BEH
DISP ;东西路口红灯亮,南北路口黄灯亮 AX,5
DELAY ;延时1秒
AX,0DEH ;两个红灯亮,黄灯、绿灯灭 DISP AX,1
DELAY ;延时0.2秒 AH,06 ;判断有键按下 DL,0FFH 21H
GOO ;转LLL循环 AH,4CH 21H BX BX,1000H CX,09000H LOOP1 BX ONE1 AX ONE
;判断有键按下 DL,0FFH 21H
DELAYX ;转LLL循环 AH,4CH 21H BX DISP: MOV DX,IO8255C OUT DX,AX RET CODE ENDS
END START
实验图7 实验结果:
1、南北路口的绿灯亮,东西路口的红灯同时亮30秒左右。 2、南北路口的绿灯闪烁若干次,同时东西路口的红灯继续亮。 3、南北路口的黄灯亮2秒,东西路口的红灯继续亮。
4、南北路口的红灯亮,同时东西路口的红灯继续亮2秒。
5、南北路口的红灯亮, 同时东西路口的红灯和黄等一起亮2秒。 6、南北路口的红灯亮, 同时东西绿灯亮30秒。 7、南北路口的红灯亮, 同时东西绿灯亮闪若干次。 8、南北路口的红灯亮, 同时东西黄灯亮2秒。 9、南北路口的红灯亮, 同时东西红灯亮2秒。
10、南北路口的红灯和黄等一起亮2秒,同时东西红灯亮。 11、转1 重复