交通灯实时控制系统.docx

上传人:b****5 文档编号:6019173 上传时间:2023-01-03 格式:DOCX 页数:18 大小:160.17KB
下载 相关 举报
交通灯实时控制系统.docx_第1页
第1页 / 共18页
交通灯实时控制系统.docx_第2页
第2页 / 共18页
交通灯实时控制系统.docx_第3页
第3页 / 共18页
交通灯实时控制系统.docx_第4页
第4页 / 共18页
交通灯实时控制系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

交通灯实时控制系统.docx

《交通灯实时控制系统.docx》由会员分享,可在线阅读,更多相关《交通灯实时控制系统.docx(18页珍藏版)》请在冰豆网上搜索。

交通灯实时控制系统.docx

交通灯实时控制系统

1需求分析

1.1课程设计题目

交通灯实时控制系统。

伴随着社会的发展以及人们生活水平的提高,汽车的数量在不断的增加,交通的问题日益突出,单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。

以下就是运用数字电子设计出的交通灯:

用红灯来控制支路的交通通行,用绿灯来控制主干道的交通通行。

1.2设计目的

1)巩固和加深课堂所学知识;

2)学习掌握一般软硬件的设计方法和查询、运用资料的能力;

3)通过在TDN集成开发环境中对交通灯实时控制系统的设计与制作,综合应用8253、8259、8255芯片,深入了解和掌握利用可编程8255A进行控制的原理与方法;

4)通过这次课程设计,将课本上的理论知识和实际的应用有机的结合起来,以提高分析和解决问题的实际能力,通过对汇编语言程序代码的设计,编写,修改以提高自己实际编程能力。

1.3设计任务

1)任务:

设计一个交通灯控制系统

要求综合运用8259、8253、8255芯片设计十字路口的交通信号灯控制系统。

支线与主干线允许通车15秒,当支线允许通车时(15秒)中,若主干线15秒内已有10辆车到来,则申请中断,允许主干线通车,实现无交叉点通过。

2)设计任务要完成实验方案论证,进行十字路口的交通信号灯控制电路设计,画出电路原理图及实验电路图;搭建实验电路,进行软件编程、调试、运行以及使用说明文档的建立等一整套工作任务。

交通指示灯如图1-1

图1.1

1.4软硬件运行环境及开发工具

1.4.1软硬件运行环境

TDN88实验平台,PC机,导线,汇编语言编译软件。

1.4.2开发工具

TDN86/88教学实验系统,PC机。

2.概要设计

2.1交通灯实时控制系统设计原理及方法

2.1.1设计原理

通过并行接口芯片8255和计算机的硬件连接,通过软件计时,来实现十字路口交通灯的模拟控制,用8259芯片,得到CPU的中断响应后,提供中断类型号,从而快速寻找到该中断源的中断服务程序的入口地址,转去执行中断服务序。

通过并行接口芯片8255和计算机的硬件连接,通过软件延时计数,来实现十字路口交通灯的模拟控制。

即用D5,D4,D1,D0亮表示车辆允许东西方向通行,D7,D6,D3,D2亮表示车辆允许南北方向通行。

用8259芯片,得到CPU的中断响应后,提供中断类型号,从而快速寻找到该中断源的中断服务程序的入口地址,转去执行中断服务程序。

实验中:

‘0’表示灯亮,‘1’表示灯灭

通过课程设计要求找出灯亮的规律:

1.东西方向绿灯亮,南北方向红灯亮,延续20秒。

2.20秒钟的最后5秒,东西方向绿灯以频率1HZ闪烁5次,南北方向红灯亮。

3.东西方向红灯亮,南北方向绿灯亮,延20秒。

4.20秒钟的最后5秒,南北方向绿灯以频率1HZ闪烁5次,东西方向红灯亮。

5.循环以上步骤。

通过分析灯亮的规律,总结出如下的功能表:

表2-1交通灯亮灭功能表

通车

红D7

红D6

红D5

西

红D4

绿D3

绿D2

绿D1

西

绿D0

东通车

0

0

1

0

1

1

0

1

南通车

1

0

0

0

0

1

1

1

西通车

0

0

0

1

1

1

1

0

北通车

0

1

0

0

1

0

1

1

2.1.2系统原理图

系统原理图如图2-1所示

 

图2-1系统原理图

2.1.3电路原理

