人人范文网 范文大全

交通信号灯自动控制系统

发布时间:2020-03-02 13:00:16 来源:范文大全 收藏本文 下载本文 手机版

1 概述 1.1 设计目的

(1) 掌握CPU与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力;

(2) 通过对交通灯信号自动系统的模拟控制,进一部提高应用8255A并行接口技术,8253定时功能,8259A中断管理控制器的综合应用能力;

(3) 掌握基本汇编源程序编制方法,学会综合考虑各种设计方案的对比和论证。 1.2 设计要求

交通信号灯自动控制系统须满足下列要求和功能: (1) 首先车行道亮绿灯45s,同时人行道亮红45s;

(2) 45s后,车行道黄灯闪烁3次,亮、灭各1s,此时人行道仍维持红灯;

(3) 6s后,转为人行道亮绿灯20s,车行道亮红灯20s; (4) 20s后,再转到第(1)步,如此循环往复;

(5) 当有车闯红灯时,能实现报警信号持续3 s的扩展功能。

1.3 设计方法及步骤

1、设计系统硬件部分

(1) 先进行方案论证,确定最终采取硬件定时还是软件定时,是查询方式还是中断方式;

1 (2) 在具体甄选设计过程中可能要设计的芯片,分析它们的功能特点,确定它们的工作模式;

(3) 按照各芯片的使用特点以及本系统的设计要求逐步连接,画出系统硬件连接图。

2、设计系统的软件部分

(1) 先进行程序编制方式的方案论证,讨论分析,确定是采用宏程序调用还是子程序调用模式;

(2) 确定本系统设计可能涉及的源程序各个模块,明确各个模块的各自功能,分清它们相互之间的调用关系; (3) 画出各个模块的程序流程图;

(4) 依据流程图,编制出交通信号灯自动控制系统的完整汇编源程序。

1.4 设计说明

(1) 本设计采用共阳极的发光二极管模拟对应的交通信号灯的型式,参见后面“系统硬件部分设计”中“总体设计”这一节;

(2) 本设计关于有车闯红灯报警的扩展功能,是通过红外线接收装置实现的,具体分析见后面“可编程芯片说明及其地址范围确定”中“8254定时/计数器”这一节;

(3) 在本设计的最初方案中,本来是有电子眼拍摄闯红灯车牌号的这一很实用、很现实化的扩展功能的,但由于实现这种功能的电路芯片资料难以搜集,芯片电路连接复杂以及芯片工作模式,工作环境,工作特点的难以确定,最终被舍弃,只留下报警功能;

2 (4) 本设计在很多方面,比如译码器的选择,定时器选型,程序调用方式等等尽量做到不与本组其他成员雷同,程序编制力求简便清晰,硬件连接图在保证每根具体用到的管脚线都能被表示出来的同时,力求线路连接清晰明确,尽量不使线与线之间过于缠绕。 2 方案论证

2.1 软件定时与硬件定时

本任务要求交通信号灯能实现自行定时、延时、切换等功能,即能实现交通信号灯自动控制。一般计算机控制系统实现定时或延时有两种基本方法:利用软件定时或使用可编程硬件芯片,即硬件定时。 软件定时,即让机器执行一段程序,这个程序没有具体的执行目的,显然利用执行每条指令CPU所花费的时间,可实现延时功能。这种方法容易实现,仅需选用恰当指令并安排循环即可实现,定时时间调整方便,但不能做到精确定时。另外,时间调整是以一条指令执行时间为基准,占用CPU资源,降低CPU利用率。

硬件定时,即使用可编程定时/计数器硬件芯片定时。这种芯片内部有一个可编程定时器,其定时值、定时范围可以很容易地由软件程序改变,定时时间到时可发出某种形式的信号通知外设或CPU。定时器的输出频率和波形等均由程序设定,因而使用灵活,功能强。 综合软、硬件定时的各种优缺点,考虑到交通信号灯精确换灯的要求,以及交通信号等需要方便、灵活地调整换灯时间等特点,我选用硬件定时来完成任务。

3 2.2 查询方式与中断方式

定时时间到,比如车道绿灯亮45s后需换成黄灯闪烁,完成这一转换工作,有两种工作方式:查询方式和中断方式。

