交通灯课程设计交通控制系统设计.doc

上传人:文库蛋蛋多 文档编号:3934334 上传时间:2023-03-28 格式:DOC 页数:27 大小:369.50KB
返回 下载 相关 举报
交通灯课程设计交通控制系统设计.doc_第1页
第1页 / 共27页
交通灯课程设计交通控制系统设计.doc_第2页
第2页 / 共27页
交通灯课程设计交通控制系统设计.doc_第3页
第3页 / 共27页
交通灯课程设计交通控制系统设计.doc_第4页
第4页 / 共27页
交通灯课程设计交通控制系统设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《交通灯课程设计交通控制系统设计.doc》由会员分享,可在线阅读,更多相关《交通灯课程设计交通控制系统设计.doc(27页珍藏版)》请在三一办公上搜索。

1、 计算机原理及接口技术 课程设计报告 题 目 交通控制系统设计 学院(部) 电子与控制工程学院 专 业 建筑设施智能技术 班 级 学生姓名 学 号 2011年12 月 18日至2011年 12 月 29日 前 言随着社会经济的发展,城市问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据检测、交通信号灯控制与交通疏通的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。随着城市机动车量的不断增加,组多大城市如北京、上海、南京等出现了交通超负荷运行的情况,因此,自80年代后期,这些城市纷纷修建城市高速通道

2、,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。然而,随着交通量的快速增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。而城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。所以,如何采用合适的控制方法,最大限度利用好耗费巨资修建的城市高速通道,缓解主干道与匝道、城市同周边地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主要问题。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通灯的控制方式很多,本系统采用Intel8

3、086为中心器件来设计交通灯控制器,实现本系统的各种功能。同时,本系统实用性强,操作简单。关键字:交通灯目 录前 言 1关键字1设计任务3第一章 系统概述4第二章 单元方案选择与论证5 硬件设计5 软件设计12第三章 交通灯控制系统总电路图15第四章 源程序 16心得与体会26参考文献26指导教师评语27一、设计任务:(一)设计要求:(1)设A道为东西方向,B道为南北方向。A道和B道上均有车辆要求通过时,A、B道轮流放行。A道放行X分钟),B道放行Y分钟 。(2)一道有车而另一道无车时,交通灯控制系统应能立即让有车道放行。(3)交通灯的变化状态如表1所示。A车道与B车道之间的切换时间为2秒(即

4、:黄灯闪的时间)。表1 交通灯状态表状 态紧急车通过的状态0:A道红灯亮,B道红灯亮状态1(A道放行):A道绿灯亮,B道红灯亮状态2(A道向B道切换):A道黄灯闪,B道红灯亮状态3(B道放行):B道绿灯亮,A道红灯亮状态4(B道向A切换):B道黄灯闪,A道红灯亮(4)当有急救车和消防车时,A、B道红灯亮,以禁止普通车辆通过并让其穿红灯而过。只有当其通过后,交通灯才恢复到正常的状态。(用中断技术实现)(5)显示灯控时间,当时间到时或剩余若干秒时,声报警提示(二)扩充功能(1)转弯道的路灯控制(2)分时区控制功能:如6:0022:00正常路灯控制,22:00次日6:00, 黄灯闪烁控制模式。第一章

5、 系统概述1.1设计步骤与思路1.1.1 总框图设计构思在通过对题目以及要求的分析和思考,明确了设计任务的功能后,我们将设计过程分为五大模块,并分析各个模块之间的工作关系,最后将各模块组合在一起画出总体功能模块图,并完成实现整体的电路图,最终使用Proteus模拟器模拟其实际功能,最终完成设计书。1.1.2 各单元的构思 对于不通的实验要求对各模块进行分析,这个题目是一个硬件与软件相结合的系统,通过研究,我们根据总电路的功能的划分,结合我们所学习过的知识对该系统进行具体的构思设计各单元模块,在实现各模块构思设计时,从要实现的功能及如何实现等方面着手,从熟悉的芯片与原件入手,选择相应的元器件及芯

