微机原理课程设计交通灯控制系统设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交通灯控制系统设计

一、设计目的

⒈ 了解交通灯管理的基本工作原理

⒉ 熟悉8259中断控制器的工作原理和应用编程

⒊ 熟悉8255并行接口的各种工作方式和应用

⒋ 熟悉8253计数器/定时器的工作方式及应用编程,掌握利用软硬件相结

合定时的方法

⒌ 掌握多位LED显示问题的解决

二、设计要求

1.东西方向车辆放行60秒钟。即东西方向的绿灯和南北方向的红灯同时点亮1分钟;

2.1分钟后,东西方向的黄灯闪烁5秒钟,以警示车辆将切换红绿灯。此时南北方向仍维持红灯点亮。在南北方向亮红灯期间,在2位数码管上显示计数值(每秒减1),从65减为0。

3.东西方向的黄灯闪烁5秒钟后,转为南北方向放行20秒钟。即东西方向的红灯和南北方向的绿灯同时点亮20秒钟;

4.南北方向放行20秒钟后,转为南北方向的黄灯闪烁5秒钟,以警示将切换红绿灯。此时东西方向仍维持红灯点亮。

5.南北方向的黄灯闪烁5秒钟后,再转为东西方向车辆放行1分钟。如此循环重复。

三、电路及连线设计

在本次课程设计当中,本次设计采用的是软件定时(即通过汇编指令)实现的。而灯的亮与灭以及闪烁是用8255的A口和B口控制的,工作在方式0,A

口和B口均为输出。

并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU 和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2所示。

图1 8255的内部结构及引脚

图2 8255工作方式控制字和C口按位置位/复位控制字格式2.3电路接线图

图3 红绿灯模拟设计总电路图

上电路图为红绿灯模拟设计总电路图,通过8086CPU系统总线来控制8255

的A端口、B端口,而A、B端口分别接LED发光二极管来控制十字路口红绿灯。红、黄、绿灯的表示情况如下:由于仪器上面只有16个发光二级管,且从高到低依次为:15D14D13D12D11D10D9D8 D7D6D5D4D3D2D1D0。在设计的过程中做了如下的规定:R表示红灯,G表示绿灯,Y表示黄灯;E表示方向东,W表示方向西,S表示方向南,N表示方向北,例如:ER表示东方向为红灯,WG表示西方向为绿灯,SY表示南方向为黄灯,其余的类似。所以在设计中采用如下的规定:D15D14表示ER,D13D12表示SR,D11D10表示EG,D9D8表示SG,D7D6表示WR,D5D4表示NR,D3D2表示WG,D1D0表示NG,D15D14D11D10表示EY,D7D6D3D2表示WY,D13D12D9D8表示SY,D5D4D1D0表示NY。具体连线及表示如下图所示(圆圈表示发光二极管)。

图4 十字路口红黄绿灯的表示

四、使用说明

这是一个交通红绿灯的模拟显示实验,由8255控制16个LED发光二极管的亮与暗来表达十字路口的交通信号,A口表示东、南方向,B口表示西、北方向,绿灯和红灯共同表示黄灯。可以通过发光二极管来判断具体是哪个方向、哪个灯亮。

五、流程图设计

六、程序设计如下:

IOY0 EQU 0DA00H ;片选IOY0对应的端口始地址MY8255_A EQU IOY0+00H*4 ;8255的A口地址

MY8255_B EQU IOY0+01H*4 ;8255的B口地址

MY8255_C EQU IOY0+02H*4 ;8255的C口地址

MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址STACK1 SEGMENT STACK

DW 256 DUP(?)

STACK1 ENDS

DATA SEGMENT

LA DB ? ;定义数据变量

LB DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV DX,MY8255_MODE ;定义8255工作方式

MOV AL,80H ;工作方式0,A口和B口为输出

OUT DX,AL

LOOP1: MOV DX,MY8255_A ;写A口发出的数据,东方向绿灯亮,南方向红灯亮 MOV AL,3CH

OUT DX,AL

MOV DX,MY8255_B ;写B口发出的数据,西方向绿灯亮,北方向红灯亮 MOV AL,3CH

OUT DX,AL

CALL DALLY1

MOV CX,08H

L1: MOV DX,MY8255_A ;写A口发出的数据,东方向黄灯亮,南方向红灯亮 MOV AL,0FCH

OUT DX,AL

MOV DX,MY8255_B ;写A口发出的数据,西方向黄灯亮, 北方向红灯亮 MOV AL,0FCH

OUT DX,AL

CALL DALLY2

MOV DX,MY8255_A ;写A口发出的数据,东方向黄灯灭,南北方向红灯亮 MOV AL,30H

OUT DX,AL

MOV DX,MY8255_B ;写B口发出的数据,西方向黄灯灭,南北方向红灯亮 MOV AL,30H

OUT DX,AL

CALL DALLY2

LOOP L1

MOV DX,MY8255_A ;写A口发出的数据,东方向红灯亮,南方向绿灯亮 MOV AL,0C3H

OUT DX,AL

MOV DX,MY8255_B ;写B口发出的数据,西方向红灯亮,北方向绿灯亮 MOV AL,0C3H

OUT DX,AL

CALL DALLY1

MOV CX,08H

L2: MOV DX,MY8255_A ;写A口发出的数据,南方向黄灯亮,东方向红灯亮 MOV AL,0F3H

OUT DX,AL

MOV DX,MY8255_B ;写B口发出的数据,北方向黄灯亮,西方向红灯亮 MOV AL,0F3H

OUT DX,AL

CALL DALLY2

MOV DX,MY8255_A ;写A口发出的数据,南北方向黄灯灭,东方向红灯亮 MOV AL,0C0H

OUT DX,AL

MOV DX,MY8255_B ;写B口发出的数据,南北方向黄灯灭,西方向红灯亮 MOV AL,0C0H

OUT DX,AL

CALL DALLY2

LOOP L2

MOV AH,1 ;判断是否有按键按下,调用功能号1

INT 16H ;ROM BIOS 功能调用

JZ LOOP1 ;无按键则跳回继续循环,有则退出QUIT: MOV AX,4C00H ;结束程序退出

INT 21H ;DOS 系统功能调用

相关文档
最新文档