交通灯.docx

上传人:b****3 文档编号:5448426 上传时间:2022-12-16 格式:DOCX 页数:15 大小:121.28KB
下载 相关 举报
交通灯.docx_第1页
第1页 / 共15页
交通灯.docx_第2页
第2页 / 共15页
交通灯.docx_第3页
第3页 / 共15页
交通灯.docx_第4页
第4页 / 共15页
交通灯.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

交通灯.docx

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

交通灯.docx

交通灯

目录

1、设计目的………………………………………2

2、设计要求………………………………………2

3、设计具体实现…………………………………2

3.1芯片选择及端口选择……………………2

3.2芯片介绍…………………………………3

3.3LED红绿灯显示…………………………6

3.4设计思想…………………………………7

3.5设计流程图………………………………8

4、主程序设计……………………………………9

5、结论与展望……………………………………14

六、课程设计总结…………………………………15

七、参考文献………………………………………16

 

一、设计目的

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

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

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

4.熟悉8253计数器/定时器的工作方式及应用编程,

掌握利用软硬件相结合定时的方法

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

二、设计要求

本次课程设计的内容为交通信号灯的实时控制和管理。

具体要求如下:

 1.东西方向车辆放行60秒钟。

即东西方向的绿灯和南北方向的红灯同时点亮1分钟;

 2.1分钟后,东西方向的黄灯闪烁5秒钟,以警示车辆将切换红绿灯。

此时南北方向仍维持红灯点亮。

在南北方向亮红灯期间,在2位数码管上显示计数值(每秒减1),从65减为0。

 3.东西方向的黄灯闪烁5秒钟后,转为南北方向放行20秒钟。

即东西方向的红灯和南北方向的绿灯同时点亮20秒钟;

4.南北方向放行20秒钟后,转为南北方向的黄灯闪烁5秒钟,以警示将切换红绿灯。

此时东西方向仍维持红灯点亮,从25减为0。

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

如此循环重复。

三、设计的具体实现

3.1芯片选择及端口选择

1、用8255A实现对信号灯的控制(所用端口自定);2位数码显示。

2、用8253的计数器2定时向主片8259A的IRQ7请求中断,以实现要求的30秒钟、5秒钟和20秒的定时。

8253计数器2的CLK2接OPCLK,频率为1.19318MHZ;GATE2已接+5V;定时采用软硬件相结合的方式实现。

3、用发光二极管模拟红绿灯。

 注:

8259A的端口地址为:

218H、219H

8255A的端口地址为:

端口A-200H、端口B-201H、

端口C-202H、控制端口-203H

8253的端口地址为:

计数器0-208H、计数器1-209H、

计数器2-20aH、控制寄存器0-20bH。

3.2芯片介绍

1)8259A芯片简述

1、Intel8259A是可编程中断控制器PIC

2、可用于管理Intel8080/8085、8086/8088、80286/80386的可屏蔽中断

3、8259A的基本功能

✧一片8259A可以管理8级中断,可扩展至64级

✧每一级中断都可单独被屏蔽或允许

✧在中断响应周期,可提供相应的中断向量号

✧8259A设计有多种工作方式,可通过编程选择

8259A的内部结构如图1:

图18259A内部结构

2)8255芯片简述

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,+5V单电源供电。

1.8255能在三种方式下工作:

方式0—基本输入/输出方式

方式1—选通输入/输出方式

方式2—双向选通输入/输出方式

2.8255各引脚功能为:

D7~D0——与CPU侧连接的八条双向数据线;

WR(低电平有效)—写输入信号;

RD(低电平有效)—读输入信号;

CS(低电平有效)—片选输入信号;

A0、A1—片内寄存器选择输入信号;

PA7~PA0—A口外设双向数据线;

PB7~PB0—B口外设双向数据线;

PC7~PC0—C口外设双向数据线;

RESET—复位输入信号

8255A的内部结构如图2:

图28255A内部结构

3.8255端口地址

A口的端口地址为60H

B口的端口地址为61H

C口的端口地址为62H

控制寄存器的端口地址为63H

3)8253芯片简述

8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2MHz,它所有的技术方式和操作方式都通过编程控制。

1.8253有六种工作方式:

方式0:

计数结束中断

方式1:

可编程频率发生器

方式2:

频率发生器

方式3:

方波频率发生器

方式4:

软件触发的选通信号

方式5:

硬件触发的选通信号