查询方式即CPU在与外设传输数据(本设计为8086传输数据给8255A从而控制交通信号灯换灯)前,一直不停检查外设状态,当外设准备好时方传输数据(本设计为8086不断测试8255A状态口PC1,当PC1变为低电平时,表明定时时间到),CPU可传输数据,控制信号灯切换。

中断方式可以不让CPU主动去查询外设状态,而是让外设在数据准备好(定时时间到后)之后再通知CPU,CPU继而开始与外设交换数据控制外设工作。

显然查询方式相比与中断方式,使CPU利用率大大降低,因为CPU要用大量时间去执行状态查询程序。但考虑到本课程设计的主要目的是控制信号灯切换,即CPU工作最终目的还是与外设传输数据,控制外设工作,即这种状态查询是有必要的,CPU的不间断的状态查询并非多余的,而且查询方式可使指令执行效率提高,指令执行目的更加明确,软件编程更加简便,避免了中断方式繁琐的中断矢量表的建立,中断程序的汇编等等,因而我选用查询方式来实现交通信号灯的自动控制。

2.3 8253定时/计数器与8254 定时/计数器

8253和8254都是能实现定时,延时功能的可编程定时计数器,可以

4 轻松地实现所需要的功能。两者的功能与工作方式,工作环境皆类似,区别仅在于8254的工作频率更高,可达到10MHZ。另外,8254比8253还多出回读功能。

考虑到本组大多数人都选用8253,为避免重复雷同,我选用8254定时计数器,实际上两者并没多大区别。

2.4 方案确定

综上所述,我选用的方案最终为利用可编程计数器8254实现硬件定时,用查询方式控制8086工作,用并行I/O接口8255A实现8086与外设(本设计采用发光二极管模拟交通信号灯)数据交换,用中断控制器8259A实现闯红灯报警的扩展功能。

3 硬件部分设计 3.1 总体设计

正如A3图纸系统硬件连接图所示,CPU我选用INTEL公司的8086,它足以满足交通信号灯自动控制系统的功能要求;存储器选用两片型号为6116的静态RAM,一片作为奇片,一片作为偶片,总存储容量可达到4KB,既可以读也可以写,足以满足要求;由于8086CPU有16根地址与数据共用线,故有必要将地址码与数据码分开,8086采用了分时传送的方法,即先传送地址码,再传送数据码,故必须用锁存器将地址码锁存起来。我选用74系列的74LS373作为地址锁存器;

5 由于外设、内存存取数据速度不匹配,故有必要使用缓冲器来暂时记忆存储数据,我选用74系列的74LS245作为数据缓冲器;存储器译码我采用全译码方式,用74LS688比较译码器可减少逻辑组合电路;可编程芯片8255A,8254,8259A的片选信号译码,我采用线译码方式,这样可以保证其端口地址只有8位,易于程序编写。因而74LS138译码器是最好的选择。至于8255A,8254,8259A的选用目的已在前面解释过,这里不再重复。在具体设计该系统时,我选用发光二极管LED来模拟红,黄,绿灯的亮和灭。由于实际生活中只需要10盏灯就可实现车行道,人行道的通行,如图所示,故这里我也选用10支二极管,其对应关系如表所示。LED1-LED5与8255A PA口相连,LED6-LED10与PB口相连。PC1口作为状态查询口,PC6口输出可实现车闯红灯的报警功能。

图1 信号灯和LED对应图

6 3.2 CPU选型

CPU我选用的是8086,其管脚分配图如图所示。部分管脚采用分时复用方式,构成了40条管脚的双列直插封装,它有两种工作模式,我采用的是最小模式,故33号管脚应接高电平。

8086内部结构由指令执行部件EU和总线接口部件BIU两部分构成。EU负责执行指令,BIU负责取指令,读出操作数和写入结果。两个单元相互独立工作,有效地加快系统的运算速度。

3.3 存储器选型

存储器我选用两片6116型号的静态RAM,容量为4KB片选信号与A0相连的是偶片,主要用于低8位数据总线上进行字节传送。与BHE选中的是奇片,主要用于高8位数据总线上字节传送。当A0和BHE都选中的时候,可进行16位数据总线字传送。

7

图3 6116 RAM存储器管脚图

