资源描述
交通灯
实验要求:
以74LS273或p1口作为输出口,控制4个双色LED灯(可发红,绿,黄光)模拟交通灯管理。按照交通灯的显示规律,相对的两个分别显示红、绿、黄.当外部中断到来时,四个LED全部显示红色,维持1秒钟后恢复中断前的状态。
本实验是交通灯是控制实验,所以要先理解实际交通灯的变化规律。假设一个十字路口为东西南北走向.初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态,南北绿灯闪几次转两黄灯,延时几秒,东西仍然红灯,再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4。东西绿灯山几次转黄灯,延时几秒,南北仍然红灯,,最后循环至状态1.
在前面内容的基础上增加允许急救车先通过的要求。有急救车到达时,两项交通信号为全红,以便让急救车通过。假定急救车通过路口时间为10秒,急救车通过后,交通恢复中断前状态.被实验已按键为终端申请,表示有急救车通过。
实验原理:
可以通过对P1口赋值实现状态的改变,并采用延时使状态的时间达到要求,闪烁通过多次赋值并调用短延时实现,初始状态的全红也采用此方法,特殊情况考虑用外部中断实现。
实验硬件图:
实验流程图:
开始
给初始状态
即全红
开中断
调用延时
返回
调用延时
赋全红 状态
中断
调用延时
赋第四个状态
实现闪烁
调用延时
实现闪烁
赋第二个状态
调用延时
赋第三个状态
调用延时
赋第一个状态
实验程序:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP WINT
ORG 0030H
MAIN:
SETB EX0
SETB IT0
SETB EA
MOV P1,#0FH
LCALL LOOP
LOOP:MOV P1,#96H
LCALL DELAY
MOV P1,#06H
LCALL DELAY
MOV P1,#69H
LCALL DELAY
MOV P1,#09H
LCALL DELAY
SJMP LOOP
DELAY:MOV R2,#100
LOP1:MOV R3,#100
LOP0:MOV R4,#100
DJNZ R4,$
DJNZ R3,LOP0
DJNZ R2,LOP1
RET
WINT:MOV P1,#0FH
LCALL DELAY
RETI
END
展开阅读全文