基于微机原理交通灯的设计

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

课程设计任务书

一、设计题目

交通信号灯的控制

二、设计目的

巩固“微机原理”课程学过的知识,加强理论与实践的联系。通过本课程设计,使学生初步了解微机系统的硬件设备,学会8086系列编程指令的基本功能。

三、设计时间:

2011-2012学年第1学期

四、设计内容与要求

1、内容

采用8086系列CPU构建控制系统,采用并口8255与定时器8253完成交通信号灯的控制。

2、设计要求

(1)、设计系统的硬件连接原理图,对原理图加以说明。

(2)、画出程序框图,并说明。

(3)、编写应用程序,并注解程序。

(4)、提交课程设计说明书。

五、设计资料与参数

1、通过8255A并口来控制LED发光二极管的亮灭。

2、A口控制红灯,B口控制黄灯,C口控制绿灯。

3、输出为0则亮,输出为1则灭。

4、用8253定时来控制变换时间。

要求:设有一个十字路口,1、3为南,北方向,2、4为东西方向,初始态为4个路口的红灯全亮。之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延迟30秒后,1、3路口的绿灯熄灭,而1,3路口的黄灯开始闪烁(1HZ)。闪烁5次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。延迟30秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁5次后,再切换到1、3路口方向。之后,重复上述过程。

有关系统定时的一种参考方法:

PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,用BIOS调用INT 1AH可以取得该定时单位。例:1秒=18.2 (计时单位)

一.设计思路

1. 流程图

东西南北全亮红灯

东西:绿灯点亮30s

南北:红灯点亮30s

东西:黄灯闪烁5次

南北:红灯亮

南北:绿灯点亮30s

东西:红灯点亮30s

南北:黄灯闪烁5次

东西:红灯亮

二.流程图说明

设计中输出使用了8255并行接口直接对各个路口共六个交通灯进行控制。

由于灯光控制只需要开、关两个状态,因此可以用8255的输出端口的输出来控制,即最多只需要六个端口,所以可以采用8位端口,又因为灯光控制不需要联络信号,所以按照方式0输出即可。

采用端口A,按以下方式连接:

南北向:红灯接PA4,黄灯接PA5,绿灯接PA6;

东西向:红灯接PA0,黄灯接PA1,绿灯接PA2;

6个交通灯可能的状态如下:

PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 PA 状态说明

0 0 0 0 1 0 0 0 1 11H 全部红灯

1 0 0 0 1 0 1 0 0 14H 南北红,东西绿

2 0 0 0 1 0 0 1 0 12H 南北红,东西黄

3 0 0 0 1 0 0 0 0 10H 南北红,东西关

4 0 1 0 0 0 0 0 1 41H 南北绿,东西红

5 0 0 1 0 0 0 0 1 21H 南北黄,东西红

6 0 0 0 0 0 0 0 1 01H 南北关,东西红

从状态1到状态6依次循环变换,又状态2和3,状态5和6之间各循环5次。其中状态1和状态4持续30秒,其他状态持续0.5秒。

按照上面的流程,依次把相应的控制码输出到端口A,6个交通灯就能够按照要求实现交通管理。

以上状态保持时间通过8253得到,使用8253的定时器0,让其工作在方式3,从CLK 端口输入1KHZ的频率,写入计数值500,则可以得到2HZ的输出频率,再通过调用程序来对得到的脉冲数进行计数,并以此来判断各个状态的时间,类似上表,可以将计数个数预先写入存储器中:

累计计数次数状态说明

状态状态保持时间

/s

0 无无全部红灯

1 30 3CH 南北红,东西绿

2 0.5 3DH、3FH、41H、43H、45H 南北红,东西黄

3 0.5 3EH、40H、42H、44H、46H 南北红,东西关

4 30 82H 南北绿,东西红

5 0.5 83H、85H、87H、89H、8BH 南北黄,东西红

6 0.5 84H、86H、88H、8AH、8CH 南北关,东西红

在每个循环结束后,将计数单元清零,同时开始下一次循环。

三.电路连接

本实验利用装置提供的8255A芯片和逻辑电平显示器进行。

将8255的数据线D0-D7,地址线A0、A1,控制线RESET,RD,WR,分别于总线相连,电源和地分别连接到实验箱的+5和地。将8255A芯片的端口A与6个逻辑电平显示器发光二极管之间连接。

四.源程序

stack segment stack 'stack'

dw 32 dup(0)

stack ends

data segment

FLAG DB O

TABLE DB 14H, 5 DUP(12H,10H), 41H, 5 DUP ( 21H, 01H );需要依次执行的代码表

COUNT EQU $-TABLE

TABLE1 3CH、3DH、3EH、3FH、40H、41H、42H、43H、44H、45H、46H、82H、83H、84H、85H、86H、87H、89H、8AH、8BH、8CH;计数状态转换表

data ends

code segment

start proc far

assume ss:stack,cs:code,ds:code

push ds

sub ax,ax

push ax

;初始化8253

MOV AL,36H ;定时器0的设置,采用方式3

OUT 43H,AL

MOV AL,533H ;在CLK端输入1khz频率,计数500次,则可以得到2HZ 输出频率

OUT 40H,AL

;初始化8255A

MOV AL,80H ;各口都工作在方式0,作为输出口

OUT 383H,AL

OUT 380H,0BH ;向端口A输出11,即所有路口亮红灯

LOOP: MOV FLAG,1 ;初始化FLAG

MOV CL,0 ;将cL清零

MOV AX,0

JMP LOOP0

LOOP0:IN AL,38H ;38H为计数器0的输出端口,直接输入到8086D0端AND AL,01H ;取AL最低位

CMP AL,FLAG

JNZ NEXT ;若输入电平有变化,则转到NEXT

JMP LOOP0 ;若电平没变化,则继续检测

NEXT: MOV FLAG,AL

INC CL ;CL自加一次,将FLAG改变一次

CMP AL,COUNT ;若检测到一个循环周期已满,则从头开始

JNZ NEXT1

JMP LOOP

NEXT1:CMP CL,TANBLE1[AH];若刚好达到需要切换状态的计数值,则输出下一个状态

INC AL

INC AH

OUT 380H,TABLE[AL]

JMP LOOP0

start endp

code ends

end start

相关文档
最新文档