最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

交通信号灯自动控制系统说明书

来源:动视网 责编:小OO 时间:2025-09-28 12:44:09
文档

交通信号灯自动控制系统说明书

交通信号灯自动控制系统说明书课程设计2008-12-2816:34:46阅读1674评论4  字号:大中小 订阅1概述 1.1设计目的(1)掌握CPU与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力;(2)通过对交通灯信号自动系统的模拟控制,进一部提高应用8255A并行接口技术,8253定时功能,8259A中断管理控制器的综合应用能力;(3)掌握基本汇编源程序编制方法,学会综合考虑各种设计方案的对比和论证。  1.2设计要求  交通信号灯自动控制系统须满足下列要求和功能:(1)首先车行道亮
推荐度:
导读交通信号灯自动控制系统说明书课程设计2008-12-2816:34:46阅读1674评论4  字号:大中小 订阅1概述 1.1设计目的(1)掌握CPU与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力;(2)通过对交通灯信号自动系统的模拟控制,进一部提高应用8255A并行接口技术,8253定时功能,8259A中断管理控制器的综合应用能力;(3)掌握基本汇编源程序编制方法,学会综合考虑各种设计方案的对比和论证。  1.2设计要求  交通信号灯自动控制系统须满足下列要求和功能:(1)首先车行道亮
交通信号灯自动控制系统说明书

课程设计 2008-12-28 16:34:46 阅读1674 评论4   字号:大中小 订阅 

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) 先进行方案论证,确定最终采取硬件定时还是软件定时,是查询方式还是中断方式;

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

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

    2、设计系统的软件部分

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

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

(3) 画出各个模块的程序流程图;

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

 

 1.4 设计说明

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

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

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

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

 

 

2 方案论证

 2.1 软件定时与硬件定时

本任务要求交通信号灯能实现自行定时、延时、切换等功能,即能实现交通信号灯自动控制。一般计算机控制系统实现定时或延时有两种基本方法:利用软件定时或使用可编程硬件芯片,即硬件定时。

软件定时,即让机器执行一段程序,这个程序没有具体的执行目的,显然利用执行每条指令CPU所花费的时间,可实现延时功能。这种方法容易实现,仅需选用恰当指令并安排循环即可实现,定时时间调整方便,但不能做到精确定时。另外,时间调整是以一条指令执行时间为基准,占用CPU资源,降低CPU利用率。

硬件定时,即使用可编程定时/计数器硬件芯片定时。这种芯片内部有一个可编程定时器,其定时值、定时范围可以很容易地由软件程序改变,定时时间到时可发出某种形式的信号通知外设或CPU。定时器的输出频率和波形等均由程序设定,因而使用灵活,功能强。

综合软、硬件定时的各种优缺点,考虑到交通信号灯精确换灯的要求,以及交通信号等需要方便、灵活地调整换灯时间等特点,我选用硬件定时来完成任务。

 

2.2 查询方式与中断方式

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

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

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

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

 

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

8253和8254都是能实现定时,延时功能的可编程定时计数器,可以轻松地实现所需要的功能。两者的功能与工作方式,工作环境皆类似,区别仅在于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作为地址锁存器;由于外设、内存存取数据速度不匹配,故有必要使用缓冲器来暂时记忆存储数据,我选用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对应图                   

       

 

 3.2 CPU选型 

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

               

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

 

3.3 存储器选型

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

                                         

                                                    图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的报警信号。当然,在车行道绿灯时,应关中断。  

                                                       

                                                          图5  车闯红灯报警信号图

 

                  

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

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

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

 

              

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

 

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

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

               

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

 

 

 

3.5 其它选用芯片说明 

 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作为译码器,其一是为了在全译码时减少组合逻辑电路,二是为了与本组其他成员相区别。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端脉冲频率减半,那么为什么要减半频率呢? 

原因是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设置的覆盖范围。 

  

  

 

 

4  软件总体设计说明

 4.1 系统软件部分说明

  4.1.1 宏调用与子程序调用

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

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

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

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

4.1.2 各时间参数的计算

本设计中涉及的时间参数有:车行道绿灯时间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 主程序说明及其流程图

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

                                            

 

 

4.3 宏调用及其流程图

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

                                          

 

 

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

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

                                         

 

 所有三个程序的具体代码及设计编制,见附录。

 

 

5 总结与体会

 5.1 课程设计总结

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

我所编制的汇编程序采用宏调用方式,用一个宏程序可实现多种定时功能,有效地避免子程序调用方式模块过多,程序代码繁琐的缺点。并且宏调用方式可以非常简便地调整定时时间,仅仅改变时间参数变量值就可方便地改变灯亮、灭时间,灵活性好这些都是子程序调用无法企及的。

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

 

5.2 感想与体会

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

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

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

 

 

6 参考文献

[1] 张玉清,王春玲.IBM PC 微型计算机原理与接口技术.人民邮电出版社,1997

[2] 彭虎,周佩玲,傅忠谦.微机原理与接口技术(第二版).电子工业出版社,2008

[3] 王永山.IBM PC汇编语言程序设计和接口技术.西安电子科技大学出版社,19  

  

 