6、片,再进行细节设计,最后使用Proteus对其进行仿真与测试。1.1.3 总电路图的构思(1)在以上步骤中设计好单元模块后,再从各个单元功能模块间的控制关系着手,选择最优方案,分别对各单元功能模块进行检验论证,在保证各个模块间无冲突,均能正常运行。(2)在仿真无误后,对整体电路进行误差分析,确定符合要求后,对模块间进行连接时电路图完整。而本设计的应重点分析部分。 (3)根据整体的电路的分布进行分划,设计好各个元件之间的连接以及位置,最后完成总的电路图。第二章 单元电路设计与分析一、硬件设计1.译码电路设计通过分析8259、8253、8255各端口地址,设计合理的地址译码电路。8259的地址为0

7、0H、01H、8253的地址为30H、31H、33H,8255的端口地址为70H、71H、72H、73H。采用独立编址的部分译码电路,具体见下图所示:2.计时中断模式2.1 8253级联方式本设计中采用计数器0的输出做计数器1的输入做级联,计数器0的时钟频率为1.19MHZ,其中计数器0和1都采用方式2工作2.2 8259与8253连接3.中断模块4.并行通信模块5.主电路模块3.芯片介绍3.1 计时器/定时器8253(1)内部结构8253是Intel公司生产的三通道16位的可编程定时/计时器,24引脚双列直插封装。8253的内部结构由数据总线缓冲器,读、写控制逻辑,3个独立的计数器三部分组成

8、。 1)数据总线缓冲器这是一个三态8位双向缓冲器,D7D0同系统数据总线相连。CPU通过执行输入/输出指令来实现对缓冲器发送或接受数据。8253的控制字也是通过该缓冲器传送的。2)读、写控制逻辑读、写控制逻辑用来管理数据信息和控制字的传送,它接收来自CPU地址总线和控制总线的有关信号,向3个独立的计数器的控制部件发送命令。对8253进行控制的信号有:A1,A0:片内寄存器选择信号;CS:片选信号,低电平有效;RD:读信号,低电平有效;WR:写信号,低电平有效。控制信号CS,RD,WR以及A1,A0的组合可以实现对三个计数器和控制寄存器的读写操作。3)计数器三个计数器中每一个都有三条信号线:CL

9、K:计数输入,用于输入定时基准脉冲或计数脉冲;OUT:输出信号,以相应的电平指示计数的完成或输出脉冲波形;GATE:选通输入,用于启动或禁止计数器的操作,以使计数器和计数器输入信号同步。每个计数器中有四个寄存器:a.6位的控制寄存器,初始化时,将控制字写入该寄存器;b.16位的计数初值寄存器,初始化时写入该计数器的初始值,其最大初始值为0000H;c.16位的减计数器,计数初值由计数初值寄存器送入减计数寄存器,当计数输入端输入一个计数脉冲时,减计数寄存器内容减一;d.16位的输出锁存器用来锁存计数执行部件的内容,从而使CPU可以对此进行读操作.(2) 工作方式8253有六种工作方式:(1)方式

10、0:计数结束中断(2)方式1:复触发的单稳态触发器(3)方式2:频率发生器(4)方式3:方波发生器(5)方式4:软件触发选通信号(6)方式5:硬件触发选通信号计数启动方式:a.软件启动:GATE端为高电平,置入计数初值后的第2个CLK脉冲的下降沿。b.硬件启动:GATE端有一个上升沿,对应CLK脉冲的下降沿计数过程中,可用门控脉冲GATE重新启动计数。当GATE变低时,现行计数暂停,变高后,下一个CLK输入脉冲使减一计数器恢复计数初值重新开始计数,所以可用一个外部控制逻辑来控制GATE,从而达到同步计数的作用(3) 控制字8253只有一个控制字,其格式和含义如图3-2-1所示图3-2-1 82

11、53控制字8253的控制寄存器和3个计数器分别具有独立的编程地址,并且控制字本身的内容又确定了所控制的寄存器序号,所以对8253的编程没有太多严格的顺序规定,使用非常灵活。但是,编程有3条原则必须严格遵守:1)在选择任何一种工作方式下,都必须先向8253写入控制字,控制字还起复位作用,它使OUT端变为工作方式中规定的状态和对计数初值寄存器清零。2)对计数器设置初值前必须先写控制字,在设置计数初值时,要符合控制字中的格式规定,控制字中一旦规定,具体初始值设定时就要与之一致。3)读取当前计数值时,必须设置锁存操作控制字。由于8253对外的数据线只有8根,对16位计数器进行写入或读取当前计数值时,需

