交通灯课程设计.docx

上传人:b****1 文档编号:573116 上传时间:2023-04-29 格式:DOCX 页数:15 大小:19.15KB
下载 相关 举报
交通灯课程设计.docx_第1页
第1页 / 共15页
交通灯课程设计.docx_第2页
第2页 / 共15页
交通灯课程设计.docx_第3页
第3页 / 共15页
交通灯课程设计.docx_第4页
第4页 / 共15页
交通灯课程设计.docx_第5页
第5页 / 共15页
交通灯课程设计.docx_第6页
第6页 / 共15页
交通灯课程设计.docx_第7页
第7页 / 共15页
交通灯课程设计.docx_第8页
第8页 / 共15页
交通灯课程设计.docx_第9页
第9页 / 共15页
交通灯课程设计.docx_第10页
第10页 / 共15页
交通灯课程设计.docx_第11页
第11页 / 共15页
交通灯课程设计.docx_第12页
第12页 / 共15页
交通灯课程设计.docx_第13页
第13页 / 共15页
交通灯课程设计.docx_第14页
第14页 / 共15页
交通灯课程设计.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

交通灯课程设计.docx

《交通灯课程设计.docx》由会员分享,可在线阅读,更多相关《交通灯课程设计.docx(15页珍藏版)》请在冰点文库上搜索。

交通灯课程设计.docx

交通灯课程设计

1

需求分析

在当今社会里,交通越来越发达,车辆也越来越来多,由此也带来了大量交通问题。

在本次课程设计中,我们针对现实生活中常看到的红绿灯,运用汇编语言及接口技术来

模拟十字路口的交通灯,对交通灯进行控制,并实现一定的功能。

我们通过一些接口芯片:

定时/计数器8253,并行接口8255A,中断控制器8259A

和8086计算机的硬件连接,通过8253定时及编延时子程序的方法(设备条件有限,不

能依靠纯硬件实现)、利用8259的中断功能及8255A并口输出数据功能做了一实时操作

系统,来模拟对十字路口交通灯的控制。

具体如下:

(1)用8253计时器来完成时间的设定;

(3)用8259中断控制器来进行紧急情况处理,如警车执行任务等情况;

(4)通过8255A并口来控制LED发光二极管的亮灭,输出为0则亮,输出为1则

灭;

(5)用8255来输出绿灯的倒计时间。

2

设计方案及分工

在这个方案里,我们将此设计分为5个模块,即:

实现电路设计、连接电路以及各模块

间整合的模块、实现交通灯循环的模块、对中断进行处理的模块、实现绿灯倒计时的显示模

块、实现夜间控制模块。

具体分工如下:

xx:

实现8253、电路设计、连接电路以及各模块间整合的模块

xx:

实现夜间控制模块

xx:

实现交通灯循环的模块

xx:

对中断进行处理的模块

xx:

实现绿灯倒计时的显示模块

我们想通过这次设计,具体实现以下功能:

以8086CPU为核心设计一个交通灯控制系统,通过8255并口来控制LED发光二级管

的亮灭,输出0为亮,输出一为灭;用8253来实现一个定时器(隔一定时间发生一边沿跳

变,引发8259中断);用8259来实现对中断的处理;

设有一个十字路口,东西方向与南北方向各有一个红绿灯,初始状态为东西路口的红灯

亮南北路口的绿灯,南北方向的路口通车,并显示南北路口绿灯的倒计时间。

延迟一定时间

之后,南北路口与东西路口都为黄灯亮,延迟一定的时间后,南北方向的红灯亮,东西路口

的绿灯两,东西方向的路口通车,并显示东西路口的绿灯倒计时间。

延迟一定时间后直接跳

变为东西方向的红灯亮,南北路口的绿灯亮。

如上所述循环一定次数后假设进入晚上,屏幕

上显示GoodNight!

此时这两个路口的黄灯开始闪烁,数码管清零并且闪烁。

延迟一定时间

后假设进入早晨并在屏幕上显示GoodNight!

并实现交通灯的循环。

如果遇到紧急情况,采

取紧急中断并且两个方向路口的红灯全亮确保紧急情况得到妥善处理,并且不管。

在紧急情

况中断处理模块里通过拨动按钮KK2来触发中断,使各个路口的灯全显示红灯,并在屏幕

上输出Waring!

中断完成后跳回原来的状态,继续运行。

3.

各个模块的实现

3.1交通灯循环模块(XX)

3.1.1

设计思想

十字路口分为南北方向和东西方向,各个方向有红黄绿三灯,其循环过程如下:

1:

东西方向路口的红灯亮,南北路口的绿灯亮;

2:

东西路口与南北路口都为黄灯亮;

3:

东西方向路口的绿灯亮,南北方向路口的红灯亮;

4:

不经过黄灯亮,直接跳变为状态1;

5:

按如上过程循环;

3.1.2流程图

图3-18255并口输出流程图

3.1.3具体实现

用8255控制交通灯的循环,具体状态如下(0:

灯亮1:

灯灭)

表1交通灯循环状态表

状态

D7(东西红)

D6(东西黄)

D5(东西绿)

D4(南北红)

D3(南北黄)

D2(南北绿)

D1

D0

1

0

1

1

1

1

0

1

1

2

1

0

1

1

0

1

1

1

3

1

1

0

0

1

1

1

1

4

0

1

1

1

1

0

1

1

8255初始化:

A口输出B口输出C口输出工作在方式0

8255控制字为:

10000000,即80H

3.2

实现绿灯倒计时模块(XX)

3.2.1

设计思想

十字路口在东西方向和南北方向各有一个绿灯倒计时显示,建一个Table存放字模。

当东西路口为绿灯时在第一个数码显示管上显示剩余时间。

首先让BX指向Table的首址,

将计数器中当前DL中的值赋给AL,通过相应的加减然后在Table中找出相应的字模通过

8255赋给数码显示管,本次课程设计用的是静态显示,当DL中的是发生变化时数码管上

显示的数字也随着变化,以次来实现在数码管上显示绿灯的倒计时间。

当南北路口为绿灯时,

过程与上面的描述类似。

3.3

实现夜间控制模块(XX)

3.3.1

设计思想

由于十字路口的交通灯是按一定的方式和固定时间进行循环的,并且每循环一次所

需时间为一秒,所以,根据C=T/L(C为白天交通灯循环的次数,T为白天(6:

00——24:

00)的总时间长度,L为交通灯循环一次的时间长度)可计算出白天交通灯循环的次数,由

白天交通灯循环的次数便可判断出是否让系统进入夜间控制,因此设计一个记录白天交通灯

当前循环次数的变量加以记录,并将此变量与预设白天循环次数进行比较即可。

当系统判断

出应进入夜间控制后,将四个方向的四部交通灯全部变为黄灯闪烁,并让四部计时器(LED)

于黄灯交替闪烁。

黄灯闪烁的次数根据C’=T’/L’(C’为夜间交通灯黄灯闪烁的次数,T’为夜

间(24:

00——6:

00)的总时间长度,L’为交通灯黄灯和计时器(LED)闪烁一次的时间

长度)计算得出,并将此值作黄灯闪烁的设定值,当黄灯闪烁次数与设定值相等时,系统便

转换为白天控制模式。

3.4

中断处理模块(XX)

3.4.1

设计思想

定时器8253连接着IRQ0,每当定时一定时间就可以触发IRQ0中断程序,也是主

程序;

同时IRQ7连接着一边沿触发,来处理应对紧急情况。

3.5

实现计数器模块(XX)

3.5.1

设计思想

由8253作为一定时器,每隔一定时间引发一次IRQ0中断,中断服务程序中有一变量

记录着时间值,从30H开始,依次累加,直到3AH,该值再变为30H。

依据这个值,系统

在每个值下会有着对应的状态。

如此往复,来实现对交通灯的模拟。

在这个值基础上,另有一变量,它在时间值走完一个时序循环,它自加一,当达到一定

数值,就会进入夜间模式。

当该模式完成时,该变量清零,再次进入正常工作模式。

3.5.2

流程图

等待

初始化

添IRQ0中间断量

初始化8255

初始化8259

初始化8253

初始化时间值

主程序流程图

4

源代码

DATASEGMENT

WEDW?

YKDB?

开始

添IRQ0中断向量

初始化8255

等待

初始化8259

初始化8253

初始化时间值

ZLCDB?

B2DB?

TIMEDW?

STRING1DB0AH,0DH,'GoodNight!

',00H

STRING2DB0DH,'GoodMorning!

',0AH,00H

STRING3DB0DH,'WARNING!

',0DH,00H

TABLEDB66H,4FH,5BH,06H

DATAENDS

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT;定义代码段

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

PUSHDS;DS:

00压栈

MOVAX,0000H

MOVDS,AX;置数据段

MOVAX,OFFSETIRQ0

ADDAX,2000H

MOVSI,0020H

MOV[SI],AX

MOVAX,0000H

MOVSI,0022H

MOV[SI],AX

