应用8255A实现交通灯控制设计.docx
《应用8255A实现交通灯控制设计.docx》由会员分享,可在线阅读,更多相关《应用8255A实现交通灯控制设计.docx(35页珍藏版)》请在冰豆网上搜索。
应用8255A实现交通灯控制设计
二○一一~二○一二学年第二学期
信息科学与工程学院
课程设计报告书
课程名称:
微机原理课程设计
班级:
电子信息工程2009级6班
学号:
2009******50
*****
*******
二○一二年二月二十日
前言
随着计算机科学技术的不断发展,微型计算机得到了广泛的应用,是人们利用计算机设计和开发各种应用系统的基础。
同时微型计算机接口技术也是一门实践性较强的课程,理论与实践相结合可以更好的掌握知识,这也是这次交通灯系统控制的设计目的。
交通灯是交通安全的关键,已广泛应用于城乡的十字路口,它的有无作为交通安全检查的重要依据,是交通秩序正常进行的有力保障。
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。
但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。
采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。
它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。
目前,有一种使用“模糊控制”技术控制交通灯的方法。
能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。
但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。
本次的交通灯控制系统主要由8255A并行口、8253定时/计算器、8259单极中断控制器以及74LS139译码器实验等芯片组成。
整个课程设计主要使用8255A的A口和B口模拟十字路口交通灯的闪烁情况。
主要包括以下五个方面:
1.课程设计题目名称;2.课程设计要求完成的任务;3.系统设计文档(包括了总体设计、详细设计以及程序设计等文档);4、课程设计总结;5.参考文献
本次课程设计以固定的程序实现对交通灯实行控制,没有实现智能化,但智能化是交通控制系统是交通控制系统发展的必然趋势,也是满足日益发展的社会需要。
通过本次的课程设计,更好的学习微机接口的应用技术,使我们将课堂所学到的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。
由于时间仓促和水平所限,本次课程设计难免有欠妥之处,请不吝批评指正。
摘要:
本文介绍了以计算机为核心.利用可编程并行接口芯片8255A的软硬件功能,实现对交通灯控制
关键词:
计算机可编程并行接日芯片交通灯8255A
封面———————————————————————1
前言————————————————————————2
目录————————————————————————3
课程设计任务书—————————————————————4
第一章课程设计题目及要求———————————————5
第二章系统设计————————————————————6
2.1交通灯控制系统介绍
2.2芯片选择
2.3系统原理
第三章详细设计————————————————————9
3.1硬件设计
3.1.18255A并行接口————————————————10
3.1.28259A可编程中断控制器————————————12
3.1.38253可编程定时器/计数器———————————13
3.2软件设计—————————————————————15
3.3程序流程图—————————————————————21
第四章程序设计————————————————————22
第五章调试结果————————————————————24
5.1实验步骤
5.2调试记录与分析
第六章小结————————————————————25
第七章参考文献————————————————————26
第八章附录——————————————————————27
Ⅰ课程设计题目:
交通灯
Ⅱ原始资料
1、《微型计算机及接口》实验指导书
2、《微型计算机接口技术及应用》教材
3、交通灯的工作原理(图书馆借、网上搜索、下载)
Ⅲ课程设计任务内容
1.课程设计的目的意义:
通过课程设计培养同学们的系统设计能力,使同学们达到以下能力训练:
、调查研究、分析问题的能力;
、使用设计手册、技术规范的能力;
、查阅中外文献的能力;
、制定设计方案的能力;
、计算机应用的能力;
、设计计算和绘图的能力;
、技术经济指标的分析能力;
、语言文字表达的能力。
2.本课题研究的主要内容:
使用8255A的A口和B口模拟十字路口交通灯的闪烁情况。
基本要求:
、设计实验电路(要求利用FD-88实验仪的硬件资源)
、分析实验原理
、列出实验接线表
、采用汇编语言编写实验程序
、通过实验验证功能的实现
、编写课程设计说明书
第一章课程设计题目以及要求
一、课程设计题目:
交通灯
使用8255A的A口和B口模拟十字路口交通灯的闪烁情况
二、基本要求:
1、设计实验电路(要求利用FD-88试验仪的硬件资源)
2、分析实验原理
3、列出实验接线表
4、采用汇编语言编写实验程序
5、通过实验验证功能的实现
6、编写课程设计说明书。
第二章系统设计
2.1交通灯控制系统介绍
十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。
十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。
当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。
它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。
假设为某个十字路口设计一个交通灯控制系统,1、3为东,南方向,2、4为西,北方向,初始态为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)南北方向的绿灯灭、黄灯亮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路口的绿灯亮,2、4路口方向开始通车,2个路口的LED数码管重新开始倒计时25秒。
延迟20秒时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。
闪烁5次后,再切换到1、3路口方向。
之后,重复上述过程。
当有紧急情况时,2个方向都红灯亮,倒计时停止,车辆禁止通行,当紧急情况结束后,控制器恢复以前的状态继续工作。
在设计中采用6个发光二极管来模拟2个路口的黄红绿灯,每个路口用2个数码管来显示通行或禁止剩余的时间。
紧急情况用一个单脉冲发生单元申请中断来模拟,紧急情况结束后,再发一个中断来恢复以前的状态。
根据前面的介绍,本设计硬件由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。
定时模块采用硬件定时和软件定时相结合的方法,用8253定时/计数器定时100ms,再用软件计时实现所需的定时。
发光二极管模块由8255控制发光二极管来实现。
数码管显示模块由实验平台上的LED显示模块实现。
紧急中断模块是由单脉冲发生单元和8279中断控制器组成。
程序主要是由定时子程序、发光二极管显示子程序、数码管显示子程序和中断服务程序组成。
包括对8253、8255以及8259等可编程器件的编程。
交通灯显示模块
2.2、芯片选择
1.用实验系统8255A实现对信号灯的控制(所用端口自定);2位数码显示用8255A实现控制。
2.用实验系统8253的计数器2定时向实验系统主片8259A的IRQ7请求中断,以实现定时;实验系统8253的计数器2的CLK2接OPCLK,频率为1.19318MHZ;GATE2已接+5V;定时采用软硬件相结合的方式实现。
⒊用实验系统的发光二极管模拟红绿灯
2.3系统原理
本次系统利用8253定时,8259中断、8255A并口输出实现交通灯模拟控制的硬件电路,利用汇编语言程序编写源程序代码实现软件部分;能自动控制和手动控制,可以调整自动模式的绿灯和红灯时间。
通过接口芯片8255构成并行接口电路,用它的A口和B口模拟交通灯的闪烁情况,A口表示东、南方向,B口表示西、北方向,绿灯和红灯共同表示黄灯。
首先片选对应的端口地址,定义8255A的工作方式位0;然后对端口A和B进行不同的数据写入,控制交通灯的亮度以及闪烁情况,采用延时子系统。
第三章详细设计
3.1硬件设计
本课题的设计可通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。
完整系统的硬件连接如图1所示。
硬件电路由定时模块、发光二极管模块、数码管显示模块和紧急中断模块组成。
定时模块是由8253的计数器0来实现定时100ms。
Clk0接实验平台分频电路输出Q6,f=46875hz。
GATE0接8255的PA0,由8255输出来控制计数器的起停。
OUT0接8259的IRQ2,定时完成申请中断,进入中断服务程序。
3.1.1.8255A并行接口
一.8255A的引脚及功能
8255A是一个采用NMOS工艺制造的40个引脚的双列直插式组建,其外部引脚如下图所示:
功能:
8255A具有面向主机系统总线和面向外设两个方向的连接能力,即通过8255A,CPU可直接同外设相连接,负责CPU和外设之间的数据传送。
1、面向系统总线的信号线
D0~~D7:
双向数据线;CPU通过它向8255A发送命令、数据;8255A通过它向CPU回送状态、数据
/CS:
选片信号线,该信号线低电平有效,由系统总线经I/O地址译码器产生
A1、A0:
芯片内部端口地址信号线,与系统地址总线地位相连
/RD:
读信号线,该信号低电平有效,CPU通过执行IN指令,发读信号将数据或状态信号从8255A读至CPU
/WR:
写信号线,该信号低电平有效,CPU通过执行OUT指令,发写信号,将命令或数据写入8255A
RESET:
复位信号线,该信号高电平有效。
2、面向I/O设备的信号线
PA0~~PA1:
端口A的输入/输出线
PBO~~PB7:
端口B的输入/输出线
PC0~~PC7:
端口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.1.28259A可编程中断控制器
一、8259A的引脚及功能
8259A的引线分为3部分,即与CPU的接口引线,与外设的引线和用于级联的接口引线,如下图所示
1、8259A与CPU的接口引线
D7~D0:
数据线,双向,三态。
与CPU数据总线直接相连
/WR:
写信号,输入,低电平有效
/RD:
读信号,输入,低电平有效
A0:
地址线,输入,用于寻址8259A内部的两个端口,此引脚连接CPU系统地址线
/CS:
片选信号,输入,低电平有效。
此引脚连接译码电路输出端
INT:
中断请求信号,输出,高电平有效,连接CPU的可屏蔽中断请求输入端INTR
/INTA;中断响应信号,低电平有效,用于接收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的接口引线
D7~D0:
双向数据线:
可直接与数据总线相连,用于传递各种数据信息
/WR:
写信号,输入,低电平有效,用于控制CPU对8253的写操作
/RD:
读信号,输入低电平有效。
用于控制CPU对8253的读操作
A1、A0:
地址线,输入信号
/CS:
片选信号,输入信号,低电平有效。
当/CS为0时,8253被选中,允许CPU对其进行读/写操作
2、8253与外设的接口引线
CLKO~CLK2:
时钟输入信号;GATE0~GATE2:
门控输入信号;OUT0~OUT2:
计数输出端
3、定时与计数方式
二、内部结构
1、数据总线缓冲器
2、读/写逻辑电路
3、控制字寄存器
4、计数器
三、8253方式控制字
定时/计数器8253的每个计数通道根据CPU发命令写入控制寄存器的控制字确定工作方式和计数格式。
8253控制字的格式如下所示:
D7
D6
D5
D4
D3
D2
D1
D0
SC1
SC0
RW1
RW0
M2
M1
M0
BCD
D7、D6:
计数器选择位SC1、SC0。
8253的3个计数器相互独立,并且都有一个控制寄存器。
但这三个控制寄存器占用同一个端口地址,即A1A0=11
D5、D4:
读/写指示位RW1、RW0。
CPU向某个计数器写入初值和读取它们的当前值时不同的格式
D3、D2、D1:
工作方式选择位M2、M1、M0。
8253有6种工作方式,选择哪种工作方式由M2、M1、M0编码确定
DO:
数值计数格式,用来选择计数格式。
DO=O,计数器按二进制格式计数;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时,计数器停止工作,交通灯不再按正常状态切换。
8253开始计数后每100ms发出一个中断申请信号,在中断子程序中先刷新数码管,然后判断当前状态,进入相应的处理程序进行处理。
当有紧急情况时进入外部中断服务子程序,先让8253停止计数,然后点亮所有的红灯,下一次外部中断处理时,恢复原来的交通灯状况,启动8253开始工作。
2.主程序设计
主程序负责系统的初始化,然后数码管数据输出显示,同时检测PC键盘按键,有按键就退出程序。
主程序的流程图如图3所示。
系统初始化包括8253的初始化,8255的初始化,中断向量初始化以及设置交通灯工作的初始状态。
8253定时的时间是100ms,clk0的输入时钟f=46875hz,所以计数初值为124FH。
主程序的流程图:
3.定时中断子程序
定时中断子程序是本设计的重点,负责完成数码管输出数据刷新和各个状态的处理切换。
中断子程序包括数码管输出数据刷新程序和各状态处理程序。
中断程序的流程图如图4所示。
数码管输出数据刷新子程序是实现倒计时25s,用LEDOUT表示输出的数据,cnt用来软件计时1s,就是计数10个100ms。
LED输出是要将输出的数据转化为段选码。
LED数码管倒计时显示子程序的流程图如图5所示。
根据当前的状态跳转到相应的处理程序,在处理程序中完成定时和状态的切换。
状态1和3的流程是一样的,先点亮对应的交通灯,再判断定时到了就可以切换了。
状态2和4要实现黄灯的闪烁,间隔点亮和熄灭就可以了。
状态1和3处理程序的流程图(以状态1为例)如图6所示,其中NUM是状态1对应的PC口输出,见前面的表中介绍。
状态2和4处理程序(以状态1为例)的流程图如图7所示,其中NUM1和NUM2是状态1对应的PC口输出。
4.外部中断服务子程序
外部中断服务子程序主要用来处理紧急情况,将2个方向的车都停止运行,点亮所有红灯。
下次中断来时恢复以前的状态。
用一个标志位FLAG判断是第一次进入还是恢复状态。
外部中断服务子程序的流程图见图8所示。
5.FD88调试软件
§1、功能特点
FD88Debug(文件名FD88.EXE)是IBM-PC上(286,386。
486或兼容机)为FD8088A实验仪配置的调试软件。
它具有功能强、使用灵活方便、人-机界面友善、稳定可靠等特点,能支持各种应用系统的调试。
在FD8088A实验仪和Debug软件支持下、使用户得心应手地完成实验过程中各个阶段的工作(包括源程序编辑、存盘、读盘、程序调试等),大大提高工作效率,缩短调试周期。
FD88调试软件允许用户使用两种操作方式:
窗口方式和命令方式.窗口方式显示的信息量大,各个窗口都是活动的,用户可在窗口中进行修改数据等操作。
窗口方式具有系统初始化、文件管理、运行控制、窗口管理等多种操作命令。
用户既可以根据菜单操作也可以使用一些功能键进行操作.窗口方式特别适用于程序的调试,便于观察程序运行后的结果。
命令方式操作快捷;对于熟练用户比较合适。
§2、启动方法
将FD8088A实验仪和IBM-PC(286,386,486或兼容机)通过RS232电缆相连;打开FD8088A实验仪电源.PC机开机以后运行FD88调试软件(FD88调试软件可以复制到PC机的硬盘上)。
FD88调试软件有四个参数。
用户可使用其中任意一个,其功能如下:
/n启动调试软件,但不和实验系统进行通讯连接,用户可在软件中在进行连接:
/1启动调试软件,使用串行口1,19600波持率和实验系统连接;
/2启动调试软件,使用单行口2;19600波特率和实验系统连接;
/?
显示FD88调试软件的参数帮助信息.
⑴、异常情况
如果调试软件和实验系统连接失败,则在屏幕上弹出提示窗口:
这时输入回车键;进入调试软件.用户应检查串行口设置,还应检查FD-SJ8088A实验系统电源是否开放。
若电源已开启,按一下复位按钮使之处于初始状态。
如果联接错误是因为串行口设置错误,则应按ALT+X键退出调试软件,使用正确的参数重新启动。
如是其他原因,纠正错误后使用菜单命令中Reconnect命令重新进行连接即可。
⑵、正常情况
如果连接和操作正确,则在屏幕上出现六个窗口,系统现场信息分别显示在各窗口内。
3.3程序流程图
第四章程序设计
部分程序清单如下:
MY8255_AEQUIOY0+00H*4;8255的A口地址
MY8255_BEQUIOY0+01H*4;8255的B口地址
MY8255_CEQUIOY0+02H*4;8255的C口地址
MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
LADB?
;定义数据变量
LBDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,MY8255_MODE;定义8255工作方式
MOVAL,80H;工作方式0,A口和B口为输出
OUTDX,AL
LOOP1:
MOVDX,MY8255_A;写A口发出的数据,东方向绿灯亮,南方向
红灯亮
MOVAL,3CH
OUTDX,AL
MOVDX,MY8255_B;写B口发出的数据,西方向绿灯亮,北方向
红灯亮
MOVAL,3CH
OUTDX,AL
CALLDALLY1
DALLYPROCNEAR;软件延时子程序
PUSHCX
PUSHAX
MOVCX,0FFFH
D1:
MOVAX,0FFFFH
D2:
DECAX
JNZD2
LOOPD1
POPAX
POPCX
RET
DALLYENDP
DALLY1PROCNEAR;软件延时子程序,东西方向红灯亮,南北方向绿灯亮
PUSHCX
PUSHAX
MOVCX,1EH
D3:
CALLDALLY
LOOPD3
POPAX
POPCX
RET
DALLY1ENDP
DALLY2PROCNEAR;软件延时子程序,黄灯闪烁(即亮与灭)的时间间隔,
PUSHCX
PUSHAX
MOVCX,02H
D4:
CALLDALLY
LOOPD3
POPAX
POPCX
RET
DALLY2ENP
第五章调试结果
5.1实验步骤
(1)连接8255并行口控制交通灯实验电路
运行并使其能通过软件控制其交通灯控制系统。
(2)连接8259单极中断控制器实验电路
运行并使其能成功完成中断控制。
(3)连接8253定时/计数器实验电路
运行并使其能定时/计数器功能,并产生方波。
(4)用导线将以上实验电路模块连接起来,就是硬件控制的交通灯控制系统。
(5)编写程序代码,8255交通灯显示实验,A口表示东、南方向,B口表示西、北方向,绿