12、要分两次进行;由于两次读/写之间存在时间间隔,这期间可能恰好有计数脉冲,所以读出的值带有随机性,为了使CPU能获得计数器某一时刻准确的值,8253设置了锁存操作。当控制字的D5,D4位为00时,表示锁存。当锁存命令到来时,减一计数器记到某一个值,因为锁存器是跟随减一计数器工作的,所以,锁存器中为同一个值,此时,这一数值被锁住,当CPU将此锁定值置后,锁存器自动失锁,于是又跟随计数器变化。3.2 中段控制器8259A8259A是一种可由软件进行控制的中断控制器,可以使用于各种不同环境,具有很强的中断管理功能。8259A主要功能有:a.每片8259A可管理8级优先权中断源,在基于不增加其他电路的情

13、况下,通过8259A的级联,最多可管理64级优先级的中断源;b对任何一个级别的中断源都可以单独进行屏蔽,使该级中断请求暂时被禁止,直到取消屏蔽时为止;c.向CPU提供可编程的标识码,对于8086-Pentium的CPU来说就是中断类型码。d.具有六种中断优先权管理方式,即全嵌套方式、特殊全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式、中断查询方式,这些管理方式均可通过程序动态的进行变化;e.具有三种中断结束方式,即自动中断结束方式,一般的中断结束方式和特殊的中断结束方式;f.8259A用NMOS工艺制作,只需要一组+5V电源。3.3可编程并行接口8255 (1)内部结构8255为可编程的

14、并行接口芯片,具有40个引脚,双列直插DIP封装,+5V供电,全部信号与TTL电平兼容。8255的特点有:a.具有三个并行数据传输端口:A端口、B端口、C端口;b.每个端口拥有不同的工作方式:A口具有3种工作方式;B口具有2种工作方式;C口只有1种工作方式;c.每个端口工作在输出方式时,具有锁存功能;d.可以通过编程设置成4位端口,8位端口,12位端口,16位端口,20位端口或24位端口;8255由四部分组成,如下图3-2-2所示图3-2-2 8255A 结构图(2)工作方式8255有三种工作方式(方式0,方式1,方式2)可供选择使用,而且三个端口可以同时按照各自选择的工作方式工作,当然825

15、5各端口在正常工作开始前,必须进行初始化设计,确定每个端口按哪种工作方式工作。方式0:基本输入或输出方式,为单向8位端口。多用于同步数据传输场合,无需握手线进行传输,也可用于查询方式,此时往往用C口的某些信号线作为自定义状态线和控制线。8255的三个端口都可工作于方式0。方式1:选通输入或输出方式,为单向的8位端口。只有A口和B口可以工作在方式1状态,而此时C口的某些信号线一定作为A口或B口的联络线,其他非联络线仍可以工作在方式0 输入或输出状态。方式2:双向传输方式,既可以输入又可输出。只有A口可以采用方式2 工作,此时C口中的5根信号线作为A口的联络线,而其余的3根信号线可以做B口方式1时

16、的联络线,或者与B口一起工作在方式0状态。(3)控制字8255在正常工作之前必须进行初始化设置,对所用到的每个端口都要设置具体的工作方式。8255具有2个控制字:方式控制字和C口位控控制字。2个控制字均需要送入控制寄存器口地址中,其区别在于:方式控制字中的D7=1,C口位控控制字中的D7=0。1)方式控制字其中D7为方式控制字标志位,用来区别C口位控控制字。D6D5设置A口的工作方式,D4 设置A口处于方式0或者方式1时的传输方向,当处于方式2时此位无效,D3设置C口的高4位传输方向,由于C口只有一种工作方式,因此不需要设置方式,D2设置B口的工作方式,D1设置B口的传输方向,D0设置C口的低

17、4位传输方向。当C 口的信号线作为A口或 B口的联络线时,设置无效。2)C口位控控制字C口位控控制字用于将C口中的某一位清0或置1。C口位控控制字格式定义如下:其中D7为方式控制字标志位,用来区别方式控制字,D6D5D4为无效位,D3D2D1用来选择PC7PC0中之一,D0为0表示清0,为1表示置1。二、软件设计主程序流程图如下所示:初始化8255,8253和8259芯片;MAIN主程序开始判断是否有紧急情况是否在6:00-22:00东西南北黄灯闪烁判断东西有车南北无车判断东西无车南北有车东西绿南北红东西红南北绿倒计时剩是否不足5秒停止报警报警分是否为奇数东西绿南北红东西红南北绿是否剩2秒是否

