汇编语言课程设计-交通灯控制系统.pdf

上传人:yyf 文档编号:5024867 上传时间:2020-01-29 格式:PDF 页数:12 大小:200.02KB
返回 下载 相关 举报
汇编语言课程设计-交通灯控制系统.pdf_第1页
第1页 / 共12页
汇编语言课程设计-交通灯控制系统.pdf_第2页
第2页 / 共12页
汇编语言课程设计-交通灯控制系统.pdf_第3页
第3页 / 共12页
汇编语言课程设计-交通灯控制系统.pdf_第4页
第4页 / 共12页
汇编语言课程设计-交通灯控制系统.pdf_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《汇编语言课程设计-交通灯控制系统.pdf》由会员分享,可在线阅读,更多相关《汇编语言课程设计-交通灯控制系统.pdf(12页珍藏版)》请在三一文库上搜索。

1、中北大学 电子与计算机科学技术学院 汇编语言课程设计汇编语言课程设计汇编语言课程设计 汇编语言课程设计 题目: 交通灯控制系统 班级:04090402 指导教师: 完成日期:2007 年 7 月 13 日 学号姓名负责模块成绩 组长04090402xx8255A 成员04090402xx绿灯倒计时 成员04090402xx8259 中断 成员04090402xx夜间控制 成员04090402xx8253 1 1 1 1 需求分析需求分析需求分析 需求分析 在当今社会里,交通越来越发达,车辆也越来越来多,由此也带来了大量交通问题 。 在本次课程设计中,我们针对现实生活中常看到的红绿灯, 运用汇编

2、语言及接口技术来 模拟十字路口的交通灯,对交通灯进行控制,并实现一定的功能。 我们通过一些接口芯片:定时/计数器 8253,并行接口 8255A,中断控制器 8259A 和 8086 计算机的硬件连接,通过8253 定时及编延时子程序的方法(设备条件有限,不 能依靠纯硬件实现)、利用 8259 的中断功能及 8255A 并口输出数据功能做了一实时操作 系统,来模拟对十字路口交通灯的控制。具体如下: (1)用 8253 计时器来完成时间的设定; (3)用 8259 中断控制器来进行紧急情况处理,如警车执行任务等情况; (4)通过 8255A 并口来控制 LED 发光二极管的亮灭,输出为 0 则亮

3、,输出为 1 则 灭; (5)用 8255 来输出绿灯的倒计时间。 2 2 2 2 设计方案及分工设计方案及分工设计方案及分工 设计方案及分工 在这个方案里,我们将此设计分为 5 个模块,即:实现电路设计、连接电路以及各模块 间整合的模块、实现交通灯循环的模块、对中断进行处理的模块、实现绿灯倒计时的显示模 块、实现夜间控制模块。 具体分工如下: xx:实现 8253、电路设计、连接电路以及各模块间整合的模块 xx:实现夜间控制模块 xx:实现交通灯循环的模块 xx:对中断进行处理的模块 xx:实现绿灯倒计时的显示模块 我们想通过这次设计,具体实现以下功能: 以 8086CPU 为核心设计一个交

4、通灯控制系统,通过 8255 并口来控制 LED 发光二级管 的亮灭,输出 0 为亮,输出一为灭;用 8253 来实现一个定时器(隔一定时间发生一边沿跳 变,引发 8259中断);用 8259 来实现对中断的处理; 设有一个十字路口, 东西方向与南北方向各有一个红绿灯,初始状态为东西路口的红灯 亮南北路口的绿灯,南北方向的路口通车,并显示南北路口绿灯的倒计时间。延迟一定时间 之后,南北路口与东西路口都为黄灯亮,延迟一定的时间后,南北方向的红灯亮,东西路口 的绿灯两,东西方向的路口通车,并显示东西路口的绿灯倒计时间。延迟一定时间后直接跳 变为东西方向的红灯亮,南北路口的绿灯亮。如上所述循环一定次