RAM的主要功能是存储程序、变量等。如果计算机关机,这些信息不再存在。本电路中,A12-A19作为片选信号,均为低电平。故存储范围为0H-0FFFH。

3.4 可编程芯片说明及其地址范围确定

3.4.1 8254定时/计数器及其地址范围

8254与8253功能类似,但8254工作频率更高,可达10MHZ,且8254还可进行回读,但这一功能在本设计中用不上,因而对8254的说明也可看作是对8253的介绍,事实上两者管脚图接近完全相同。

8254芯片包含3个功能完全相同的计数通道,称为通道0,通道1,通道2,有6种工作方式。本设计要求实现的最大45s,故必须采用两个计数器级联方式,工作在方式2分频功能。另一个计数器1工作在方式5,OUT1门产生中断,实现闯红灯报警3s的功能。三个计数器具体连接图如A3图纸硬件连接图所示,CLK0,CLK1都通入1.2MHZ的脉冲。OUT0与CLK2端相连,均工作在方式2分频,由OUT2门产生低电平作为状态信号实现延时功能。计数器1工作在方式5,GATE1门上升沿触发。如图3所示,当车行道红灯时,则开中断。当有车闯红灯时,就会阻挡安装在人行道上的红外线发射和接受装置的光线,接收装置可将光信号变为电信号的一个脉冲,通入GATE1门,上升沿触发,在OUT1门输出低电平,将此电平通过非门后连在8259A的IR1端,则可以产生中断。经过中断处理便可以控制相关芯片发出3s的报警信号。当然,在车行道绿灯时,应关中断。

9

图5 车闯红灯报警信号图

8254的端口地址可由硬件连接图确定,由图可知,8254片选信号由Y2引出,并与A0组成逻辑电路,输出口送入8254的 端。其地址可由上表可看出,为40-46H中偶地址。

3.4.2 8255A并行I/O接口及其地址范围

8255A是一个标准的40管脚芯片,它有3个数据端口,分别为PA口,PB口,PC口。每个端口有8位。8255A有3种工作方式。本设计选用最简单的方式0——基本输入/输出方式。

10

本设计用到了PA,PB口,它们分别作为发光二极管的并行输出接口。由于发光二极管,由于二极管为共阳极,故当PA,PB输出为0(低电平)时,相应二极管才会亮。另外,PC1口作为状态查询口,于8254 OUT2门相连,当PC1输入为0时,表示定时时间到,可交换数据。PC6口作为输出口,作为报警信号的端口。这些在软件编程时要格外注意,将决定各端口控制字的选择和确定。8255A端口地址可硬件连接图确定,由图可知,8255A片选信号由Y3引出,并与A0组成逻辑组合电路,作为8255A 信号。其地址可由右表看出,为60H-6中偶地址。

3.4.3 8259A中断控制及其地址范围

11 8259A可编程芯片中断控制器(PIC)称为优先权控制器,它可为CPU处理8级向量中断。本设计中,中断控制器用于扩展电路的报警功能。由硬件图可知,OUT1门低电平经过非门送入IR1端,故其为高电平有效的电平触发方式。

8259A的端口地址可由硬件图确定。由图可知,8259A片选信号由Y4引出,并与A0,A2组成逻辑电路,作为8259A 信号。其地址可由右表看出为80H-82H中偶地址。

3.5 其它选用芯片说明

12 3.5.1 地址锁存器74LS373

在8086系统中,地址线和数据线时复用的,故有必要锁存地址。74LS373管脚及功能图如图所示。其数据送入是由时钟的约定电平来进行的。 E为低电平时,锁存器才能工作。

3.5.2 数据缓冲器74LS245

74LS245是带三态输出的8位双向数据缓冲器,专用于需要双向传输的 数据总线接口。它其实也是一个三态门, 为输出使能端, G为低电平时,缓冲器才能工作,M为传输方向控制端。事实上,在8086最小模式时,由于锁存器的作用,数据缓冲器并不是必要的。

3.5.3译码器

3.5.3.1比较译码器74LS688

在存储器扩展时,我选用74LS688作为译码器,其一是为了在全译

