1、硬件技术综合课程设计题目:十字路口交通灯的设计学 院 信息科学与工程学院 专业班级 05 计算机科学与技术 7 班 学生姓名 李娟娟 学 号 20056122 成 绩 20072008 第 2 学期摘要:本文介绍了以计算机为核心.利用可编程并行接口芯片 8255A 的软硬件功能,实现对交通灯控制关键词: 计算机 可编程并行接日芯片 交通灯 8255A引言:交通灯是交通安全的关键,已广泛应用于城乡的十字路口,它的有无作为交通安全检查的重要依据,是交通秩序正常进行的有力保障。一、实验目的1 了解交通灯管理的基本工作原理。2 熟悉 8253 计数器/定时器、8259A 中断控制器和 8255A 并行
2、接口的工作方式及应用编程。3 掌握多位 LED 显示的方法。二、 实验内容与要求实验内容:设计一个用于十字路口的交通灯控制器。基本要求:在十字路口的东西和南北两个方向都各有红、黄、绿三个信号灯。红、黄、绿交通灯的变化规律为: 1)南北方向的绿灯、东西方向的红灯同时亮 20 秒。 2)南北方向的绿灯灭、黄灯亮 5 秒,同时东西方向的红灯继续亮。 3)南北方向的黄灯灭、红灯亮,同时东西方向的红灯灭、绿灯亮,持续 20 秒。 4)南北方向的红灯继续亮,同时东西方向的绿灯灭、黄灯亮 5 秒。 5)转 1)重复。 三、工作原理交通灯的工作过程如下:设十字路口的 1、3 为南,北方向,2、4 为东西方向,
3、初始态为 4 个路口的红灯全亮。之后,1、3 路口的绿灯亮, 2、4 路口的红灯亮,1、3 路口方向通车,2 个路口的 LED 数码管开始倒计时 25 秒。延迟 20 秒后,1、3 路口的绿灯熄灭,而 1,3 路口的黄灯开始闪烁( 1HZ) 。闪烁 5 次后,1、 3 路口的红灯亮,同时 2、4 路口的绿灯亮,2、 4 路口方向开始通车,2 个路口的 LED 数码管重新开始倒计时 25 秒。延迟20 秒时间后,2 、4 路口的绿灯熄灭,而黄灯开始闪烁。闪烁 5 次后,再切换到 1、3 路口方向。之后,重复上述过程。当有紧急情况时,2 个方向都红灯亮,倒计时停止,车辆禁止通行,当紧急情况结束后,
4、控制器恢复以前的状态继续工作。在设计中采用 6 个发光二极管来模拟 2 个路口的黄红绿灯,每个路口用 2 个数码管来显示通行或禁止剩余的时间。紧急情况用一个单脉冲发生单元申请中断来模拟,紧急情况结束后,再发一个中断来恢复以前的状态。根据前面的介绍,本设计硬件由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。定时模块采用硬件定时和软件定时相结合的方法,用 8253 定时/计数器定时 100ms,再用软件计时实现所需的定时。发光二极管模块由 8255 控制发光二极管来实现。数码管显示模块由实验平台上的 LED 显示模块实现。紧急中断模块是由单脉冲发生单元和8279 中断控制器组成。程序
5、主要是由定时子程序、发光二极管显示子程序、数码管显示子程序和中断服务程序组成。包括对 8253、8255 以及 8259 等可编程器件的编程。四、硬件设计本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。完整系统的硬件连接如图 1 所示。硬件电路由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。定时模块是由 8253 的计数器 0 来实现定时 100ms。Clk0 接实验平台分频电路输出Q6,f46875hz 。GATE0 接 8255 的 PA0,由 8255 输出来控制计数器
6、的起停。OUT0 接8259 的 IRQ2,定时完成申请中断,进入中断服务程序。五、软件设计1. 软件设计思路本程序由主程序、定时中断子程序和外部中断子程序组成。主程序主要负责系统初始化和等待中断。定时中断子程序主要负责数码管显示刷新和红绿黄灯各种状态切换。外部中断子程序负责紧急情况处理和处理完恢复。8253 计数的起停由 8255 的 PA0 控制,8255 的 PA0 输出 1 时,8253 开始计数,交通灯Q6OUT08253 GATE0Clk0PA08255 PC地址 CS1译码 CS2电路 CS3CS4路数码管显示模块IRQ28259 IRQ3发光二极管电路单脉冲发生单元PC BUS
7、图 1 系统硬件电路图按正常状态切换工作,PA0 输出 0 时,计数器停止工作,交通灯不再按正常状态切换。8253 开始计数后每 100ms 发出一个中断申请信号,在中断子程序中先刷新数码管,然后判断当前状态,进入相应的处理程序进行处理。当有紧急情况时进入外部中断服务子程序,先让 8253 停止计数,然后点亮所有的红灯,下一次外部中断处理时,恢复原来的交通灯状况,启动 8253 开始工作。2. 主程序设计主程序负责系统的初始化,然后数码管数据输出显示,同时检测 PC 键盘按键,有按键就退出程序。主程序的流程图如图 3 所示。系统初始化包括 8253 的初始化,8255 的初始化,中断向量初始化
8、以及设置交通灯工作的初始状态。8253 定时的时间是 100ms,clk0 的输入时钟 f46875hz,所以计数初值为124FH。主程序的流程图3. 定时中断子程序定时中断子程序是本设计的重点,负责完成数码管输出数据刷新和各个状态的处理切换。中断子程序包括数码管输出数据刷新程序和各状态处理程序。中断程序的流程图如图4 所示。Y初始化 8253初始化 8255设置中断向量设置交通灯初态启动计数器数码管数据输出开始有按键结束N开始数码管输出数据处理状态比较跳转状态 1 处理程序状态 2 处理程序状态 3 处理程序状态 4 处理程序中断恢复中断返回图 4 定时中断服务子程序数码管输出数据刷新子程序
9、是实现倒计时 25s,用 LEDOUT 表示输出的数据,cnt 用来软件计时 1s,就是计数 10 个 100ms。LED 输出是要将输出的数据转化为段选码。LED 数码管倒计时显示子程序的流程图如图 5 所示。开始c n t 图 5 L E D 倒计时显示子程序c n t = 1 0 ?c n t = 0L E D O U T L E D O U T = 0 ?L E D O U T = 2 5退出YYNN根据当前的状态跳转到相应的处理程序,在处理程序中完成定时和状态的切换。状态1 和 3 的流程是一样的,先点亮对应的交通灯,再判断定时到了就可以切换了。状态 2 和4 要实现黄灯的闪烁,间隔
10、点亮和熄灭就可以了。状态 1 和 3 处理程序的流程图(以状态1 为例)如图 6 所示,其中 NUM 是状态 1 对应的 PC 口输出,见前面的表中介绍。状态 2和 4 处理程序(以状态 1 为例)的流程图如图 7 所示,其中 NUM1 和 NUM2 是状态 1 对应的 PC 口输出。图 6 状态 1 处理程序流程图C N T = 0 ?8 2 5 5 P C 口输出数据 N U MC N T = 2 0 0 ?C N T + +S t a t e 1 处理程序S t a t e 2C N T 0退出YNYN4. 外部中断服务子程序外部中断服务子程序主要用来处理紧急情况,将 2 个方向的车都停
11、止运行,点亮所有红灯。下次中断来时恢复以前的状态。用一个标志位 FLAG 判断是第一次进入还是恢复状态。外部中断服务子程序的流程图见图 8 所示。图 8 外部中断服务子程序流程图F L A G T R U E8 2 5 5 P A 0 口输出 0中断处理点亮所有红灯退出YN8 2 5 5 P A 0 口输出 1恢复点亮原状态的交通灯图 7 状态 2 处理程序流程图C N T = 0 ?8 2 5 5 P C 口输出数据 N U M 1C N T = 5 ?C N T + +S t a t e 2 处理程序C N T 1 ,C N T 0 ,N U M 1 和 N U M 2互换退出YNYNC
12、N T 1 = 1 0 ?S t a t e 3C N T 0YN六、源代码:CODE SEGMENT ASSUME CS:CODE ORG 1000H START:MOV DX,73H MOV AL,80H OUT DX,AL MOV DX,71H MOV AL,1110B OUT DX,AL MOV DX,72H MOV AL,01111001B OUT DX,AL CALL DELAYED1 MOV BX,5H L1: MOV DX,71H MOV AL,1110B OUT DX,AL MOV DX,72H MOV AL,10111010B OUT DX,AL CALL DELAYED2
13、 MOV DX,71H MOV AL,1110B OUT DX,AL MOV DX,72H MOV AL,11111011B OUT DX,AL CALL DELAYED2 DEC BX JNZ L1 MOV DX,71H MOV AL,0011B OUT DX,AL MOV DX,72H MOV AL,11001111B OUT DX,AL CALL DELAYED1 MOV BX,5H L2: MOV DX,71H MOV AL,0101B OUT DX,AL MOV DX,72H MOV AL,11010111B OUT DX,AL CALL DELAYED2 MOV DX,71H MOV AL,0111B OUT DX,AL MOV DX,72H MOV AL,11011111B OUT DX,AL CALL DELAYED2 DEC BX JNZ L2 JMP START DELAYED1: MOV AX,10 L3: MOV CX,0FFFFH LOOP $ DEC AX JNZ L3 RET DELAYED2:MOV CX,0FFFFH LOOP $ RET CODE ENDS END START 八、参考文献:微型计算机技术及应用第三版清华大学出版社现代交通灯控制系统论文赵玉冰、李玉霞