十字路口交通灯模拟系统设计

一、实验目的

1、掌握Proteus软件绘制原理图的方法。
2、掌握Proteus软件的MASM32编译器编写汇编程序和程序调试。
3、掌握8255和8253A可编程接口芯片的使用。
4、掌握十字路口交通灯的工作原理和各个方向的灯泡控制逻辑。

二、实验内容

用三色LED灯(红、绿、黄)模拟十字路口交通灯管理。假设一个十字路口为东西南北走向。十字路口交通灯的变化规律要求:
1、南北路口的绿灯,东西路口的红灯同时亮10秒左右。
2、南北路口的黄灯闪烁若干次(5秒左右),同时东西路口的红灯继续亮。
3、南北路口的红灯、东西路口的绿灯同时亮10秒左右。
4、南北路口的红灯继续亮、同时东西路口的黄灯闪烁若干次(5秒左右)。
重复上述变化过程。
在这里插入图片描述

三、实验原理图及程序流程图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、汇编语言程序

.MODEL SMALL
.8086
.STACK
.CODE
.STARTUP
NMI_INIT:    
	;中断服务程序初始化
    SUB AX,AX    ;清零AX
    MOV ES,AX    ;中断向量表段地址为0
    MOV AX,OFFSET  NIMI_SERVICE  ;获取NIMI_SERVICE的偏移地址
    MOV ES:008H,AX  ;008H为中断在中断向量表中的位置
    MOV AX,SEG NIMI_SERVICE ;获取段地址
MOV ES:00AH,AX     

	MOV DX,206H ;写控制字寄存器---控制PA口
	MOV AL,10001001B ;控制字1、A方式0、基本输入和输出00、A输出0;PC7~4为输入1、B方式0基本输入和输出0、B输出0、PC3~0为输入1
	OUT DX,AL   ;初始化端口,设置输入和输出口
	MOV AL,00110111B ;计数器0  16位 方式3  十进制  产生方波
	MOV DX,406H    ;写入控制字
	OUT DX,AL
	MOV DX,400H   ;计数器0地址   16位
	MOV AL,00H    ;两次发送   100KHZ   1000分频   100HZ
	OUT DX,AL
	MOV AL,010H   ;高字节
	OUT DX,AL
	
	MOV DX,406H
	MOV AL,10010001B  ;计数器28位 方式0  十进制
	OUT DX,AL
xunhuan1:
	MOV DX,200H  ;选中PA口
	MOV AL,035H  ;北南绿灯,东西红灯
	OUT DX,AL
	MOV DX,404H   ;写入计数器2的初值
	MOV AL,050H
	OUT DX,AL
	MOV CX,0014H  ;写LOOP的初值,控制红绿灯20*0.5=10S
xunhuan2:
	JMP $    ;10S,后续中断跳出
	LOOP xunhuan2
	MOV CX,0005H  ;控制黄灯5*2*0.5=5S
xunhuan3:
	MOV DX,200H  ;选中PA口
	MOV AL,033H  ;北南黄灯亮
	OUT DX,AL
	JMP $ 
	MOV DX,200H  ;选中PA口
	MOV AL,037H  ;北南黄灯熄
	OUT DX,AL
	JMP $ 
	LOOP xunhuan3 ;持续5次
	MOV DX,200H    ;选中PA口
	MOV AL,02EH    ;北南红灯,东西绿灯
	OUT DX,AL
	MOV CX,0014H  ;控制红绿灯20*0.5=10S
xunhuan4:
	JMP $    ;10S,后续中断跳出
	LOOP xunhuan4
	MOV CX,0005H  ;控制黄灯5*2*0.5=5S
xunhuan5:
	MOV DX,200H  ;选中PA口
	MOV AL,01EH  ;东西黄灯亮
	OUT DX,AL
	JMP $ 
	MOV DX,200H  ;选中PA口
	MOV AL,03EH  ;东西黄灯熄
	OUT DX,AL
	JMP $ 
	LOOP xunhuan5 ;持续5次
	JMP xunhuan1  ;无限循环
NIMI_SERVICE:
	MOV DX,404H   ;再次写入计数器2的初值
	MOV AL,050H
	OUT DX,AL
	POP AX   ;跳出中断
	INC AX
	INC AX
	PUSH AX
	IRET   ;中断返回
.DATA
END

五、实验结果及结果分析

在本次的实验时,采用中断计时的方式,在8253A芯片中,利用其工作方式0,在每次计数结束之后,产生0.5s的中断计数信号,发送给8086,之后,由此中断控制信号,来对外部的8255A的PA口进行控制。
其中,需要每次产生北南绿灯、东西红灯持续10s,之后,北南黄灯闪烁5s。此后,北南红灯、东西绿灯持续10s,之后,东西黄灯闪烁5s。在总体的循环中,无限执行以上的程序即可。
根据以下的实验结果情况,在利用8253的计数器和8255的PA口实现控制,十字交通灯共有4种情况。其中,左上图此时北南绿灯,东西红灯,持续10s;右上图此时北南黄灯闪烁5s,东西红灯持续5s;左下图此时北南红灯,东西绿灯,持续10s;右下图此时北南红灯持续5s,东西黄灯闪烁5s。
在这里插入图片描述

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry独爱电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值