13 码时减少组合逻辑电路,二是为了与本组其他成员相区别。74LS688作译码器时, 必须为低电平,且当且仅当对应的8个输入端P与8个输入端Q相等时, 才会输出低电平。利用这一特性将 低电平作为存储器的片选信号,可实现其译码片选功能。

由硬件连接图可知,在设计中,我将8个输入端Q全部接地,即低电平,保证了存储器高8位全部为0。实现了存储器从最低地址0H-0FFFH,4KB的存储容量。 3.5.3.2 74LS138译码器

74LS138译码器是译码电路中最常用的,在本设计中我也选用74LS138译码器产生8255A,8254,8259A三个芯片的片选信号,如果选用比较译码器74LS688则需要三片,既增加了芯片数量,也增加了电路消耗,同时占用了过多的空间,使线路连接更加复杂,更不直观。由于74LS138的功能及工作模式熟知,这里不再赘述。

3.5.4时钟发生器8284A

8284A是用于8086(或8088)系统的时钟发生器/驱动芯片,它为8086(或8088)以及其他芯片提供所需的信号。

8284A由三部分电路组成:时钟信号发生器,复位生成电路和就绪控制电路。下图是8284A的管脚图。

3.5.5 D触发器

D触发器的工作原理是在CP端脉冲上升沿触发翻转技术,在本电路中,主要用于分频。其将CP端脉冲频率减半,那么为什么要减半频

15 率呢?

原因是8253的最高工作频率只有2MHZ,因此必须将2.4MHZ脉冲频率减半8253才能工作。因此,在我选用的8254定时/计数器电路中D触发器并不是必要的了,甚至可以完全省去不用,因为8253最高工作频率可达到10MHZ,但为了避免频率过大导致45最长延时时,写入的数据过大,我还是加上了D触发器,无非是为了简化后面的软件编程。 3.5.6 7407驱动器

7407TTL集电极开路六正相高压驱动器,其管脚图如下。

3.5.7 功率放大器PWN-2401-EW

该放大器是上海迈高网络技术有限公司生产的,主要工作2.4GHZ ISM频段的WLAN设置的覆盖范围。

16 4 软件总体设计说明 4.1 系统软件部分说明 4.1.1 宏调用与子程序调用

设计延时程序可采用两种方法,一种是子程序调用形式,另一种是宏调用形式。

宏调用形式是在汇编期间展开的,调用一次展开一次,因此它占用的存储空间与调用的次数有关,调用次数越多,占用存储空间越大。宏指令的使用简化源程序,但并不节省内存单元。

子程序是在程序运行期间由主程序调用,在目标代码中只占用它自身内存空间,因而汇编后目标代码少,节省内存空间。但子程序调用每调用一次就要保护断点,保护现场;返回后又恢复现场,恢复断点,增加了额外时间,因此执行时间长,速度慢。宏指令则可免去这些开销,更重要的是,宏调用时用实元取代哑元,调整灵活,程序大大缩减,可读性和可移植性大大提高。

综上所述,我采用宏调用形式,宏程序专门编制待定延时程序,主程序则顺序换灯、循环,而每个过程灯亮时间由宏程序保证。在整个程序的运行期间若发生中断(有车闯红灯),则由中断程序完成相应功能。当然,主程序中也必要包含中断矢量表的建立程序。因而,我所编制的程序由三部分组成:主程序、宏调用程序和中断服务子程序。下面将一一介绍,并且画出其流程图。 4.1.2 各时间参数的计算

17 本设计中涉及的时间参数有:车行道绿灯时间45s,车行道红灯时间20s,车行道黄灯亮、灭的时间各一秒,报警器报警持续时间3s。 由于8254 CLK端时钟频率为1.2MHZ,计数器0和计数器2级联按6000×200方式分频,即计数器0写入6000时,在计数器2 CLK2中会有200HZ脉冲。对于1s,需对计数器2写入时间参数TIME1=200;对于3s,TIME2=600;对于20s,TIME3=4000;对于45s,TIME4=9000,都不超过10000,故均可按BCD码写入。

4.2 主程序说明及其流程图

主程序主要实现两项功能:一是填写中断入口地址表,为中断服务提供必要准备;二是实现换灯,循环。其流程图见下图。

18 4.3 宏调用及其流程图