18、剩2秒黄灯闪开始否否否东西南北红是否否否否否否否否否是是是是是是否否否否否否否否否0定时中断流程图如下:分加1秒归0进入中断否否否分是否为1440秒标志位是否为60天标志位置位退出中断显示标志位翻转显示标志位是否为0调用显示函数否否否是是否否否是1号外部中断如图:进入中断紧急标志位翻转退出中断第三章 交通灯控制系统电路图第四章 源程序;*数据段初始化*DATA SEGMENT A_ICW1_8259 EQU 00HA_ICW2_8259 EQU 01HA_ICW4_8259 EQU 01HA_OCW2_8259 EQU 00HD_ICW1_8259 EQU 13H ;ICW1 上升沿,单片,写

19、ICW4D_ICW2_8259 EQU 08H ;IR0中断向量码为08HD_ICW4_8259 EQU 01H ;非自动EOI方式A_CNT0_8253 EQU 30HA_CNT1_8253 EQU 31H A_CONL_8253 EQU 33H D_CNT0_8253 EQU 2000 ;CNT0为2000,主频2MHZ时定时为1msD_CNT1_8253 EQU 500 ;CNT1为500,主频1KHZ时定时为0.5sD_CONL0_8253 EQU 34H ;CNT0为16位数据,工作方式2,二进制D_CONL1_8253 EQU 74H ;CNT1为16位数据,工作方式2,二进制A_

20、PA_8255 EQU 70H A_PB_8255 EQU 71HA_PC_8255 EQU 72HA_CONL_8255 EQU 73H D_CONL_8255 EQU 88H ;A口方式0输出,B口方式0输出,C口低4位输出MARK1 DB 00H ;0.5s计数MARK2 DW 0000H ;1min计数MK DB 00H ;特殊情况标志位MK1 DB 00HMK2 DB 00HDATA ENDS ;*堆栈段初始化*STACK SEGMENT DW 64 DUP(?)STACK ENDS;*代码段*CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV

21、 AX,DATA ;段寄存器初始化 MOV DS,AX PUSH DS;当前用户DS段入栈保存 MOV AX,0000H MOV DS,AX;修改DS=0000H,指向中断矢量表所在段 MOV AX,OFFSET IRQ0 ;取出中断处理子程序的入口偏移地址(以0为基准) ADD AX,2000H ;修正,实际地址=装入地址的偏移量+相对于0起始的偏移量 MOV SI,0020H;IR0中断矢量号为08H,处于矢量表的20H23H MOV SI,AX;将偏移地址装入矢量表 MOV AX,0000H MOV SI,0022H MOV SI,AX;将段地址(0000H)装入矢量表 MOV AX,O

22、FFSET IRQ1 ;取出中断处理子程序的入口偏移地址(以0为基准) ADD AX,2000H ;修正,实际地址=装入地址的偏移量+相对于0起始的偏移量 MOV SI,0024H;IR1中断矢量号为09H,处于矢量表的24H27H MOV SI,AX;将偏移地址装入矢量表 MOV AX,0000H MOV SI,0026H MOV SI,AX;将段地址(0000H)装入矢量表 POP DS;恢复用户数据段DS;-初始化8259- MOV AL,D_ICW1_8259 ;写入ICW1,上升沿触发,写ICW4 MOV DX,A_ICW1_8259 OUT DX,AL MOV AL,D_ICW2_

23、8259 ;写入ICW2,设置IR0的中断向量码为08H,IR7中断向量码为0FH MOV DX,A_ICW2_8259 OUT DX,AL MOV AL,D_ICW4_8259 ;写入ICW4,非自动EOI MOV DX,A_ICW4_8259 OUT DX,AL ;-初始化8253- MOV DX,A_CONL_8253 MOV AL,D_CONL0_8253 OUT DX,AL MOV AL,D_CONL1_8253 OUT DX,AL MOV DX,A_CNT0_8253 MOV AX,D_CNT0_8253 OUT DX,AL MOV AL,AH OUT DX,AL MOV DX,A

