《交通灯控制系统的设计2022.docx》由会员分享,可在线阅读,更多相关《交通灯控制系统的设计2022.docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、交通灯控制系统的设计2022 1、交通灯控制系统的设计 参考要求: 利用8253定时,8259中断及8255输出实现十字路口交通灯模拟控制;实现利用LED数码管显示倒计时时间;设计电路并在实验箱上连接线路同时编程实现其功能。 2.21 8259的工作原理: 一、数据总线缓冲器:8259A与系统数据总线的接口,是8位双向三态缓冲器。CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过缓冲器传送的。 二、读/写控制逻辑:CPU通过它实现对8259A的读/写操作。 三、级连缓冲器:用以实现8259A芯片之间的级连,使得中断源可以由8级扩展至64级。 四、控制逻辑电路:对整个芯片内
2、部各部件的工作进行协调和控制。 五、中断请求寄存器IRR:8位,用以分别保存8个中断请求信号,当响应的中断请求输入引脚有中断请求时,该寄存器的相应位置1。 六、中断屏蔽寄存器IMR:8位,相应位用以对8个中断源的中断请求信号进行屏蔽控制。当其中某位置“0“时,则相应的中断请求可以向CPU提出;否则,相应的中断请求被屏蔽,即不允许向CPU提出中断请求。该寄存器的内容为8259A的操作命令字OCW1,可以由程序设置或改变。 七、中断服务寄存器ISR:8位,当CPU正在处理某个中断源的中断请求时,ISR寄存器中的相应位置1。 八、用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产
3、生多重中断或中断嵌套。 2.22 8255A的工作原理: 一、8255A的内部结构: 1、数据总线缓冲器:这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。输入输出的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。 2、三个端口A,B和C:A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。C端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。 3、A组和B组控制电路:这是两组根据CPU输出的控制字控制8255工作方式的电路,它们
4、对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。方式控制字的高5位决定A组的工作方式,低3位决定B组的工作方式。对C口按位复位命令字可对C口的每一位实现置位或复位。A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。 4、读写控制逻辑:用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。 二、8255A的工作方式: 方式0-基本输入输出方式;方式1-选通输入输出方式; 方式2-双向选通输入输出方式。 2.23 8253的工作原理: 8253是可编程的计数器/定时器,
5、其内部有三个独立的16位计数器/定时器通道,每个计数器通道均可按6种不同的方式工作,并且都可以按二进制或十进制计数。其CLK0CLK2是计数器02的时钟脉冲输入端, GATE0GATE2是门控脉冲输入端, OUT0OUT2是输出端。 3、总体设计和方案论证: 3.1交通信号灯实时控制和管理的总体设计 芯片选择及端口选择 1用实验系统8255A实现对信号灯的控制(所用端口自定);2位数码显示用8255A实现控制。 2. 用实验系统8235的计数器0定时向实验系统主片8259A的IRQ7请求中断,以实现要求的20秒、5秒钟的定时。实验系统8253的计数器0的CLK2接OPCLK,频率为1.1931
6、8MHZ;GATE0已接 +5V; 定时采用软硬件相结合的方式实现。 用实验系统的发光二极管模拟红绿灯。 注:8259A的端口地址为:218H、219H 8255A的端口地址为:端口A-200H、端口B-201H、端口C-202H、控制端口-203H 8253的端口地址为:计数器0-208H、计数器1-209H、计数器0-20AH、控制寄存器0-20BH。 本设计硬件由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。定时模块采用硬件定时和软件定时相结合的方法,用8253定时/计数器定时1s,再用软件计时实现所需的定时。发光二极管模块由8255控制发光二极管来实现。数码管显示模块由实
7、验平台上的LED显示模块实现。紧急中断模块是由单脉冲发生单元和8259中断控制器组成。 程序主要是由定时子程序、发光二极管显示子程序、数码管显示子程序和中断服务程序组成。包括对8253、8255以及8259等可编程器件的编程。 3.2 方案论证: 软件延时,设计简单,使用方便,本次设计采用了,定时器0进行计时,每1s产生一次中断,可以准确的计时并方便8段数码管进行显示。 在本设计中程序每1秒请求一次中断,实现精确定时与数码管显示刷新。 4、硬件设计: 本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现
8、相对简单。完整系统的硬件连接如图所示。硬件电路由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。 图1 图2 时模块是由8253的计数器0来实现定时1s。由8255输出来控制计数器的起停。OUT0接8259的IRQ7,定时完成申请中断,进入中断服务程序。 发光二极管显示模块由8255输出来控制发光二极管的亮灭。8255输出为低电平时,对应的发光二极管就点亮,否 实验平台上提供一组六个LED数码管。本设计用2个数码管来倒计时。 中断模块是由单脉冲发生单元和8259中断控制器,单脉冲发生单元主要用来请求中断,然后做出情况处理。 5、软件设计思路: 设计数器0的计数初值为3000,由于C
9、LK0接脉冲信号,频率为1.288MHZ,所以每1s中断一次。利用TIME对不同的状态时间计数,用来实现计数器0对20秒钟,5秒钟的定时。中断子程序分为数码显示刷新部分和红绿黄灯各种状态切换部分。每进入中断即刷新LED显示。 交通灯按正常状态切换工作,8253开始计数后每1s发出一个中断申请信号,在中断子程序中先刷新数码管,然后判断当前状态,进入相应的处理程序进行处理。主程序的流程图如图所示。 3 主程序流程图 图4、定时中断服务子程序 定时中断子程序是本设计的重点,负责完成数码管输出数据刷新和各个状态的处理切换。中断子程序包括数码管输出数据刷新程序和各状态处理程序。数码管输出数据刷新子程序是
10、实现倒计时20s,用LED OUT表示输出的数据,TIME 用来软件计时1s,就是计数10个100ms。LED输出是要将输出的数据转化为段选码。根据当前的状态跳转到相应的处理程序,在处理程序中完成定时和状态的切换。状态0、1、2、3、4、5的流程是一样的,先点亮对应的交通灯,再判断定时到了就可以切换了。状态0用于实现东西红、南北绿;状态1用来实现东西黄、南北绿;状态2用于实现东西绿、南北黄;状态3用于实现东西绿、南北红;状态4用于实现东西黄、南北红;状态5用于实现东西红、南北黄,间隔点亮和熄灭就可以了。状态0处理程序的流程图如图所示。 图5 状态0处理程序 6、源程序清单: 本次设计中,选用8
11、235的计数器0定时向实验系统主片8259A的IRQ7请求中断。设置8253的计数器0每1s请求一次中断,工作于模式3;8255的A端口控制交通灯;数码管驱动程序采用指导老师提供的程序。 初始化程序: DA TA SEGMENT LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;存放七段代码表 DB 7FH,6FH TIME DB 19 D2 EQU 200H ;8255A端口A EA EQU 200H ;8255端口地址 EE EQU 203H CONTROL EQU 20BH ;8253端口地址 COUNT0 EQU 208H COUNT1 EQU 209H
12、COUNT2 EQU 20AH DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA CODE SEGMENT ASSUME CS:CODE START: MOV AX,0 MOV DS,AX MOV AX,OFFSET IRQ7 ;填中断矢量表 ADD AX,2000H MOV SI,0FH*4 MOV SI,AX MOV AX,0 MOV SI+2,AX CLI MOV BX,0109H ;BH表示要显示数的十位,BL 表示要显示数的个位 MOV CX,0 MOV DX,0000H MOV AL,80H ;初始化8255 OUT EE,AL MOV
13、AL,00 ;对PC0口置0 OUT EE,AL MOV AL,02 ;对PC1口置0 OUT EE,AL MOV DX,218H ;8259初始化 MOV AL,00010010b OUT DX,AL MOV AL,0FH MOV DX,219H OUT DX,AL MOV DX,200H ;交通灯初始状态为全黄MOV AL,0BBH OUT DX,AL MOV AL,00110110b ;初始化 8253 OUT CONTROL,AL NEXT: MOV AX,3000 ;定时1秒 MOV DX,COUNT0 OUT DX,AL MOV AL,AH OUT COUNT0 ,AL JMP N
14、EXT MOV AX,DA TA ;置DS用数据段首址MOV DS,AX 中断服务程序: A1: STI HLT JMP A1 IRQ7: 数码管显示程序 CMP CX,99 JZ DISP INC CX IRET DISP: MOV CX,0 PUSH AX PUSH BX PUSH SI MOV DX,BX MOV BX OFFSET LED ADD BX,2000H MOV AH,00 MOV AL,DL MOV SI,AX MOV AL,00H OUT EE,AL MOV AL,03H ;选通用来显示个位的数码显示管OUT EE,AL MOV AL,BX+SI ;把十进制数所表示的个位
15、数转换成对应的段码 OUT 201H,AL MOV AL,DH MOV SI,AX MOV AL,01H ;选通用来显示十位的数码显示管OUT EE,AL MOV AL,02H OUT EE,AL MOV AH,BX+SI ;把十进制数所表示的十位数转换成对应的段码 OUT 201H,AH POP SI POP BX POP AX CMP BL,00H ;比较个位数是否为0 JNZ L1 CMP BH,00H ;比较十位数是否为0 JZ COMPARE MOV BX,0009H :十位为0,各为变为9 JMP COMPARE L1:DEC BX COMPARE: CMP DL,0 JZ STA
16、 TE0 CMP DL 1 JZ STA TE1 CMP DL,2 JZ STA TE2 CMP DL,3 JZ STA TE3 CMP DL,4 JZ STA TE4 CMP DL 5 JZ STA TE5 STA TE0: MOV AL,7DH ;东西红,南北绿 OUT D2,AL JMP CHANG1 STA TE1: MOV AL,BDH ;东西黄,南北绿 OUT D2,AL JMP CHANGE1 STA TE2: MOV AL,DBH ;东西绿,南北黄 OUT D2,AL JMP CHANGE1 STA TE3: MOV AL,D7H ;东西绿,南北红OUT D2 ,AL JMP
17、CHANGE1 STA TE4: MOV AL,B7H ;东西黄,南北红OUT D2,AL JMP CHANGE1 STA TE5: MOV AL,7BH ;东西红,南北黄OUT D2,AL CHANGE1: CMP TIME,0 JZ A2 DEC TIME JMP EXIT A2: INC DX CMP DL,6 JNZ A3 MOV DL,0 A3: CMP DL,5 JZ M5 CMP DL,4 JZ M4 CMP DL,3 JZ M3 CMP DL,2 JZ M2 CMP DL,1 JZ M1 CMP DL,0 JZ M0 M0: MOV BX,O109H MOV TIME,19 J
18、MP EXIT M1: MOV BX,0004H MOV TIME,4 JMP EXIT M2: MOV BX,0004H MOV TIME,4 JMP EXIT M3: MOV BX,O109H MOV TIME,19 JMP EXIT M4: MOV BX,0004H MOV TIME,4 JMP EXIT M5: MOV BX,0004H MOV TIME,4 JMP EXIT EXIT: MOV AL,20H OUT 218H,AL IRET CODE ENDS END START 7、程序运行结果: 1东西方向的红灯和南北方向的绿灯同时点亮20秒钟; 220秒钟后,东西方向的黄灯闪烁
19、5秒钟。此时南北方向持续绿灯。 3东西方向的黄灯闪烁5秒钟后,转为东西方向的绿灯和南北方向的黄灯点亮5秒钟; 4 5秒钟后,转为南北方向的红灯闪烁20秒钟,此时东西方向仍维持绿灯。 5东西方向的黄灯,南北方向红灯闪烁5秒钟。 6.东西方向为红灯,南北方向为黄灯闪烁5秒钟。 75秒钟以后又转为1,重复执行 1、模拟交通灯系统设计 设计要求: 8253定时1秒向8259A请求中断,在中断处理程序中:(1)对中断处理程序中用到的寄存器要压栈,并且要在中断返回前出栈;(2)时间缓冲区中的值减1秒;(3)时间缓冲区中的值减为0后,使红绿灯切换。 设计所需芯片: (1)中断控制芯片(8259);(2)并行接口芯片(8255);(3)计数控制芯片(8253);(4)2位、4位、6位、8位信号线;(5)数码管;(6)16位CPU(8086/8088)。 了解交通灯管理的基本工作原理 熟悉8259A中断控制器的工作原理和应用编程 熟悉8255A并行接口的各种工作方式和应用 熟悉8253计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定时的方法 掌握多位LED显示问题的解决