5、数后假设进入晚上,屏幕 上显示 Good Night!此时这两个路口的黄灯开始闪烁,数码管清零并且闪烁。延迟一定时间 后假设进入早晨并在屏幕上显示 Good Night!并实现交通灯的循环。如果遇到紧急情况,采 取紧急中断并且两个方向路口的红灯全亮确保紧急情况得到妥善处理,并且不管。在紧急情 况中断处理模块里通过拨动按钮 KK2 来触发中断,使各个路口的灯全显示红灯,并在屏幕 上输出 Waring!中断完成后跳回原来的状态,继续运行。 3 3 3 3 各个模块的实现各个模块的实现各个模块的实现 各个模块的实现 3 3 3 3 1 1 1 1 交通灯循环模块(交通灯循环模块(XXXXXX XX

6、) 3 3 3 3 1 1 1 1 1 1 1 1 设计思想设计思想 十字路口分为南北方向和东西方向,各个方向有红黄绿三灯,其循环过程如下: 1:东西方向路口的红灯亮,南北路口的绿灯亮; 2:东西路口与南北路口都为黄灯亮; 3:东西方向路口的绿灯亮,南北方向路口的红灯亮; 4:不经过黄灯亮,直接跳变为状态 1; 5:按如上过程循环; 3 3 3 3 1 1 1 1 2 2 2 2 流程图流程图 图 3-18255 并口输出流程图 3 3 3 3 1 1 1 1 3 3 3 3 具体实现具体实现 用 8255 控制交通灯的循环,具体状态如下(0:灯亮 1:灯灭) 表 1交通灯循环状态表 8255

7、 初始化:A 口输出 B 口输出 C口输出工作在方式 0 状态D7(东西红) D6(东西黄)D5(东西绿)D4(南北红)D3(南北黄)D2(南北绿)D1D0 101111011 210110111 311001111 401111011 8255 控制字为: 1 0 0 0 0 0 0 0,即 80H 3 3 3 3 2 2 2 2 实现绿灯倒计时模块(实现绿灯倒计时模块(XXXXXX XX ) 3 3 3 3 2 2 2 2 1 1 1 1 设计思想设计思想 十字路口在东西方向和南北方向各有一个绿灯倒计时显示,建一个 Table存放字模。 当东西路口为绿灯时在第一个数码显示管上显示剩余时间。

8、首先让 BX 指向 Table的首址, 将计数器中当前 DL 中的值赋给 AL,通过相应的加减然后在 Table 中找出相应的字模通过 8255 赋给数码显示管,本次课程设计用的是静态显示,当 DL 中的是发生变化时数码管上 显示的数字也随着变化, 以次来实现在数码管上显示绿灯的倒计时间。 当南北路口为绿灯时 , 过程与上面的描述类似。 3 3 3 3 3 3 3 3 实现夜间控制模块(实现夜间控制模块(XXXXXX XX ) 3 3 3 3 3 3 3 3 1 1 1 1 设计思想设计思想 由于十字路口的交通灯是按一定的方式和固定时间进行循环的,并且每循环一次所 需时间为一秒,所以,根据 C

9、=T/L(C 为白天交通灯循环的次数,T 为白天(6:0024: 00)的总时间长度,L 为交通灯循环一次的时间长度)可计算出白天交通灯循环的次数,由 白天交通灯循环的次数便可判断出是否让系统进入夜间控制, 因此设计一个记录白天交通灯 当前循环次数的变量加以记录,并将此变量与预设白天循环次数进行比较即可。当系统判断 出应进入夜间控制后, 将四个方向的四部交通灯全部变为黄灯闪烁, 并让四部计时器 (LED) 于黄灯交替闪烁。黄灯闪烁的次数根据 C=T/L(C为夜间交通灯黄灯闪烁的次数,T为夜 间(24:006:00)的总时间长度,L为交通灯黄灯和计时器(LED)闪烁一次的时间 长度)计算得出,并

10、将此值作黄灯闪烁的设定值,当黄灯闪烁次数与设定值相等时,系统便 转换为白天控制模式。 3 3 3 3 4 4 4 4 中断处理模块(中断处理模块(XXXXXX XX ) 3 3 3 3 4 4 4 4 1 1 1 1 设计思想设计思想 定时器 8253 连接着 IRQ0,每当定时一定时间就可以触发 IRQ0 中断程序,也是主 程序; 同时 IRQ7 连接着一边沿触发,来处理应对紧急情况。 3 3 3 3 5 5 5 5 实现计数器模块(实现计数器模块(XXXXXX XX ) 3 3 3 3 5 5 5 5 1 1 1 1 设计思想设计思想 由 8253 作为一定时器,每隔一定时间引发一次 IR

11、Q0 中断,中断服务程序中有一变量 记录着时间值,从 30H 开始,依次累加,直到 3AH,该值再变为 30H。依据这个值,系统 在每个值下会有着对应的状态。如此往复,来实现对交通灯的模拟。 在这个值基础上,另有一变量,它在时间值走完一个时序循环,它自加一,当达到一定 数值,就会进入夜间模式。当该模式完成时,该变量清零,再次进入正常工作模式。 3 3 3 3 5 5 5 5 2 2 2 2 流程图流程图 图 3-2主程序流程图 图 3-3IRQ0 中断服务程序流程图 4 4 4 4 源代码源代码源代码 源代码 DATASEGMENT WEDW? YKDB? 开始 添 IRQ0 中断向量 初始化

12、 8255 等待 初始化 8259 初始化 8253 初始化时间值 ZLCDB? B2DB? TIMEDW? STRING1 DB 0AH,0DH,Good Night!,00H STRING2 DB 0DH,Good Morning!,0AH,00H STRING3 DB 0DH,WARNING!,0DH,00H TABLE DB 66H,4FH,5BH,06H DATAENDS STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT;定义代码段 ASSUME CS:CODE, DS:DATA START: MOVAX,DATA MO

13、V DS,AX PUSH DS; DS:00 压栈 MOVAX,0000H MOV DS,AX;置数据段 MOVAX,OFFSET IRQ0 ADD AX,2000H MOV SI,0020H MOV SI,AX MOVAX,0000H MOV SI,0022H MOV SI,AX MOVAX,OFFSET IRQ7 ADD AX,2000H MOV SI,003CH MOV SI,AX MOVAX,0000H MOV SI,003EH MOV SI,AX POPDS MOVAL,80H;8255 MOV DX,63H OUT DX,AL MOVAL,0FCH;8259 OUT 21H,AL

14、MOVAL,15H;8253 OUT 43H,AL MOVAL,0FFH OUT 40H,AL MOV DL,30H MOV ZLC,30H A1:STI JMP A1 IRQ0: CALL WP MOVAH,01H MOVAL,DL CMP AL,3AH JNZA2 INC ZLC CMP ZLC,32H;与换行数比较 JNZ N1 CALL ZPP;调用子程序 N1:MOV AL,0DH;换行 INT 10H MOVAL,30H A2:INT 10H INCAX MOV YK,AL;YK=AL CMP DL,3AH;DL 与 3A 比较 JNZW1;跳向 W1 MOV DL,30H;相等则

15、令 DL=30H W1:MOV AH,DL CALL WJJ;从 B口输出 MOVAL,YK MOV DL,AL MOVAX,0120H INT 10H MOV TIME,0099H;变量 TIME赋值,延时子程序起作用 CALL DALLY MOVAL,20H OUT 20H,AL IRET IRQ7:mov time,0660h MOVAL,01110111B OUT 61H,AL MOVAH,06H MOV BX,OFFSET STRING3 INT 10H call DALLY mov al,20h out 20h,al mov time,0020h IRET WJJ: CMP AH,

16、34H JLHONG CMP AH,35H MOVAL,1111B OUT 60H,AL JLHUANG CMP AH,35H JGLV HONG: MOVAL,7DH MOV DX,61H OUT DX,AL MOV BX,OFFSET TABLE MOV B2,0111B CALL CHENXI JMP XX HUANG: MOVAL,0BBH MOV DX,61H OUT DX,AL JMP XX LV: MOVAL,0D7H MOV DX,61H OUT DX,AL MOVBX,OFFSET TABLE MOV B2,1110B CALL CHENXI ADD AH,06H XX: R

17、ET ZPP: PUSH DX PUSH AX MOVAL,1111B OUT 60H,AL MOVAH,06H;显示晚上提示信息 MOV BX,OFFSET STRING1;取 STRING1 的地址 INT 10H;显示 MOV CX,08H MOV TIME,0060H;变量 TIME赋值,延时子程序起作用 ZP: CALL WP MOVAL,0BBH MOV DX,61H OUT DX,AL CALL DALLY MOVAL,0FFH MOV DX,61H OUT DX,AL CALL DALLY LOOP ZP MOVAH,06H;显示早上提示信息 MOV BX,OFFSET STR

18、ING2 INT 10H;显示 POP AX POP DX MOV ZLC,30H RET WP: PUSH AX PUSH BX CLI;屏蔽 IRQ0 MOVAL,01H OUT 21H,AL MOVAL,68H OUT 20H,AL STI MOVAL,48H OUT 20H,AL MOVAL,00H OUT 21H,AL POP BX POP AX RET CHENXI: PUSH AX PUSH BX MOVAL,B2 OUT 60H,AL SUBAH,30H MOVAL,AH XLAT OUT 62H,AL POP BX POP AX RET DALLY:PUSHAX MOVAX,

19、TIME MOV WE,AX A3:MOV AX,0560H A4:DEC AX JNZA4 DEC WE JNZA3 POP AX RET CODE ENDS ENDSTART 5 5 5 5 设计心得设计心得设计心得 设计心得 通过本次课程设计,我们熟悉了芯片 8253、8259、8255 的功能和应用。学会了用汇编 语言设计一个程序的方法。虽然程序中有一部分是现成的,但我们还是通过查书或问老师的 方式读懂了它的思路。在实现数码管显示数字的过程中,我们学会了先画流程图再编写程序 的良好习惯,它有利我们理清思路,更快更简洁地编写出程序。在用到 8259、8255 芯片时, 通过编程进一步掌握了它们的功能。本次课程设计提高我们的自学能力和合作精神。 在实现计数功能部分,可以用硬件也可以用软件实现,我们选择了硬件即通过 8253 来 实现。在成功调试并运行后,我们不忘去尝试能否用软件实现。在编程的过程中遇到了许多 细节方面的问题,我们通过讨论一起解决了一些问题。

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

当前位置:首页 > 研究报告 > 商业贸易


经营许可证编号:宁ICP备18001539号-1