本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。

硬件电路由R-S触发器电路、发光二极管模块、8255可编程并行接口模块和紧急中断模块8259组成。

2.1.4设计方法

通过分析8255、8259各端口地址,设计合理的地址译码电路。

8259的地址为20H、21H,8255的端口地址为60H、61H、62H、63H。

红、绿灯分别接在8255的A口的高四位和低四位端口,PA0~PA7分别连接到D0~D7来控制8个灯的亮灭,用以模拟交通灯。

B口和C口接两个两片数码管显示器进行倒计时。

用开关模拟中断信号的产生,则要用到8259芯片。

8259的中断请求输入管脚IRQ7与KK1相连。

每按动一次KK1,产生一次中断请求信号。

当8259接收到中断请求信号之后,便开始执行中断,实现8个灯的闪烁。

系统的程序设计最关键的就是延时程序的编写,因为要在延时的同时用两个LED数码管同步显示倒计数,这给程序设计带来了难题。

现提出如下解决方案:

在进入每个状态时,给寄存器CX置初值表示要倒计时的时间,然后开始把CX循环减1,直到0进入下一个状态。

在CX减1循环中每循环一次,调用延时1s的子程序DELLAY1S,这样假如在状态0给CX置初值20,则会延时20s;如果在每次调用的延时1s的子程序DELLAY1S中,再调用显示CX的值的子程序LED1给2个LED数码管显示,就实现了与延时同步的倒计数显示。

这样就实现了延时与倒计数的同步。

程序主要是由主程序、延时1s子程序DELLAY1S、LED显示CX子程序LED1、中断服务程序IRQ7组成。

在主程序中包括对8255初始化、中断程序入口地址的填写、中断IRQ7开放,各种状态的依次处理。

3.详细设计

3.1硬件设计与软件设计

3.1.18255A芯片

8255A芯片是一种通用的可编程并行I/O接口芯片。

它包含有3个8位端口,称为A口,B口,C口。

其中A口包含8个I/O引脚(PA0~PA7),B口包含8个I/O引脚(PB0~PB7),C口包含8个I/O引脚(PC0~PC7)。

该芯片有3种工作方式,称为0方式,1方式,2方式。

本实验选取8259A的A口、B口、C口都作为输出端口,工作方式选0方式。

所以8259A的方式命令字为10000000B,即80H。

端口地址为60H~63H。

其初始化编程为:

MOVAL,10000000B

OUT63H,AL

 

图3-1系统中的8255A芯片

3.1.28259芯片

8259A芯片内部含有中断请求寄存器,用来存放由外部输入的中断请求信号IR7~IR0。

当某个输入端为高电平时,该寄存器相应位置“1”。

本实验中需要从IR7请求中断,因此采用中断屏蔽方式,将IR6~IR0都设为高电平,即将寄存器IR6~IR0置“1”。

所以其方式命令字为01111111B,即7FH。

端口地址为20H~21H

其初始化编程为:

MOVAX,0000H

MOVDS,AX;数据段清零

MOVAX,OFFSETIRQ7;装入中断程序入口地址

MOVSI,003CH

MOV[SI],AXMOVAX,CS

MOVSI,003EHMOV[SI],AXPOPDS

INAL,21H;读中断屏蔽寄存器IMR

ANDAL,7FH

OUT21H,AL;开放IRQ7

STI;开中断

3.2硬件电路的设计与实现

图3-2控制中断实验图

图3-3硬件设计实验图

3.3软件设计

3.3.1红绿灯时间控制

本实验中有15秒和5秒的延时,我们先编写一个一秒的延时程序,然后再分别调用这个一秒的延时子程序,MOVCX,25中的cx控制时间,延时一秒子程序如下:

DELLAY1S:

PUSHAXPOPAX

PUSHBXLOOPD0

PUSHCXPOPCX

CALLLED1POPBX

MOVCX,0FFFFHPOPAX

D0:

PUSHAXRET

3.3.2本实验中的中断的运用

MOVAX,OFFSETIRQ7;取中断程序入口地址(相对地址)

本实验中使用的是中断请求输入IRQ7,当你按KK1时,执行中断程序,灯会闪烁,程序如下

IRQ7:

OUT60H,ALMOVAL,20H;结束中断

CALLDELLAY1SOUT20H,AL

NOTALIRET