附录 

1 参考程序 

TITLE    YUWENNIAN .ASM                      ;程序名        

  

  DELAY    MACRAO TIME                             ;延迟宏定义

  LOCAL    L                                                   ;局部说明

           PUSH   AL

           PUSH   BL 

           MOV    BL     ,  TIME                         ;送延迟参数                        

           MOV    AL     ,  001101001B             ;计数器0,方式2,BCD码写入                

           OUT   46H    ,  AL

           MOV    AL     ,  00                             ;计数器0写入6000

           OUT    40H    ,  AL  

           MOV    AL     ,  60

           OUT    40H    ,  AL

           MOV    AL     ,   10110101B                ;计数器2,方式2,BCD码写入     

           OUT    46H    ,   AL

           MOV    AL     ,   00

           OUT    44H    ,   AL

           MOU    AL     ,   BL                              ;时间参数写入计数器2                     

           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               ;测试PC1   

           JNZ    L                                               ;为1时再测试,直至为0

           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  'STACK'  

           DB       100    DUP(?) 

  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,完全嵌套,非缓冲,自动EOI

           OUT    82H    ,   AL

           MOV    AL     ,   11111101B              ;写OCW1,仅允IR1中断

           OUT    82H    ,   AL

           MOV    AL     ,   10000001B              ;设置8255A,PA,PB,PC上半口输出,PC下半口输入

           OUT    66H    ,  AL

           STI

           MOV    AL     ,   0FFH                       ;灯全灭,PC1置1,PC6置0

           OUT    60H    ,   AL

           OUT    62H    ,   AL

           MOV    AL     ,   OFH

           OUT    H    ,   AL

  MYC:     CLI 

           MOV    AL     ,   00001110B              ;关中断,防止绿灯时报警

           OUT    60H    ,   AL                           ;车道绿灯亮,人道红灯亮

           MOV    62H    ,   AL

           DELAY  TIME4                                 ;延迟宏调用,时间45s

  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                                 ;延迟宏调用,时间1s        

           LOOP   YWN

           STI                                                   ;开中断,有车闯红灯时则中断

           MOV     AL    ,   00011001B             ;车道红灯亮,人道绿灯亮

           OUT     60H   ,   AL

           OUT     62H   ,   AL

           DELAY   TIME3                                ;延迟宏调用,时间20s

           MOV     AX    ,   06H                         ;判断是否有键按下

           MOV     DL    ,   OFFH

           INT     21H

           JMP     MYC

  LOVE:    MOV     AH    ,   4CH

           INT     21H                                        ;返回DOS

  CODE     ENDS

           ENDS    START

  INTPROC  PROC    FAR                           ;中断服务子程序

           PUSH    AX                                       ;保护现场

           PUSH    BX

           PUSHF

           MOV     AL    ,   00001101B             ;PC6置1,报警

           OUT     66H   ,   AL

           DELAY   TIME2                                ;延迟宏调用,时间3s

           MOV     AL    ,   00001100B             ;PC6置0,报警解除

           OUT     66H   ,   AL

           POPF    

           POP     BX

           POP     AX

           IRET

  INTPROC  ENDP                                      ;中断返回

 

2 设计过程中产生的一些问题

 1. 为什么可编程芯片比如8255A、8254、8259A都采用偶地址?

答:因为这些芯片都只有8位数据线,在本设计的硬件连接图中,我是将这8位数据线与CPU16位数据线的低8位连接起来的,也就是说,CPU只有通过对偶地址的操作才能实现对器件的读写,故这些芯片采用的都是偶地址。

事实上,这些芯片也可不采用偶地址,因为在我的硬件连接图中,并没有对应的奇地址器件,奇、偶地址的重叠不会影响芯片的正常工作。

 

2. 为什么对存储器和可编程芯片采用两种译码器?

答:首先对存储器片选和对可编程芯片片选是不同的,前者是内存与CPU交换数据的,后者是外设与CPU交换数据,两者应区分开来。8086CPU有专门管脚来现实这一区别, 当接高电平时,表示CPU正在访问存储器; 为低电平时,表示CPU正在访问I/O接口。

其次,对两者的译码方式,我的设计对存储器采用全译码,对可编程芯片采用线译码,因而两者译码所需的地址根数不同,自然要用两种译码器。最后,对存储器译码采用74LS688,可减少逻辑组合电路的使用,在市场上可没有相应的定型芯片,必须自己用相关元件来组合形成。

 

 3  硬件连接图

文档

交通信号灯自动控制系统说明书

交通信号灯自动控制系统说明书课程设计2008-12-2816:34:46阅读1674评论4  字号:大中小 订阅1概述 1.1设计目的(1)掌握CPU与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力;(2)通过对交通灯信号自动系统的模拟控制,进一部提高应用8255A并行接口技术,8253定时功能,8259A中断管理控制器的综合应用能力;(3)掌握基本汇编源程序编制方法,学会综合考虑各种设计方案的对比和论证。  1.2设计要求  交通信号灯自动控制系统须满足下列要求和功能:(1)首先车行道亮
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top