交通信号灯自动控制系统说明书课程设计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级向量中断。
本设计中,中断控制器用于扩展电路的报警功能。