宏程序的功能是实现准确的定时和延时,为主程序中红、黄、绿灯的亮、灭时间,中断服务程序的报警信号持续时间服务。当然,在宏程序中应当特别注意一些寄存器,变量,地址等保护工作,这就需要堆栈。其流程图见下图。

4.4 中断服务程序说明及其流程图

本设计中我编制的中断服务程序显然是为扩展功能——有车闯红灯报警3s服务的。中断服务程序主要是对8255A C口进行操作的,使C口输出高电平,经过放大器后驱动报警装置报警。当然,在编制过程中,也需要注意一些寄存器,变量,地址的保护工作,其流程框图

19 见下图。

所有三个程序的具体代码及设计编制,见附录。 5 总结与体会 5.1 课程设计总结

本次课程设计,要求自制交通信号灯自动控制系统,并能编制该系统工作的汇编源程序。我的设计采用可编制芯片8254硬件定时,用查询方式来控制交通灯的亮与灭,指令执行目的明确,交通灯亮、灭延时时间精确,并且还能实现有车闯红灯的报警功能,因而该系统使用可靠。电路连接也比较简便,芯片花费不多,工作性能良好,能完整地实现城市交通信号灯所需的功能。

我所编制的汇编程序采用宏调用方式,用一个宏程序可实现多种定时功能,有效地避免子程序调用方式模块过多,程序代码繁琐的缺点。

20 并且宏调用方式可以非常简便地调整定时时间,仅仅改变时间参数变量值就可方便地改变灯亮、灭时间,灵活性好这些都是子程序调用无法企及的。

总而言之,我觉得我的设计相角于本组其他同学而言,无论是芯片选择,硬件连接,各种芯片工作模式,源程序编制等等都是比较独特而又不失简便的,我在设计过程尽量避免与本组其他同学的设计雷同,而且尽量将多种方案进行全方位比较与取舍,比如软件定时与硬件定时,查询方式与中断方式,74LS138与74LS688译码器,宏调用与子程序调用,这些我都已在前面说明书中做过很多对比与论证。总之,我对自己的设计比较满意。 5.2 感想与体会

关于这次课程设计的体会,我是深有感触的 。

首先,我想说,这次课程设计的的确确让我增长了不少见识,使我对《微机接口》这门课程认识更深。比如,在课程设计前,可能都知道CPU与存储器相连能实现存储器扩展,CPU与8255A相连能实现CPU对外设的并行输出和控制,8253能定时计数,8259A能管理中断,但真正的这些芯片之间各端口具体连接,包括每根地址线,数据线的连接,片选信号的产生,8255A,8253,8259A的工作原理和工作模式等等,都是非常模糊的。只有经过这次课程设计的鞭策和逼迫,我们才不得不通过各方面途径去查取相关资料,去自学相关知识,去一个个逐步消解我们学习上的盲点。试想,如果没有这次课程设计,会有多少同学会自觉的那样努力的,刻苦地那样做呢?人都是懒惰的

21 动物,现实生活中,大多数人不都是言不由衷,违背己意的去做自己不喜欢做,讨厌做却又不得不去做的事情吗?

其次,我想说这次设计过程不开心,不愉快的一些事情。《红楼梦》里关于品尝有云:一杯为品,二杯则是解渴的蠢物,三杯便是饮牛饮驴的。同样,我想说,课程设计,两三个人在一起则是讨论交流;一坨人在一起则是相互推赖,抄袭,敷衍了事。我不明白为什么一个班上只有5个课题设计,一个设计要吸纳七,八个人。就拿我所在组来说,真正为之筹谋计划的少,贪成享乐者甚多。经常是两三个人交流沟通,却要想出五六个不同设计方案为本组其他成员共享。我想说,毕竟大家同学一场,同学之间的企求不好拒绝,所以老师上次“冤枉”我与某人流程图类似让我特委曲难受。

6 参考文献

[1] 张玉清,王春玲.IBM PC 微型计算机原理与接口技术.人民邮电出版社,1997 [2] 彭虎,周佩玲,傅忠谦.微机原理与接口技术(第二版).电子工业出版社,2008 [3] 王永山.IBM PC汇编语言程序设计和接口技术.西安电子科技大学出版社,1989

22 附录

1 参考程序

TITLE YUWENNIAN .ASM ;程序名