2.8253引脚图如图3所示,各引脚功能如下:

D7~D0—八条双向数据线;

WR(低电平有效)—写输入信号;

RD(低电平有效)—读输入信号;

CS(低电平有效)—片选输入信号;

A0、A1—片内寄存器地址输入信号;

CLK—计数输入,用于输入定时基准脉冲或计数脉冲;

OUT—输出信号,以相应的电平指示计数的完成,或输出脉冲波形;

GATE—选通输入,用于启动或禁止计数器的操作,以使计数器和计测对象同步。

 

8253内部结构如图4:

图48253内部结构

 

3.8253端口地址

计数器0的端口地址为40H;

计数器1的端口地址为41H;

计数器2的端口地址为42H;

控制寄存器的端口地址为43H

3.3LED红绿灯显示

十字路口的交通灯分布示意图如图5所示,将这12个交通灯进行编号。

图5十字路口交通灯分布示意图

这12个交通灯共有四个状态:

状态1(S1):

东西红灯(4、10)亮,南北绿灯(3、9)亮

状态2(S2):

南北黄灯(2、8)亮,东西仍为红灯(4、10)亮

状态3(S3):

南北红灯(1、7)亮,东西绿灯(6、12)亮

状态4(S4):

东西黄灯(5、11)亮,南北仍为红灯(1、7)亮

3.4设计思想    

设计数器0的计数初值为25000,由于CLK0接脉冲信号,频率为2.5MHZ,所以每10ms中断一次。

利用CX对不同的状态时间计数,用来实现计数器0对1分钟,20秒钟,5秒钟的定时。

中断子程序分为数码显示刷新部分和红绿黄灯各种状态切换部分。

每进入中断即刷新LED显示。

用对于东西车道和南北车道黄灯闪烁利用标志位判断实现,满足比较条件就暗,不满足条件就亮。

3.5设计流程图

 

 

 

    

               

 

图6主程序流程图

四、主程序设计

⒈本次设计中

1)选用8253的计数器0定时向实验系统主片8259A的IRQ0请求中断。

2)设置8253的计数器0每10ms请求一次中断,工作于模式3;

3)8255的A端口控制交通灯。

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

初始化程序:

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

DATASEGMENT

LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

;0-9的段选码

D1   EQU218H;8259A端口地址

D2   EQU219H      

EA   EQU200H     ;8255端口地址A

CONTROLEQU20bH       ;8253端口地址

COUNT0 EQU208H

COUNT1 EQU209H                 

COUNT2 EQU20aH

Z8279  EQU222H

D8279 EQU220H

LEDMOD EQU00;左边输入,八位显示外部译码八位显示

LEDFEQ EQU38H  ;扫描频率

DATAENDS

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

代码段

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

CONT    DB0

CONT1    DB0

CONT2    DB0

BKSD    DB0

BKAD    DB0

BKDA    DB0

TEMP    DB0

START:

MOVAX,0

MOVDS,AX

MOVAX,OFFSETIRQ0

ADDAX,2000H

MOVSI,0FH*4

MOV[SI],AX

MOVAX,0

MOV[SI+2],AX

INAL,218H

ANDAL,7FH

OUT219H,AL

CLI;中断标志位清0

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

初始化8255

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

MOVAL,80H        ;初始化8255

OUTEE,AL

MOV   DX,218H      ;8259初始化

MOV   AL,00010010B

OUT   DX,AL;ICW1的设置

MOV   AL,08H

MOV   DX,219H

OUT   DX,AL;ICW2的设置

MOV   DX,203H    

MOV   AL,80H

OUT   DX,AL;设置为全输出

MOV   DX,200H

MOV   AL,0FFh

OUT   DX,AL      ;清LED

MOV   DX,200H     ;全红

MOV   AL,0F0H

OUT   DX,AL

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

初始化8253

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

MOVAL,00110110B   ;初始化8253

OUTCONTROL,AL

MOVAX,25000

MOVDX,COUNT0

OUTDX,AL

MOVAL,AH

OUTCOUNT0,AL;设置通道0初值

MOVAX,DATA

MOVDS,AX

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

中断服务程序:

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

A1:

STI;关闭中断

   HLT;停机指令

   JMPA1    

JMPCOMPARE

COMPARE:

CMPDL,0

    JZSTATE0

    CMPDL,1

    JZSTATE1

    CMPDL,2

    JZSTATE2

    CMPDL,3

    JZSTATE3