MOVAX,OFFSETIRQ7

ADDAX,2000H

MOVSI,003CH

MOV[SI],AX

MOVAX,0000H

MOVSI,003EH

MOV[SI],AX

POPDS

MOVAL,80H;8255

MOVDX,63H

OUTDX,AL

MOVAL,0FCH;8259

OUT21H,AL

MOVAL,15H;8253

OUT43H,AL

MOVAL,0FFH

OUT40H,AL

MOVDL,30H

MOVZLC,30H

A1:

STI

JMPA1

IRQ0:

CALLWP

MOVAH,01H

MOVAL,DL

CMPAL,3AH

JNZA2

INCZLC

CMPZLC,32H;与换行数比较

JNZN1

CALLZPP;调用子程序

N1:

MOVAL,0DH;换行

INT10H

MOVAL,30H

A2:

INT10H

INCAX

MOVYK,AL;YK=AL

CMPDL,3AH;DL与3A比较

JNZW1;<>跳向W1

MOVDL,30H;相等则令DL=30H

W1:

MOVAH,DL

CALLWJJ;从B口输出

MOVAL,YK

MOVDL,AL

MOVAX,0120H

INT10H

MOVTIME,0099H;变量TIME赋值,延时子程序起作用

CALLDALLY

MOVAL,20H

OUT20H,AL

IRET

IRQ7:

movtime,0660h

MOVAL,01110111B

OUT61H,AL

MOVAH,06H

MOVBX,OFFSETSTRING3

INT10H

callDALLY

moval,20h

out20h,al

movtime,0020h

IRET

WJJ:

CMPAH,34H

JLHONG

CMPAH,35H

MOVAL,1111B

OUT60H,AL

JLHUANG

CMPAH,35H

JGLV

HONG:

MOVAL,7DH

MOVDX,61H

OUTDX,AL

MOVBX,OFFSETTABLE

MOVB2,0111B

CALLCHENXI

JMPXX

HUANG:

MOVAL,0BBH

MOVDX,61H

OUTDX,AL

JMPXX

LV:

MOVAL,0D7H

MOVDX,61H

OUTDX,AL

MOVBX,OFFSETTABLE

MOVB2,1110B

CALLCHENXI

ADDAH,06H

XX:

RET

ZPP:

PUSHDX

PUSHAX

MOVAL,1111B

OUT60H,AL

MOVAH,06H;显示晚上提示信息

MOVBX,OFFSETSTRING1;取STRING1的地址

INT10H;显示

MOVCX,08H

MOVTIME,0060H;变量TIME赋值,延时子程序起作用

ZP:

CALLWP

MOVAL,0BBH

MOVDX,61H

OUTDX,AL

CALLDALLY

MOVAL,0FFH

MOVDX,61H

OUTDX,AL

CALLDALLY

LOOPZP

MOVAH,06H;显示早上提示信息

MOVBX,OFFSETSTRING2

INT10H;显示

POPAX

POPDX

MOVZLC,30H

RET

WP:

PUSHAX

PUSHBX

CLI;屏蔽IRQ0

MOVAL,01H

OUT21H,AL

MOVAL,68H

OUT20H,AL

STI

MOVAL,48H

OUT20H,AL

MOVAL,00H

OUT21H,AL

POPBX

POPAX

RET

CHENXI:

PUSHAX

PUSHBX

MOVAL,B2

OUT60H,AL

SUBAH,30H

MOVAL,AH

XLAT

OUT62H,AL

POPBX

POPAX

RET

DALLY:

PUSHAX

MOVAX,TIME

MOVWE,AX

A3:

MOVAX,0560H

A4:

DECAX

JNZA4

DECWE

JNZA3

POPAX

RET

CODEENDS

ENDSTART

5

设计心得

通过本次课程设计,我们熟悉了芯片8253、8259、8255的功能和应用。

学会了用汇编

语言设计一个程序的方法。

虽然程序中有一部分是现成的,但我们还是通过查书或问老师的

方式读懂了它的思路。

在实现数码管显示数字的过程中,我们学会了先画流程图再编写程序

的良好习惯,它有利我们理清思路,更快更简洁地编写出程序。

在用到8259、8255芯片时,

通过编程进一步掌握了它们的功能。

本次课程设计提高我们的自学能力和合作精神。

在实现计数功能部分,可以用硬件也可以用软件实现,我们选择了硬件即通过8253来

实现。

在成功调试并运行后,我们不忘去尝试能否用软件实现。

在编程的过程中遇到了许多

细节方面的问题,我们通过讨论一起解决了一些问题。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2