DECBX

JNZIR7

POPCX

POPBX

POPAX

 

4软件主要模块流程图

4.1程序总设计流程图

 

 

图4-1程序流程图

4.2延时1s子程序DELLAY1S流程图

此延时子程序不光实现延时,还调用了LED1子程序显示了CX的内容,实现延时的同时倒计数的显示。

具体流程如下:

 

图4-2实验延时1秒流程图

子程序如下:

LED1:

PUSHCX;数码管显示数字

PUSHAX

MOVAX,CX

MOVBL,0AH

MOVAH,0

DIVBL;商放在AL,余数放在AH

MOVBX,OFFSETTAB1;取段码表首地址

XLAT

OUT61H,AL;输出显示

MOVCX,0600H

ADD2:

LOOPADD2

MOVAL,AH

MOVBX,OFFSETTAB1

XLAT

OUT62H,AL

MOVCX,0600H

ADD3:

LOOPADD3

POPAX

POPCX

RET

4.3IRQ7中断子程序流程图

IRQ7中断子程序是实现所有灯闪烁10s就返回的功能。

具体流程就如下。

 

图4-3中断服务程序流程图

中断实现代码如下:

IRQ7:

PUSHAX;外中断服务子程序,所有灯闪10秒

PUSHBX

PUSHCX

MOVCX,0

MOVAL,0FFH

MOVBX,0AH

IR7:

OUT60H,AL

CALLDELLAY1S

NOTAL

DECBX

JNZIR7

POPCX

POPBX

POPAX

MOVAL,20H;结束中断

OUT20H,AL

IRET

5.系统调试

5.1系统调试

1.使用串行通讯现将实验系统与PC微机相连

2.正确搭接好相关实验电路

3.接通电源,双击试验系统快捷方式,开启试验系统如下图

4.点击菜单栏“文件”按钮,选择建新文件。

即可开始输入源程序。

输入程序后,点击保存按钮,进行保存。

5.点击编译按钮,对源程序进行汇编,生成目标文件(*.obj)。

汇编信息显示与屏幕,若出现错误,修改源程序,直至正确。

6.汇编无误后,对汇编生成的*.Obj文件进行链接,链接信息显示于屏幕上,生成*。

EXE可执行文件。

7点击加载按钮,加载*.EXE程序。

屏幕显示信息。

8.加载成功,RUN,运行程序。

9.开始时候东西方向绿灯亮,南北方向红灯亮20秒,最后5秒时候绿灯会闪烁。

南北方向绿灯亮,东西方向红灯亮20秒,最后5秒时候绿灯会闪烁。

10.在9过程中,若用户按下KK1,则会出现8个灯一起闪烁10秒,然后回到按之前状态,继续循环步骤9中过程。

5.2操作说明及运行结果

5.2.1操作说明

1.按实验接线图接线。

2.输入程序并检查无误,经汇编,连接后装入系统。

3.运行程序。

观察灯的变化,将KK1按1下,会出现红绿灯交替闪烁10秒

5.2.2运行结果

D0,D1亮表示东西方向绿灯亮准行,D4,D5亮表示南北方向红灯亮,持续20秒;当准行时间到最后5秒时,准行方向绿灯闪烁。

D2,D3亮表示南北方向绿灯亮准行,D6,D7表示东西方向红灯亮持续时间20秒,当准行时间到最后5秒时,准行方向绿灯闪烁。

此过程课程设计要求相符合。

6.课程设计小结

通过这次课程设计,我对8255这种芯片有了进一步的了解。

知道了它在实际应用中的功能以及它们初始化的方法。

这次课程设计从需求分析到设计,是一个完整的体系,这提高了我分析问题的能力。

当遇到问题时,回到书本,查找实际问题所需的理论知识,将理论和实际结合起来,以得到问题的解,这提高了我解决实际问题的能力。

其实课程设计和真正的实际需求还是有些差别的,比如我最开始就是以实际需求来分析灯的编码的,但是花了很长时间,最后发现8个灯根本实现不了实际生活中的交通灯的变化方式。

所以最后借用了同学告诉的编码方式,才得到正确结果。

本设计还有一个缺陷就是在本设计中,那个1秒的时间间隔只是一个模拟的数字,并不是准确的1秒。

但是该是如何使用8253分频实现真正1秒的时间间隔,这还有待改进。

 