DELAY MACRAO TIME ;延迟宏定义

LOCAL L ;局部说明

PUSH AL PUSH BL

MOV BL MOV AL BCD码写入 OUT 46H MOV AL OUT 40H MOV AL OUT 40H MOV AL 码写入

OUT 46H MOV AL OUT 44H MOU AL 2

, TIME , 001101001B , AL

, 00 , AL , 60 , AL

, 10110101B , AL , 00 , AL

, BL

;计数器0,方式2,;计数器0写入6000 ;计数器2,方式2,BCD ;时间参数写入计数器23

;送延迟参数 OUT 44H , AL MOV AL , 01011011B ;计数器1,方式5,BCD码写入

OUT 46H , AL MOV AL , 5 ;计数器1写入5 ,5个脉冲后发生中断

OUT 42H , AL L: IN 42H , AL TEST AL , 00000010B JNZ L POP BL POP AL ENDM DATA SEGMENT TIME1 EQU 2 TIME2 EQU 6 TIME3 EQU 40 TIME4 EQU 90 DATA ENDS

STACK SEGMENT PARA STACK DB 100 DUP(?)

;测试PC1

;为1时再测试,直至为0 ;宏定义结束

;黄灯闪烁时间

;报警持续时间

;车道红灯时间

;车道绿灯时间 \'STACK\' 24

STACK ENDS CODE SEGMENT START: MOV AX , DATA

MOV DS , AX MOV AX , STACK MOV SS , AX CLI

;关中断

CLD MOV AX , O ;建立中断入口地址表

MOV ES , AX MOV DI , 4*51H MOV AX , OFFSET INTPROC STOSW MOV AX , SEG INTPROC STOSW MOV AL , 00011011B ;设置8259A,写ICW1,高电平触发,无级联

OUT 80H , AL

MOV AL , 50H ;写ICW2,中断矢量基值为50H OUT 82H , AL MOV AL , 00000011B ;写ICW4,完全嵌套,

25 非缓冲,自动EOI OUT 82H , AL MOV AL , 11111101B ;写OCW1,仅允IR1中断

OUT 82H , AL MOV AL , 10000001B PC上半口输出,PC下半口输入

OUT 66H , AL STI MOV AL , 0FFH 置0 OUT 60H , AL OUT 62H , AL MOV AL , OFH OUT 64H , AL MYC: CLI

MOV AL , 00001110B 报警

OUT 60H , AL 灯亮

MOV 62H , AL DELAY TIME4

;设置8255A,PA,PB,;灯全灭,PC1置1,PC6;关中断,防止绿灯时;车道绿灯亮,人道红;延迟宏调用,时间45s

26

YWN: MOV CX , 3 ;设置闪烁次数

MOV AL , 00010110B

;车道黄灯亮

OUT 60H , AL OUT 62H , AL DELAY TIME1

;延迟宏调用,时间1s MOV AL , 000111001B OUT 60H , AL OUT 62H , AL DELAY TIME1 LOOP YWN STI 则中断

MOV AL , 00011001B 亮

OUT 60H , AL OUT 62H , AL DELAY TIME3

MOV AX , 06H MOV DL , OFFH INT 21H JMP MYC LOVE: MOV AH , 4CH

;车道黄灯灭 ;延迟宏调用,时间1s ;开中断,有车闯红灯时;车道红灯亮,人道绿灯;延迟宏调用,时间20s ;判断是否有键按下 27

INT 21H ;返回DOS CODE ENDS ENDS START INTPROC PROC FAR ;中断服务子程序

PUSH AX ;保护现场

PUSH BX PUSHF MOV AL , 00001101B OUT 66H , AL DELAY TIME2 MOV AL , 00001100B OUT 66H , AL POPF

POP BX POP AX IRET INTPROC ENDP

;PC6置1,报警

;延迟宏调用,时间3s ;PC6置0,报警解除 ;中断返回 28

交通信号灯英文翻译

交通信号灯论文

交通信号灯控制系统

交通信号灯控制系统

交通信号灯控制系统

1.读懂交通信号灯

交通信号灯的发展

交通信号灯PLC自动控制

交通信号灯PLC课程设计.

交通信号灯电路的设计

交通信号灯自动控制系统
《交通信号灯自动控制系统.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档