STATE0:

 MOVAL,01011010B ;状态0:

东西红灯,南北绿灯

OUTEA,AL

    DECSI

    JNZCHANGE1

DECDH

MOVSI,100

JMPCHANGE

CHANGE1:

DECCX

    CMPCX,0

    JNZM0

    MOVCX,500

STATE1:

 DECDI  ;状态1:

东西方向黄灯闪烁,南北绿灯

CMPDI,0

    JNZSHINE1

MOVAL,00001010B  ;东西灭,南北绿

    OUTEA,AL

    MOVDI,50

    JMPCHANGE

SHINE1:

 MOVAL,11111010B  ;东西黄,南北绿  

  OUTEA,AL

CHANGE:

 DECSI

JNZCHANGE2

DECDI

  MOVSI,100

CHANGE2:

DECCX

    CMPCX,0

    JNZM1

    MOVCX,2000

    MOVDH,25

STATE2:

MOVAL,10100101b  ;状态2:

东西绿灯,南北红灯

OUTD2,AL

DECSI

JNZCHANGE3

DECDH

MOVSI,100

CHANGE3:

DECCX

    CMPCX,0

    JNZM2

    MOVCX,500

STATE3:

DECDI    ;状态3:

东西绿灯,南北黄灯闪烁

    CMPDI,0

    JNZSHINE2

   MOV AL,10100000B    ;东西绿灯,南北灭

    OUTD2,AL

    MOVDI,50

   JMPSOURCE

SHINE2:

MOVAL,10101111B     ;东西绿,南北黄

    OUTD2,AL

SOURCE:

 DECSI

    JNZCHANGE4

    DECDH

    MOVSI,100

CHANGE4:

DECCX

    CMPCX,0

    JNZM3

    MOVCX,6000

    MOVDH,65

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

执行跳转回到主程序

准备下一次循环

﹎﹎﹎﹎﹎﹎﹎﹎﹎﹎

M0:

 MOVDL,0         ;下次进入状态0

  JMPEXIT

M1:

 MOVDL,1         ;下次进入状态1

  JMPEXIT

M2:

 MOVDL,2         ;下次进入状态2

   JMPEXIT

M3:

  MOVDL,3      ;下次进入状态3

EXIT:

MOVAL,20H

MOVDX,218H

    OUTDX,AL

    IRET;中断返回

CODEENDS

ENDSTART

 

五、结论与展望

要做好一个课程设计,就必须做到:

在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。

课程设计结束了,但是从中学到的知识会让我受益终身。

发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。

设计过程,好比是我们的成长的历程,常有一些不如意,难免会遇到各种各样的问题。

通过这次课程设计是我对单片机的工作原理有了基本了解,知道了单片机的工作过程和数据传输的方向,课程设计是我们深入学习的敲门砖,对我们以后的学习和工作有很大的帮助。

 

六、课程设计总结

在本次设计中,使用了8259A中断控制器、8253计数器、8255可编程并行接口实现了,对南北、东西方向交通的分别计时、分别控制,但是程序没有实现对双向交通的数码显示。

十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。

十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。

当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。

它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。

在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各50秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。

交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。

但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受人为因素的影响。

采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。

它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。

目前,有一种使用“模糊控制”技术控制交通灯的方法。

能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。

但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。

本次课程设计采用定时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。

通过微机原理课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。

同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。

设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。

这个设计过程中,我遇到过许多次失败的考验,就比如,自己对实际生活中的交通秩序的不了解给整个设计带来的困扰,真想要就此罢休,然而,就在想要放弃的那一刻,我明白了,原来结果并不那么重要,我们更应该注重的是这一整个过程。

于是,我坚持了下来。

课程设计是培养学生综合运用所学知识发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.

 

七、参考文献

1沈美明等.IBMPC/XT汇编语言程序设计.清华大学出版社.1999

2姚君遗.汇编语言程序设计.南京大学出版社.2001

3孙德文.微型计算机技术.高等教育出版社.2001

4戴梅萼.微型计算机技术及应用.清华大学出版社.1996

5周明德.微型计算机系统原理及应用.清华大学出版社.1998

6陈涛.16/32位微机原理、汇编语言及接口技术.机械工业出版社.2001

7徐晨等.微机原理及应用.高等教育出版社.2004

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

当前位置:首页 > 医药卫生 > 基础医学

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

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