1、前 言随着计算机科学技术的不断发展,微型计算机得到了广泛的应用,是人们利用计算机设计和开发各种应用系统的基础。同时微型计算机接口技术也是一门实践性较强的课程, 理论与实践相结合可以更好的掌握知识,这也是这次交通灯系统控制的设计目的。交通灯是交通安全的关键,已广泛应用于城乡的十字路口,它的有无作为交通安全检查的重要依据,是交通秩序正常进行的有力保障。十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯绿灯”转换间隔,并自动切换。它们一般由“通行与禁止时间控制显示、红
2、黄绿三色信号灯和方向指示灯”三部分组成。交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。目前,有一种使用“模糊控制”技术控制交通灯的方法。能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保
3、证最大车流量,减少道口的交通堵塞。但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。本次的交通灯控制系统主要由 8255A 并行口、8253 定时/计算器、8259单极中断控制器以及 74LS139 译码器实验等芯片组成。整个课程设计主要使用8255A 的 A 口和 B 口模拟十字路口交通灯的闪烁情况。主要包括以下五个方面:1.课程设计题目名称;2.课程设计要求完成的任务;3.系统设计文档(包括了总体设计、详细设计以及程序设计等文档) ;4、课程设计总结 ;5.参考文献本次课程设计以固定的程序实现对交通灯实行控制,没有实现智能化,但智能
4、化是交通控制系统是交通控制系统发展的必然趋势,也是满足日益发展的社会需要。通过本次的课程设计,更好的学习微机接口的应用技术,使我们将课堂所学到的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。由于时间仓促和水平所限,本次课程设计难免有欠妥之处,请不吝批评指正。摘要:本文介绍了以计算机为核心.利用可编程并行接口芯片 8255A 的软硬件功能,实现对交通灯控制关键词: 计算机 可编程并行接日芯片 交通灯 8255A目录封 面 1前 言 2目 录 3课程设计任务书 4第一章 课程设计题目及要求5第二章 系统设计62.1 交通灯控制系统介绍2.2
5、 芯片选择 2.3 系统原理第三章 详细设计93.1 硬件设计3.1.1 8255A 并行接口103.1.2 8259A 可编程中断控制器123.1.3 8253 可编程定时器/计数器133.2 软件设计 153.3 程序流程图21第四章 程序设计 22第五章 调试结果 245.1 实验步骤5.2 调试记录与分析第六章 小结 25第七章 参考文献26第八章 附录27 课程设计题目:交通灯 原始资料1、微型计算机及接口实验指导书2、 微型计算机接口技术及应用教材3、交通灯的工作原理(图书馆借、网上搜索、下载) 课程设计任务内容1. 课程设计的目的意义:通过课程设计培养同学们的系统设计能力,使同学
6、们达到以下能力训练:、调查研究、分析问题的能力;、使用设计手册、技术规范的能力;、查阅中外文献的能力;、制定设计方案的能力;、计算机应用的能力;、设计计算和绘图的能力;、技术经济指标的分析能力;、语言文字表达的能力。2. 本课题研究的主要内容:使用 8255A 的 A 口和 B 口模拟十字路口交通灯的闪烁情况。基本要求:、设计实验电路(要求利用 FD-88 实验仪的硬件资源)、分析实验原理、列出实验接线表、采用汇编语言编写实验程序、通过实验验证功能的实现、编写课程设计说明书第一章 课程设计题目以及要求一、 课程设计题目:交通灯 使用 8255A 的 A 口和 B 口模拟十字路口交通灯的闪烁情况
7、二、基本要求:1、设计实验电路(要求利用 FD-88 试验仪的硬件资源)2、分析实验原理3、列出实验接线表4、采用汇编语言编写实验程序5、通过实验验证功能的实现6、编写课程设计说明书。第二章 系统设计21 交通灯控制系统介绍十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“ 红灯绿灯”转换间隔,并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。假设为某个十字路口设计一个交通灯控制系统,1、3为东,南方向, 2、4 为西,北方向
8、,初始态为 4 个路口的红灯全亮。 之后, 1、3 路口的绿灯亮, 2、4 路口的红灯亮, 1、3 路口方向通车。 延迟一段时间后, 1、3 路口的绿灯熄灭,而 1、3 路口的黄灯开始闪烁。闪烁若干次后, 1、3 路口的红灯亮, 同时 2、4 路口的绿灯亮, 2、4 路口方向开始通车。 延迟一段时间后, 2、4 路口的绿灯熄灭,而黄灯开始闪烁。闪烁若干次后,再切换到 1、3 路口方向。 之后,重复上述过程。2.1.1 主要内容在十字路口的东西和南北两个方向都各有红、黄、绿三个信号灯。红、黄、绿交通灯的变化规律为: 1)南北方向的绿灯、东西方向的红灯同时亮 20 秒。 2)南北方向的绿灯灭、黄灯
9、亮 5 秒,同时东西方向的红灯继续亮。 3)南北方向的黄灯灭、红灯亮,同时东西方向的红灯灭、绿灯亮,持续 20 秒。4)南北方向的红灯继续亮,同时东西方向的绿灯灭、黄灯亮 5 秒。 5)转 1)重复。 2.1.2 工作原理交通灯的工作过程如下:设十字路口的 1、3 为南,北方向,2、4 为东西方向,初始态为 4 个路口的红灯全亮。之后,1、3 路口的绿灯亮,2、4 路口的红灯亮,1、3 路口方向通车,2 个路口的 LED 数码管开始倒计时 25 秒。延迟 20秒后,1、3 路口的绿灯熄灭,而 1,3 路口的黄灯开始闪烁(1HZ) 。闪烁 5 次后,1、3 路口的红灯亮,同时 2、4 路口的绿灯
10、亮,2、4 路口方向开始通车,2 个路口的 LED 数码管重新开始倒计时 25 秒。延迟 20 秒时间后,2、4 路口的绿灯熄灭,而黄灯开始闪烁。闪烁 5 次后,再切换到 1、3 路口方向。之后,重复上述过程。当有紧急情况时,2 个方向都红灯亮,倒计时停止,车辆禁止通行,当紧急情况结束后,控制器恢复以前的状态继续工作。在设计中采用 6 个发光二极管来模拟 2 个路口的黄红绿灯,每个路口用 2个数码管来显示通行或禁止剩余的时间。紧急情况用一个单脉冲发生单元申请中断来模拟,紧急情况结束后,再发一个中断来恢复以前的状态。根据前面的介绍,本设计硬件由定时模块、发光二极管模块、数码管显示模块和紧急中断模
11、块组成。定时模块采用硬件定时和软件定时相结合的方法,用 8253 定时/计数器定时 100ms,再用软件计时实现所需的定时。发光二极管模块由 8255 控制发光二极管来实现。数码管显示模块由实验平台上的 LED 显示模块实现。紧急中断模块是由单脉冲发生单元和 8279 中断控制器组成。程序主要是由定时子程序、发光二极管显示子程序、数码管显示子程序和中断服务程序组成。包括对 8253、8255 以及 8259 等可编程器件的编程。交通灯显示模块2.2、 芯片选择1用实验系统 8255A 实现对信号灯的控制(所用端口自定);2 位数码显示用 8255A 实现控制。2. 用实验系统 8253 的计数
12、器 2 定时向实验系统主片 8259A 的 IRQ7 请求中断,以实现定时;实验系统 8253 的计数器 2 的 CLK2 接 OPCLK,频率为 1.19318MHZ;GATE2 已接 +5V;定时采用软硬件相结合的方式实现。 用实验系统的发光二极管模拟红绿灯2.3 系统原理本次系统利用 8253 定时,8259 中断、8255A 并口输出实现交通灯模拟控制的硬件电路,利用汇编语言程序编写源程序代码实现软件部分;能自动控制和手动控制,可以调整自动模式的绿灯和红灯时间。通过接口芯片 8255 构成并行接口电路,用它的 A 口和 B 口模拟交通灯的闪烁情况,A 口表示东、南方向,B 口表示西、北
13、方向,绿灯和红灯共同表示黄灯。首先片选对应的端口地址,定义8255A 的工作方式位 0;然后对端口 A 和 B 进行不同的数据写入,控制交通灯的亮度以及闪烁情况,采用延时子系统。第三章 详细设计3.1 硬件设计本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。完整系统的硬件连接如图 1 所示。硬件电路由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。定时模块是由 8253 的计数器 0 来实现定时 100ms。Clk0 接实验平台分频电路输出 Q6,f46875hz。GATE0
14、接 8255 的 PA0,由 8255 输出来控制计数器的起停。OUT0 接 8259 的 IRQ2,定时完成申请中断,进入中断服务程序。Q6OUT08253 GATE0Clk0PA08255 PC地址 CS1译码 CS2电路 CS3CS4路数码管显示模块IRQ28259 IRQ3发光二极管电路单脉冲发生单元PC BUS图 1 系统硬件电路图3.1.1.8255A 并行接口一. 8255A 的引脚及功能 8255A 是一个采用 NMOS 工艺制造的 40 个引脚的双列直插式组建, 其外部引脚如下图所示:功能:8255A 具有面向主机系统总线和面向外设两个方向的连接能力,即通过8255A,CPU
15、 可直接同外设相连接,负责 CPU 和外设之间的数据传送。1、面向系统总线的信号线D0D7:双向数据线;CPU 通过它向 8255A 发送命令、数据;8255A 通过它向CPU 回送状态、数据/CS:选片信号线,该信号线低电平有效,由系统总线经 I/O 地址译码器产生A1、A0:芯片内部端口地址信号线,与系统地址总线地位相连/RD:读信号线,该信号低电平有效,CPU 通过执行 IN 指令,发读信号将数据或状态信号从 8255A 读至 CPU/WR:写信号线,该信号低电平有效,CPU 通过执行 OUT 指令,发写信号,将命令或数据写入 8255ARESET:复位信号线,该信号高电平有效。2、面向
16、 I/O 设备的信号线PA0PA1:端口 A 的输入/输出线PBOPB7:端口 B 的输入/输出线PC0PC7:端口 C 的输入/输出线这 24 根信号线均可用来连接 I/O 设备,通过它们传送数字量信息或开关量信息二、内部结构1、数据总线缓冲器2、读/写控制逻辑3、A 组和 B 组控制电路4、数据端口 A、B、C三、8255 的工作方式1、方式 0基本输入/输出方式8255 工作在方式 0 时,三个端口分成彼此的两个 8 位口,即 A 口和 B 口,两个4 位口,这 4 个并行口都能设定为输入或输出。方式 0 常用于无条件查询传送2、方式 1选通输入/输出方式3、方式 2双向输入/输出方式3
17、.1.2 8259A 可编程中断控制器一、8259A 的引脚及功能8259A 的引线分为 3 部分,即与 CPU 的接口引线,与外设的引线和用于级联的接口引线,如下图所示1、8259A 与 CPU 的接口引线D7D0:数据线,双向,三态。与 CPU 数据总线直接相连/WR: 写信号,输入,低电平有效/RD: 读信号,输入,低电平有效A0: 地址线,输入,用于寻址 8259A 内部的两个端口,此引脚连接 CPU 系统地址线/CS: 片选信号,输入,低电平有效。此引脚连接译码电路输出端INT:中断请求信号,输出,高电平有效,连接 CPU 的可屏蔽中断请求输入端INTR/INTA; 中断响应信号,低
18、电平有效,用于接收 CPU 送回的中断响应负脉冲二、内部结构1、数据总线缓冲器2、读/写逻辑3、级联缓冲/比较器4、中断请求寄存器5、终端屏蔽寄存器6、优先权分析器7、中断服务寄存器8、控制逻辑三、工作方式1、屏蔽中断源方式2、设置优先级的方式3、中断结束方式4、查询中断方式5、读取状态方式6、级联方式7、连接系统总线方式3.1.3、8253 可编程定时器/计数器一、8253 定时/计数器的引脚及功能8253 是 NMOS 工艺制成,采用单一+5V 电源,24 引脚双列直插式封装,外部引脚如下所示1、8253 与 CPU 的接口引线D7D0:双向数据线:可直接与数据总线相连,用于传递各种数据信
19、息/WR:写信号,输入,低电平有效,用于控制 CPU 对 8253 的写操作/RD:读信号,输入低电平有效。用于控制 CPU 对 8253 的读操作A1、A0:地址线,输入信号/CS:片选信号,输入信号,低电平有效。当/CS 为 0 时,8253 被选中,允许CPU 对其进行读/写操作2、8253 与外设的接口引线CLKOCLK2:时钟输入信号;GATE0GATE2:门控输入信号;OUT0OUT2:计数输出端3、定时与计数方式二、内部结构1、数据总线缓冲器2、读/写逻辑电路3、控制字寄存器4、计数器三、8253 方式控制字定时/计数器 8253 的每个计数通道根据 CPU 发命令写入控制寄存器
20、的控制字确定工作方式和计数格式。8253 控制字的格式如下所示:D7 D6 D5 D4 D3 D2 D1 D0SC1SC0RW1RW0M2 M1 M0 BCDD7、D6:计数器选择位 SC1、SC0。8253 的 3 个计数器相互独立,并且都有一个控制寄存器。但这三个控制寄存器占用同一个端口地址,即 A1A0=11D5、D4:读/写指示位 RW1、RW0。CPU 向某个计数器写入初值和读取它们的当前值时不同的格式D3、D2、D1:工作方式选择位 M2、M1、M0。8253 有 6 种工作方式,选择哪种工作方式由 M2、M1、M0 编码确定DO:数值计数格式,用来选择计数格式。DO=O,计数器按
21、二进制格式计数;D0=1,计数器按 BCD 码格式计数四、8253 工作方式1、方式 0计数结束中断方式2、方式 1可编程单稳态输出方式3、方式 2分频器4、方式 3方波发生器5、方式 4软件触发选通3.2 软件设计1. 软件设计思路本程序由主程序、定时中断子程序和外部中断子程序组成。主程序主要负责系统初始化和等待中断。定时中断子程序主要负责数码管显示刷新和红绿黄灯各种状态切换。外部中断子程序负责紧急情况处理和处理完恢复。8253 计数的起停由 8255 的 PA0 控制,8255 的 PA0 输出 1 时,8253 开始计数,交通灯按正常状态切换工作,PA0 输出 0 时,计数器停止工作,交
22、通灯不再按正常状态切换。8253 开始计数后每 100ms 发出一个中断申请信号,在中断子程序中先刷新数码管,然后判断当前状态,进入相应的处理程序进行处理。当有紧急情况时进入外部中断服务子程序,先让 8253 停止计数,然后点亮所有的红灯,下一次外部中断处理时,恢复原来的交通灯状况,启动 8253 开始工作。2. 主程序设计主程序负责系统的初始化,然后数码管数据输出显示,同时检测 PC 键盘按键,有按键就退出程序。主程序的流程图如图 3 所示。系统初始化包括 8253 的初始化,8255 的初始化,中断向量初始化以及设置交通灯工作的初始状态。8253 定时的时间是 100ms,clk0 的输入
23、时钟f46875hz,所以计数初值为 124FH。主程序的流程图:Y初始化 8253初始化 8255设置中断向量设置交通灯初态启动计数器数码管数据输出开始有按键结束N3. 定时中断子程序定时中断子程序是本设计的重点,负责完成数码管输出数据刷新和各个状态的处理切换。中断子程序包括数码管输出数据刷新程序和各状态处理程序。中断程序的流程图如图 4 所示。开始数码管输出数据处理状态比较跳转状态 1 处理程序状态 2 处理程序状态 3 处理程序状态 4 处理程序中断恢复中断返回图 4 定时中断服务子程序数码管输出数据刷新子程序是实现倒计时 25s,用 LEDOUT 表示输出的数据,cnt 用来软件计时
24、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 要实现黄灯的闪烁,间隔点亮和熄灭就可以了。状态1 和 3 处理程序的流程图(以状态 1 为例)如
25、图 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 个方向的车都停止运行,点亮所有红灯。下次中断来时恢复以前的状态。用一个标志位 FLAG
26、 判断是第一次进入还是恢复状态。外部中断服务子程序的流程图见图 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 N T 1 = 1 0 ?S t a t e 3C N T 0YN5.F
27、D88 调试软件1、功能特点FD88 Debug(文件名 FD88.EXE)是 IBMPC 上( 286, 386。 486 或兼容机)为 FD8088A 实验仪配置的调试软件。它具有功能强、使用灵活方便、人- 机界面友善、稳定可靠等特点,能支持各种应用系统的调试。在 FD8088A 实验仪和 Debug 软件支持下、使用户得心应手地完成实验过程中各个阶段的工作(包括源程序编辑、存盘、读盘、程序调试等) ,大大提高工作效率,缩短调试周期。FD88 调试软件允许用户使用两种操作方式:窗口方式和命令方式窗口方式显示的信息量大,各个窗口都是活动的,用户可在窗口中进行修改数据等操作。窗口方式具有系统初
28、始化、文件管理、运行控制、窗口管理等多种操作命令。用户既可以根据菜单操作也可以使用一些功能键进行操作窗口方式特别适用于程序的调试,便于观察程序运行后的结果。命令方式操作快捷;对于熟练用户比较合适。2、启动方法将 FD8088A 实验仪和 IBMPC( 286, 386, 486 或兼容机)通过 RS232 电缆相连;打开 FD8088A 实验仪电源 PC 机开机以后运行 FD88 调试软件( FD88 调试软件可以复制到 PC 机的硬盘上) 。FD88 调试软件有四个参数。用户可使用其中任意一个,其功能如下:/n 启动调试软件,但不和实验系统进行通讯连接,用户可在软件中在进行连接:/1 启动调
29、试软件,使用串行口 1, 19600 波持率和实验系统连接;/2 启动调试软件,使用单行口 2;19600 波特率和实验系统连接;/? 显示 FD88 调试软件的参数帮助信息、异常情况如果调试软件和实验系统连接失败,则在屏幕上弹出提示窗口:这时输入回车键;进入调试软件用户应检查串行口设置,还应检查FDSJ8088A 实验系统电源是否开放。若电源已开启,按一下复位按钮使之处于初始状态。如果联接错误是因为串行口设置错误,则应按 ALTX 键退出调试软件,使用正确的参数重新启动。如是其他原因,纠正错误后使用菜单命令中Reconnect 命令重新进行连接即可。、正常情况如果连接和操作正确,则在屏幕上出
30、现六个窗口,系统现场信息分别显示在各窗口内。3.3 程序流程图开 始初始化 8255 端口地址,定义数据变量,定义 8255 工作方式写 A 口的数据,东方向绿灯亮,南方向红灯亮写 B 口发出的数据,西方向绿灯亮,北方向红灯亮写 A 口发出的数据,东方向黄灯亮 ,南方向红灯亮写 A 口发出的数据,西方向黄灯亮 , 北方向红灯亮写 A 口发出的数据,东方向黄灯灭 ,南北方向红灯亮写 B 口发出的数据,西方向黄灯灭,南北方向红灯亮写 A 口发出的数据,东方向红灯亮 ,南方向绿灯亮写 B 口发出的数据,西方向红灯亮,北方向绿灯亮写 A 口发出的数据,南方向黄灯亮 ,东方向红灯亮写 B 口发出的数据,
31、北方向黄灯亮,西方向红灯亮第四章 程序设计部分程序清单如下:MY8255_A EQU IOY0+00H*4 ;8255 的 A 口地址MY8255_B EQU IOY0+01H*4 ;8255 的 B 口地址MY8255_C EQU IOY0+02H*4 ;8255 的 C 口地址MY8255_MODE EQU IOY0+03H*4 ;8255 的控制寄存器地址STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDATA SEGMENT LA DB ? ;定义数据变量LB DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:
32、DATASTART: MOV AX,DATAMOV DS,AXMOV DX,MY8255_MODE ;定义 8255 工作方式 MOV AL,80H ;工作方式 0,A 口和 B 口为输出OUT DX,ALLOOP1: MOV DX,MY8255_A ;写 A 口发出的数据,东方向绿灯亮,南方向红灯亮写 A 口发出的数据,南北方向黄灯灭 ,东方向红灯亮写 B 口发出的数据,南北方向黄灯灭,西方向红灯亮判断 M BIOS 功能调用是否有按键按下,调用功能号 1, 无按键则跳回继续循环,有则退出DOS 系统功能调用,软件延时子程序东西方向红灯亮,南北方向绿灯亮软件延时子程序,黄灯闪烁(即亮与灭)的
33、时间间隔MOV AL,3CHOUT DX,ALMOV DX,MY8255_B ;写 B 口发出的数据,西方向绿灯亮,北方向红灯亮MOV AL,3CHOUT DX,ALCALL DALLY1DALLY PROC NEAR ;软件延时子程序 PUSH CXPUSH AXMOV CX,0FFFHD1: MOV AX,0FFFFHD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALLY ENDPDALLY1 PROC NEAR ;软件延时子程序,东西方向红灯亮,南北方向绿灯亮PUSH CXPUSH AXMOV CX,1EHD3: CALL DALLYLOOP D3 POP
34、 AXPOP CXRETDALLY1 ENDPDALLY2 PROC NEAR ;软件延时子程序,黄灯闪烁(即亮与灭)的时间间隔,PUSH CXPUSH AX MOV CX,02HD4: CALL DALLY LOOP D3 POP AXPOP CXRETDALLY2 ENP第五章 调试结果5.1 实验步骤(1) 连接 8255 并行口控制交通灯实验电路运行并使其能通过软件控制其交通灯控制系统。(2) 连接 8259 单极中断控制器实验电路运行并使其能成功完成中断控制。(3) 连接 8253 定时/计数器实验电路运行并使其能定时/计数器功能,并产生方波。(4) 用导线将以上实验电路模块连接起来
35、,就是硬件控制的交通灯控制系统。(5) 编写程序代码,8255 交通灯显示实验,A 口表示东、南方向,B 口表示西、北方向,绿灯和红灯共同表示黄灯(6) 将汇编好的实验程序装入(7) 汇编调试(8) 记录运行结果,以及调试中遇到的问题5.2 调试记录与分析在调试中,刚开始由于对一些芯片不是很了解以及汇编语言用的不是很熟练,所以起初错误比较多,要么灯都不显示,要么灯显示不全,再要么红灯绿灯时间分配不合理。总之是一头雾水,通过翻阅接口方面的书以及在网上查阅资料,有点了初步的进展。诸如像灯不显示或显示不全,一方面可能由于电路连接出错或者可能程序没写正确都会导致这些错误。而红黄绿时间分配不合理,比方说
36、黄灯时间很久而绿灯时间很短,这都是时间设置问题,这些都要通过代码更改才能实现。其中 8255A 的 A 口表示东、南方向,B 口表示西、北方向,绿灯和红灯共同表示黄灯,由于能力有限以及代码存在的一些错误,没能正确的调试出预期实验结果,希望通过以后不断的学习,提高自身能力。第六章 小结本次课程设计是要设计一个交通灯系统,主要通过 8255A 的 A 口和 B 口模拟十字路口交通灯的闪烁情况。在本次对交通灯的设计过程中以此来加深对微机接口技术的理解,提高了自己的动手能力。首先着手对硬件电路的设计,本次课程设计主要采用了 8255A 接口电路、8253 定时/计数器和 8259 中断控制器这三个芯片
37、电路。由于对各个芯片不熟悉,通过课本了解到了它们的引脚及功能、工作方式、内部结构和控制字。对各个功能的熟悉便于了硬件电路的设计然后就是对程序的设计,想要设计出一个实用的控制系统需要了解程序流程,先画出了流程图,然后对代码进行编写,主要采用汇编语言最后对程序,硬件电路进行调试。在调试过程中遇到了很多问题,要么灯都不显示,要么灯显示不全,再要么红灯绿灯时间分配不合理,对系统功能以及软件延时子程序的调用等等,有些问题在同学和老师的帮助下得以解决,但有些却依然存在。可能是跟自身的代码编写,电路的连接有问题所以最好导致无法运行出预期的正确实验结果经过为期一个星期的课程设计,我获益颇多。将微机接口技术中的
38、理论与实践相结合起来,对芯片的功能也有了进一步认识理解,重温了汇编语言的编程,还将单片机的原理结合起来了。在实验调试过程中发现问题,分析问题,如何解决问题的能力都有所提高。还有一点让我很感动,遇到问题时,同学不厌其烦的帮忙解决问题举动,意识了一个团体力量的伟大。最后希望通过以后的学习,不断提升自身各方面的能力,如对专业知识的掌握程度,动手实践能力等。经过此次的课程设计,我们学会了合作。我们要形成自己的设计思想,以便在今后的专业课形成自己的风格。同时在多多锻炼自己的动手能力,以便在以后的工作能独立完成一些设计项目。第七章 参考文献1、 微型接口技术实用教程 (任向民 编著) 清华大学出版社2、
39、微型计算机及接口实验指导书安徽工程科技学院计算机科学与工程系3、汇编语言程序设计(第 2 版) 王成耀编著,高等教育出版社4、 MCS-51 系列单片机应用及接口技术徐建军编著,人民教育出社5、 51 系列单片机及 C51 程序设计,王建校编著,科学出版社6、章忠全主编,电子技术基础实验与课程设计,第一版。7、中国科技大学电子学教研室编 卢结成主编 电子电路实验及应用课题设计, 中国科技大学出版社。8、华中理工大学电子学教研室编 康华光主编,电子技术基础(数字部分) ,第四版,高等教育出版社。第八章 附 录(一)CODE SEGMENT ASSUME CS:CODE ORG 1000H STA
40、RT: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 MOV DX,71H MOV AL,1110B OUT DX,AL MOV DX,72H MOV AL,11111011B OUT DX,AL CALL DE
41、LAYED2 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
42、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 (二)IOY0 EQU 0DA00H *MY8255_A EQU IOY0+00H*4 MY8255_B EQU IOY0+01H*4 MY8255_C EQU IOY0+02H*4 MY8255_MODE EQU IOY0+03H*4 STACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSDA
43、TA SEGMENT LA DB ? LB DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,MY8255_MODE MOV AL,80H OUT DX,ALLOOP1: MOV DX,MY8255_A ;MOV AL,3CHOUT DX,ALMOV DX,MY8255_B MOV AL,3CHOUT DX,ALCALL DALLY1MOV CX,08HL1: MOV DX,MY8255_A MOV AL,0FCHOUT DX,AL MOV DX,MY8255_B MOV AL,0F
44、CHOUT DX,AL CALL DALLY2MOV DX,MY8255_A MOV AL,30HOUT DX,ALMOV DX,MY8255_B MOV AL,30HOUT DX,ALCALL DALLY2LOOP L1MOV DX,MY8255_A MOV AL,0C3HOUT DX,ALMOV DX,MY8255_B MOV AL,0C3HOUT DX,ALCALL DALLY1MOV CX,08HL2: MOV DX,MY8255_AMOV AL,0F3HOUT DX,AL MOV DX,MY8255_B MOV AL,0F3HOUT DX,ALCALL DALLY2MOV DX,MY
45、8255_A MOV AL,0C0HOUT DX,AL MOV DX,MY8255_B MOV AL,0C0HOUT DX,ALCALL DALLY2LOOP L2MOV AH,1 INT 16H JZ LOOP1 QUIT: MOV AX,4C00H INT 21H DALLY PROC NEAR PUSH CXPUSH AXMOV CX,0FFFHD1: MOV AX,0FFFFHD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALLY ENDPDALLY1 PROC NEAR PUSH CXPUSH AXMOV CX,1EHD3: CALL DALLYLOOP D3 POP AXPOP CXRETDALLY1 ENDPDALLY2 PROC NEAR PUSH CXPUSH AXMOV CX,02HD4: CALL DALLYLOOP D4POP AXPOP CXRETDALLY2 ENDPCODE ENDSEND START