1、交通灯实时控制系统1需求分析1.1课程设计题目交通灯实时控制系统。伴随着社会的发展以及人们生活水平的提高,汽车的数量在不断的增加,交通的问题日益突出,单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。以下就是运用数字电子设计出的交通灯:用红灯来控制支路的交通通行,用绿灯来控制主干道的交通通行。1.2 设计目的1)巩固和加深课堂所学知识;2)学习掌握一般软硬件的设计方法和查询、运用资料的能力;3)通过在TDN集成开发环境中对交通灯实时控制系统的设计与制作,综合应用8253、8259
2、、8255芯片,深入了解和掌握利用可编程8255A进行控制的原理与方法;4)通过这次课程设计,将课本上的理论知识和实际的应用有机的结合起来,以提高分析和解决问题的实际能力,通过对汇编语言程序代码的设计,编写,修改以提高自己实际编程能力。1.3 设计任务1)任务:设计一个交通灯控制系统要求综合运用8259、8253、8255芯片设计十字路口的交通信号灯控制系统。支线与主干线允许通车15秒,当支线允许通车时(15秒)中,若主干线15秒内已有10辆车到来,则申请中断,允许主干线通车,实现无交叉点通过。2)设计任务要完成实验方案论证,进行十字路口的交通信号灯控制电路设计,画出电路原理图及实验电路图;搭
3、建实验电路,进行软件编程、调试、运行以及使用说明文档的建立等一整套工作任务。交通指示灯如图1-1图 1.11.4 软硬件运行环境及开发工具1.4.1 软硬件运行环境TDN88实验平台,PC机,导线,汇编语言编译软件。1.4.2 开发工具TDN86/88教学实验系统,PC机。2. 概要设计2.1 交通灯实时控制系统设计原理及方法2.1.1设计原理通过并行接口芯片8255和计算机的硬件连接,通过软件计时,来实现十字路口交通灯的模拟控制,用8259芯片,得到CPU的中断响应后,提供中断类型号,从而快速寻找到该中断源的中断服务程序的入口地址,转去执行中断服务序。通过并行接口芯片8255和计算机的硬件连
4、接,通过软件延时计数,来实现十字路口交通灯的模拟控制。即用D5,D4,D1,D0亮表示车辆允许东西方向通行,D7,D6,D3,D2亮表示车辆允许南北方向通行。用8259芯片,得到CPU的中断响应后,提供中断类型号,从而快速寻找到该中断源的中断服务程序的入口地址,转去执行中断服务程序。实验中:0表示灯亮,1表示灯灭通过课程设计要求找出灯亮的规律:1.东西方向绿灯亮,南北方向红灯亮,延续20秒。2.20秒钟的最后5秒,东西方向绿灯以频率1HZ闪烁5次,南北方向红灯亮。3.东西方向红灯亮,南北方向绿灯亮,延20秒。4.20秒钟的最后5秒,南北方向绿灯以频率1HZ闪烁5次,东西方向红灯亮。5.循环以上
5、步骤。通过分析灯亮的规律,总结出如下的功能表:表 2-1 交通灯亮灭功能表灯通车南红D7北红D6东红D5西红D4南绿D3北绿D2东绿D1西绿D0东通车 00 1 0 1 1 0 1南通车 1 0 0 0 0 111西通车000 1 1 1 1 0北通车0 1 0 010 1 1 2.1.2系统原理图系统原理图如图2-1所示 图 2-1 系统原理图2.1.3 电路原理本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。硬件电路由R-S触发器电路、发光二极管模块、8255可编程并行接口模块和紧急中
6、断模块8259组成。2.1.4 设计方法通过分析8255、8259各端口地址,设计合理的地址译码电路。8259的地址为20H、21H, 8255的端口地址为60H、61H、62H、63H。红、绿灯分别接在8255的A口的高四位和低四位端口,PA0PA7分别连接到D0D7来控制8个灯的亮灭,用以模拟交通灯。B口和C口接两个两片数码管显示器进行倒计时。用开关模拟中断信号的产生,则要用到8259芯片。8259的中断请求输入管脚IRQ7与KK1相连。每按动一次KK1,产生一次中断请求信号。当8259接收到中断请求信号之后,便开始执行中断,实现8个灯的闪烁。系统的程序设计最关键的就是延时程序的编写,因为
7、要在延时的同时用两个LED数码管同步显示倒计数,这给程序设计带来了难题。现提出如下解决方案:在进入每个状态时,给寄存器CX置初值表示要倒计时的时间,然后开始把CX循环减1,直到0进入下一个状态。在CX减1循环中每循环一次,调用延时1s的子程序DELLAY1S,这样假如在状态0给CX置初值20,则会延时20s;如果在每次调用的延时1s的子程序DELLAY1S中,再调用显示CX的值的子程序LED1给2个LED数码管显示,就实现了与延时同步的倒计数显示。这样就实现了延时与倒计数的同步。程序主要是由主程序、延时1s子程序DELLAY1S、LED显示CX子程序LED1、中断服务程序IRQ7组成。在主程序
8、中包括对8255初始化、中断程序入口地址的填写、中断IRQ7开放,各种状态的依次处理。3. 详细设计3.1 硬件设计与软件设计3.1.1 8255A芯片8255A芯片是一种通用的可编程并行I/O接口芯片。它包含有3个8位端口,称为A口,B口,C口。其中A口包含8个I/O引脚(PA0PA7),B口包含8个I/O引脚(PB0PB7), C口包含8个I/O引脚(PC0PC7)。该芯片有3种工作方式,称为0方式,1方式,2方式。本实验选取8259A的A口、B口、C口都作为输出端口,工作方式选0方式。所以8259A的方式命令字为10000000B,即80H。端口地址为60H63H。其初始化编程为:MOV
9、 AL,10000000BOUT 63H,AL图 3-1 系统中的8255A芯片3.1.2 8259芯片8259A芯片内部含有中断请求寄存器,用来存放由外部输入的中断请求信号IR7IR0。当某个输入端为高电平时,该寄存器相应位置“1”。本实验中需要从IR7请求中断,因此采用中断屏蔽方式,将IR6IR0都设为高电平,即将寄存器IR6IR0置“1”。所以其方式命令字为01111111B,即7FH。端口地址为20H21H其初始化编程为: MOV AX,0000H MOV DS,AX ;数据段清零MOV AX,OFFSET IRQ7 ;装入中断程序入口地址 MOV SI,003CH MOV SI,AX
10、 MOV AX,CS MOV SI,003EH MOV SI,AX POP DS IN AL,21H ;读中断屏蔽寄存器IMR AND AL,7FH OUT 21H,AL ;开放IRQ7STI ;开中断3.2 硬件电路的设计与实现 图 3-2控制中断实验图 图 3-3 硬件设计实验图3.3软件设计3.3.1红绿灯时间控制本实验中有15秒和5秒的延时,我们先编写一个一秒的延时程序,然后再分别调用这个一秒的延时子程序,MOV CX,25中的cx控制时间,延时一秒子程序如下:DELLAY1S: PUSH AX POP AX PUSH BX LOOP D0 PUSH CX POP CX CALL LE
11、D1 POP BX MOV CX,0FFFFH POP AX D0:PUSH AX RET3.3.2 本实验中的中断的运用 MOV AX,OFFSET IRQ7;取中断程序入口地址(相对地址)本实验中使用的是中断请求输入IRQ7,当你按KK1时,执行中断程序,灯会闪烁,程序如下IRQ7: OUT 60H,AL MOV AL,20H ;结束中断 CALL DELLAY1S OUT 20H,AL NOT AL IRET DEC BX JNZ IR7 POP CX POP BX POP AX 4 软件主要模块流程图4.1程序总设计流程图 图 4-1 程序流程图4.2延时1s子程序DELLAY1S流程
12、图此延时子程序不光实现延时,还调用了LED1子程序显示了CX的内容,实现延时的同时倒计数的显示。具体流程如下: 图 4-2 实验延时1秒流程图子程序如下:LED1:PUSH CX ;数码管显示数字 PUSH AX MOV AX,CX MOV BL,0AH MOV AH,0 DIV BL ;商放在AL,余数放在AH MOV BX,OFFSET TAB1;取段码表首地址 XLAT OUT 61H,AL;输出显示 MOV CX,0600H ADD2:LOOP ADD2 MOV AL,AH MOV BX,OFFSET TAB1 XLAT OUT 62H,AL MOV CX,0600H ADD3:LOO
13、P ADD3 POP AX POP CX RET4.3 IRQ7中断子程序流程图IRQ7中断子程序是实现所有灯闪烁10s就返回的功能。具体流程就如下。 图 4-3 中断服务程序流程图 中断实现代码如下:IRQ7:PUSH AX ;外中断服务子程序,所有灯闪10秒 PUSH BX PUSH CX MOV CX,0 MOV AL,0FFH MOV BX,0AHIR7: OUT 60H,AL CALL DELLAY1S NOT AL DEC BX JNZ IR7 POP CX POP BX POP AX MOV AL,20H ;结束中断 OUT 20H,AL IRET5. 系统调试5.1 系统调试1
14、.使用串行通讯现将实验系统与PC微机相连2.正确搭接好相关实验电路3.接通电源,双击试验系统快捷方式,开启试验系统如下图4.点击菜单栏“文件”按钮,选择建新文件。即可开始输入源程序。输入程序后,点击保存按钮,进行保存。5.点击编译按钮,对源程序进行汇编,生成目标文件(*.obj)。汇编信息显示与屏幕,若出现错误,修改源程序,直至正确。6.汇编无误后,对汇编生成的*.Obj文件进行链接,链接信息显示于屏幕上,生成*。EXE可执行文件。7点击加载按钮,加载*.EXE程序。屏幕显示信息。8.加载成功, RUN,运行程序。 9.开始时候东西方向绿灯亮,南北方向红灯亮20秒,最后5秒时候绿灯会闪烁。南北
15、方向绿灯亮,东西方向红灯亮20秒,最后5秒时候绿灯会闪烁。10.在9过程中,若用户按下KK1,则会出现8个灯一起闪烁10秒,然后回到按之前状态,继续循环步骤9中过程。 5.2 操作说明及运行结果5.2.1 操作说明1. 按实验接线图接线。2. 输入程序并检查无误,经汇编,连接后装入系统。3. 运行程序。观察灯的变化,将KK1按1下,会出现红绿灯交替闪烁10秒5.2.2 运行结果D0,D1亮表示东西方向绿灯亮准行, D4,D5亮表示南北方向红灯亮,持续20秒;当准行时间到最后5秒时,准行方向绿灯闪烁。D2,D3亮表示南北方向绿灯亮准行,D6,D7表示东西方向红灯亮持续时间20秒,当准行时间到最后
16、5秒时,准行方向绿灯闪烁。此过程课程设计要求相符合。6. 课程设计小结通过这次课程设计,我对8255这种芯片有了进一步的了解。知道了它在实际应用中的功能以及它们初始化的方法。这次课程设计从需求分析到设计,是一个完整的体系,这提高了我分析问题的能力。当遇到问题时,回到书本,查找实际问题所需的理论知识,将理论和实际结合起来,以得到问题的解,这提高了我解决实际问题的能力。其实课程设计和真正的实际需求还是有些差别的,比如我最开始就是以实际需求来分析灯的编码的,但是花了很长时间,最后发现8个灯根本实现不了实际生活中的交通灯的变化方式。所以最后借用了同学告诉的编码方式,才得到正确结果。本设计还有一个缺陷就
17、是在本设计中,那个1秒的时间间隔只是一个模拟的数字,并不是准确的1秒。但是该是如何使用8253分频实现真正1秒的时间间隔,这还有待改进。设计者: 陈楠 日 期: 2014 年 6月12 日附录:DATA SEGMENTTAB1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDATA ENDSSTACK SEGMENT STACK DW 64 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX CLI M
18、OV AL,80H ;8255A初始化,A,B,C作为输出口 OUT 63H,AL PUSH DS MOV AX,0000H MOV DS,AX ;数据段清零 MOV AX,OFFSET IRQ7;取中断程序入口地址(相对地址) MOV SI,003CH ;填8259中断7中断矢量 MOV SI,AX ;填偏移量矢量 MOV AX,CS ;段地址CS MOV SI,003EH MOV SI,AX POP DS IN AL,21H ;读IMR AND AL,7FH ;允许IR7中断 OUT 21H,AL STI ;开中断S0:MOV AL,11001100B;状态0,东西方向通车15s,南北方向
19、禁止通行 OUT 60H,AL MOV CX,15 ;延时25sT0:CALL DELLAY1S LOOP T0 S1:MOV AL,11001111B ;状态1,东西方向允许通车5s闪灯,南北方向禁止通行 MOV CX,05H OUT 60H,AL CALL DELLAY1S DEC CX T1:MOV AL,11001100B ;东西方向5s闪灯,每秒亮灭一次 OUT 60H,AL CALL DELLAY1S MOV AL,11001111B OUT 60H,AL CALL DELLAY1S MOV AL,11001100B OUT 60H,AL CALL DELLAY1S DEC CX
20、MOV AL,11001111B OUT 60H,AL CALL DELLAY1S DEC CX JNZ T1 S2:MOV AL,00110011B ;状态2,南北方向通车15s,东西方向禁止通行 OUT 60H,AL MOV CX,15 ;延时15s T2:CALL DELLAY1S LOOP T2 S3:MOV AL,00111111B ;状态3,南北方向允许通车5s闪灯,东西方向禁止通行 MOV CX,05H OUT 60H,AL CALL DELLAY1S DEC CX T3:MOV AL,00110011B ;南北方向5s闪灯,每秒亮灭一次 OUT 60H,AL CALL DELL
21、AY1S MOV AL,00111111B OUT 60H,AL CALL DELLAY1S DEC CX MOV AL,00110011B OUT 60H,AL CALL DELLAY1S MOV AL,00111111B OUT 60H,AL CALL DELLAY1S DEC CX JNZ T3 JMP S0DELLAY1S: ; 延时1s的子程序,实现延时1s并在数码管中显示CX中的内容 PUSH AX PUSH BX PUSH CX CALL LED1 MOV CX,0FFFFH D0:PUSH AX POP AX LOOP D0 POP CX POP BX POP AX RET L
22、ED1:PUSH CX ;数码管显示数字 PUSH AX MOV AX,CX MOV BL,0AH MOV AH,0 DIV BL ;商放在AL,余数放在AH MOV BX,OFFSET TAB1;取段码表首地址 XLAT OUT 61H,AL;输出显示 MOV CX,0600H ADD2:LOOP ADD2 MOV AL,AH MOV BX,OFFSET TAB1 XLAT OUT 62H,AL MOV CX,0600H ADD3:LOOP ADD3 POP AX POP CX RETIRQ7:PUSH AX ;外中断服务子程序,所有灯闪10秒 PUSH BX PUSH CX MOV CX,
23、0 MOV AL,0FFH MOV BX,0AHIR7: OUT 60H,AL CALL DELLAY1S NOT AL DEC BX JNZ IR7 POP CX POP BX POP AX MOV AL,20H ;结束中断 OUT 20H,AL IRETCODE ENDSEND START参考文献1 彭虎,周佩玲 微机原理与接口技术 北京,电子工业出版社 20112 王爽 汇编语言 北京,清华大学出版社 2007 设计过程中质疑(或答辩)记载:1.8255各端口的作用及初始化编程。答:A端口显示指示灯,B端口显示倒计时的高4位,C端口显示倒计时的低4位,IRQ7为中断接口。 8255的初始化:MOV AL,80H UT 63H,AL2.设几高5位为08H,从IRQ7引入中断中的中断类型n为多少,向量地址是多少?答:指导教师评语:评分:签名:年 月 日
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1