设计者:

陈楠

日期:

2014年6月12日

附录:

DATASEGMENT

TAB1DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATAENDS

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

CLI

MOVAL,80H;8255A初始化,A,B,C作为输出口

OUT63H,AL

PUSHDS

MOVAX,0000H

MOVDS,AX;数据段清零

MOVAX,OFFSETIRQ7;取中断程序入口地址(相对地址)

MOVSI,003CH;填8259中断7中断矢量

MOV[SI],AX;填偏移量矢量

MOVAX,CS;段地址CS

MOVSI,003EH

MOV[SI],AX

POPDS

INAL,21H;读IMR

ANDAL,7FH;允许IR7中断

OUT21H,AL

STI;开中断

S0:

MOVAL,11001100B;状态0,东西方向通车15s,南北方向禁止通行

OUT60H,AL

MOVCX,15;延时25s

T0:

CALLDELLAY1S

LOOPT0

S1:

MOVAL,11001111B;状态1,东西方向允许通车5s闪灯,南北方向禁止通行

MOVCX,05H

OUT60H,AL

CALLDELLAY1S

DECCX

T1:

MOVAL,11001100B;东西方向5s闪灯,每秒亮灭一次

OUT60H,AL

CALLDELLAY1S

MOVAL,11001111B

OUT60H,AL

CALLDELLAY1S

MOVAL,11001100B

OUT60H,AL

CALLDELLAY1S

DECCX

MOVAL,11001111B

OUT60H,AL

CALLDELLAY1S

DECCX

JNZT1

S2:

MOVAL,00110011B;状态2,南北方向通车15s,东西方向禁止通行

OUT60H,AL

MOVCX,15;延时15s

T2:

CALLDELLAY1S

LOOPT2

S3:

MOVAL,00111111B;状态3,南北方向允许通车5s闪灯,东西方向禁止通行

MOVCX,05H

OUT60H,AL

CALLDELLAY1S

DECCX

T3:

MOVAL,00110011B;南北方向5s闪灯,每秒亮灭一次

OUT60H,AL

CALLDELLAY1S

MOVAL,00111111B

OUT60H,AL

CALLDELLAY1S

DECCX

MOVAL,00110011B

OUT60H,AL

CALLDELLAY1S

MOVAL,00111111B

OUT60H,AL

CALLDELLAY1S

DECCX

JNZT3

JMPS0

DELLAY1S:

;延时1s的子程序,实现延时1s并在数码管中显示CX中的内容

PUSHAX

PUSHBX

PUSHCX

CALLLED1

MOVCX,0FFFFH

D0:

PUSHAX

POPAX

LOOPD0

POPCX

POPBX

POPAX

RET

LED1:

PUSHCX;数码管显示数字

PUSHAX

MOVAX,CX

MOVBL,0AH

MOVAH,0

DIVBL;商放在AL,余数放在AH

MOVBX,OFFSETTAB1;取段码表首地址

XLAT

OUT61H,AL;输出显示

MOVCX,0600H

ADD2:

LOOPADD2

MOVAL,AH

MOVBX,OFFSETTAB1

XLAT

OUT62H,AL

MOVCX,0600H

ADD3:

LOOPADD3

POPAX

POPCX

RET

IRQ7:

PUSHAX;外中断服务子程序,所有灯闪10秒

PUSHBX

PUSHCX

MOVCX,0

MOVAL,0FFH

MOVBX,0AH

IR7:

OUT60H,AL

CALLDELLAY1S

NOTAL

DECBX

JNZIR7

POPCX

POPBX

POPAX

MOVAL,20H;结束中断

OUT20H,AL

IRET

CODEENDS

ENDSTART

 

参考文献

[1]彭虎,周佩玲《微机原理与接口技术》北京,电子工业出版社2011

[2]王爽《汇编语言》北京,清华大学出版社2007

 

设计过程中质疑(或答辩)记载:

1.8255各端口的作用及初始化编程。

答:

A端口显示指示灯,B端口显示倒计时的高4位,C端口显示倒计时的低4位,IRQ7为中断接口。

8255的初始化:

MOVAL,80H

UT63H,AL

2.设几高5位为08H,从IRQ7引入中断中的中断类型n为多少,向量地址是多少?

答:

指导教师评语:

 

评分:

 

签名:

年月日

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

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1