微机原理课程设计交通灯控制系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 系统功能调用