24、_CNT1_8253 MOV AX,D_CNT1_8253 OUT DX,AL MOV AL,AH OUT DX,AL STI ;开中断;-初始化8255- MOV AL,D_CONL_8255 ;写入8255方式控制字,A口方式0输出,C口高4位输入,B口方式0输出,C口低4位输出 MOV DX,A_CONL_8255 OUT DX,AL;*主函数体死循环*;/MAIN: MOV AL,MK ;判断MK是否为1,为1为特殊情况,为0为普通情况 CMP AL,0 JZ NORMAL JMP SPECIALSPECIAL: MOV AL,10001000B ;东西红,南北红 MOV DX,A_P

25、A_8255 OUT DX,AL JMP MAIN NORMAL: MOV AX,MARK2 CMP AX,360 ;判断MARK2是否=6:00 JAE JUDGE ;是则继续判断 JMP T22_0_6 ;否则进入22_0_6执行JUDGE: CMP AX,1320 ;判断MARK2是否=22:00 JBE T6_22 ;是则进入T6_22执行 JMP T22_0_6 ;否则进入T22_0_6执行 ;/-/ T6_22: NOP JUDGE_MT: MOV DX,A_PC_8255 IN AL,DX ;读PC口 AND AL,11110000B ;保留高4位 CMP AL,10H ;东西判

26、断 JZ EAST CMP AL,20H ;南北判断 JZ WEST JMP JUDGE_MK1EAST: MOV AL,00101000B ;东西绿,南北红 MOV DX,A_PA_8255 OUT DX,AL JMP MAINWEST: MOV AL,10000010B ;东西红,南北绿 MOV DX,A_PA_8255 OUT DX,AL JMP MAIN JUDGE_MK1: CALL WARNING MOV AL,MK1 CMP AL,0 JZ GG1 JNZ GG2GG1: NOP G1: MOV AL,MARK1 CMP AL,115 ;58s JBE R_G ;如果小于等于11

27、5则执行R_G JMP G2 R_G: MOV AL,10000010B ;东西红,南北绿 MOV DX,A_PA_8255 OUT DX,AL G2: MOV AL,MARK1 CMP AL,116 JZ R_YH ;如果MARK1等于116则执行R_YH CMP AL,118 JZ R_YH ;如果MARK1等于118则执行R_YH JMP G3 R_YH: MOV AL,10000100B ;东西红,南北黄亮 MOV DX,A_PA_8255 OUT DX,ALG3: MOV AL,MARK1 CMP AL,117 JZ R_YL ;如果MARK1等于117则执行R_YL CMP AL,

28、119 JZ R_YL ;如果MARK1等于119则执行R_YL JMP CX1_CX R_YL: MOV AL,10000000B ;东西红,南北黄灭 MOV DX,A_PA_8255 OUT DX,AL CX1_CX: JMP MAIN ;/GG2: NOP G11: MOV AL,MARK1 CMP AL,115 ;58s JBE G_R ;如果小于等于115则执行G_R JMP G22 G_R: MOV AL,00101000B ;东西绿,南北红 MOV DX,A_PA_8255 OUT DX,AL G22: MOV AL,MARK1 CMP AL,116 JZ YH_R ;如果MAR

29、K1等于116则执行YH_R CMP AL,118 JZ YH_R ;如果MAKR1等于118则执行YH_R JMP G33 YH_R: MOV AL,01001000B ;东西黄亮,南北红 MOV DX,A_PA_8255 OUT DX,AL G33: MOV AL,MARK1 CMP AL,117 JZ YL_R ;如果MARK1等于117则执行YL_R CMP AL,119 JZ YL_R ;如果MARK1等于119则执行YL_R JMP CX2_CX YL_R: MOV AL,00001000B ;东西黄灭,南北红 MOV DX,A_PA_8255 OUT DX,ALCX2_CX: J

30、MP MAIN ;返回程序开始进行判断 ;/-/T22_0_6: NOPG111: MOV AL,MK2 CMP AL,0 JZ YH_YH ;如果MK2等于0即0,5s则执行YH_YH JMP G222YH_YH: MOV AL,01000100B ;东西黄亮,南北黄亮 MOV DX,A_PA_8255 OUT DX,AL G222: MOV AL,MK2 CMP AL,1 JZ YL_YL ;如果MK2等于1即1s则执行YL_YL JMP ONCE YL_YL: MOV AL,00000000B ;东西黄灭,南北黄灭 MOV DX,A_PA_8255 OUT DX,AL ONCE: JMP MAIN ;返回程序开始进行判断;*报警子函数*WARNING PROC PUSH AX PUSH DX MOV AL,MARK1

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号