《微机原理综合课程设计》报告书课程题目:十字路口交通灯课程设计专业:计算机科学与技术班级:C1042学号:1001024216姓名:王雪指导教师:李二牛2013年3月30日摘要随着计算机科学技术的不断发展,微型计算机得到了广泛的应用,成为人们利用计算机设计和开发各种应用系统的基础。同时微型计算机接口技术也是一门实践性较强的课程,理论与实践相结合可以更好的掌握知识,这也是这次微机原理课程设计目的。交通灯是交通安全的关键,已广泛应用于城乡的十字路口,它的有无作为交通安全检查的重要依据,是交通秩序正常进行的有力保障。十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。交通灯的时间控制显示,以固定时间值预先“固化”,每次只是以一定周期交替变化。本次课程设计以固定的程序实现对交通灯实行控制,没有实现智能化,但智能化是交通控制系统是交通控制系统发展的必然趋势,也是满足日益发展的社会需要。通过本次的课程设计,更好的学习微机接口的应用技术,使我们将课堂所学到的知识和实践有机结合起来,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。本文介绍了以计算机为核心.利用可编程并行接口芯片8255的软硬件功能,实现对交通灯控制。关键词:交通灯8255目录第一章设计课题及概述1.1课程设计目的1.2设计内容及要求第二章总体设计2.1设计思想及实施方案第三章硬件设计原理图及其说明3.18255的引线结构3.2电路接线图第四章软件设计4.1流程图及其说明4.2源程序清单和注释第五章调试过程及结果总结参考文献第一章设计课题及要求1.1课程设计目的十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各50秒。交通灯的时间控制显示,以固定时间值预先“固化”,每次只是以一定周期交替变化。但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。目前,有一种使用“模糊控制”技术控制交通灯的方法。能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。1.2设计内容及要求1东西方向车辆放行60秒钟。即东西方向的绿灯和南北方向的红灯同时点亮1分钟。2.1分钟后,东西方向的黄灯闪烁5秒钟,以警示车辆将切换红绿灯。此时南北方向仍维持红灯点亮。3.东西方向的黄灯闪烁5秒钟后,转为南北方向放行20秒钟。即东西方向的红灯和南北方向的绿灯同时点亮20秒钟。4.南北方向放行20秒钟后,转为南北方向的黄灯闪烁5秒钟,以警示将切换红绿灯。此时东西方向仍维持红灯点亮。5.南北方向的黄灯闪烁5秒钟后,再转为东西方向车辆放行1分钟。如此循环重复。第二章总体设计2.1设计思想及实施方案在模拟交通等设计中,如何使红灯、绿灯保持一定时间,黄灯闪烁的时间是一个非常关键的问题。本任务要求交通信号灯能实现自行定时、延时、切换等功能,即能实现交通信号灯自动控制。一般计算机控制系统实现定时或延时有两种基本方法:利用软件定时和硬件定时。软件定时,即让机器执行一段程序,程序没有具体的执行目的,利用执行每条指令CPU所花费的时间,可实现延时功能。这种方法容易实现,仅需选用恰当指令并安排循环即可实现,定时时间调整方便,但不能做到精确定时。另外,时间调整是以一条指令执行时间为基准,占用CPU资源,降低CPU利用率。硬件定时,即使用可编程定时/计数器硬件芯片定时。这种芯片内部有一个可编程定时器,其定时值、定时范围可以很容易地由软件程序改变,定时时间到时可发出某种形式的信号通知外设或CPU。定时器的输出频率和波形等均由程序设定,因而使用灵活,功能强。本次课程设计根据我们所学知识、所查资料以及水平所限,我们利用了入栈、出栈所消耗的时间再加上确定次数的循环控制,达到我们所需要的延时时间。第三章硬件设计原理图及其说明3.18255的引线结构8255的引线结构如图1所示。共有40个引脚,其功能分别如下:D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。RD:读信号线,当这个输入引脚为低电平时,即RD=0且CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。CS:芯片选择信号线,当这个输入引脚为低电平时,即CS=0时,表示芯片被选中,允许8255与CPU进行通讯;CS=1时,8255无法与CPU做数据传输。PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。RESET:复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。A1,A0:地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器。当A1=0,A0=0时,PA口被选择;当A1=0,A0=1时,PB口被选择;当A1=1,A0=0时,PC口被选择;当A1=1.A0=1时,控制寄存器被选择;在本次课程设计当中,设计采用的是软件定时(即通过汇编指令)实现的。而灯的亮与灭以及闪烁是用8255的A口和B口控制的,工作在方式0,A口和B口均为输出。并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图1所示。3.2电路接线图图3红绿灯模拟设计总电路图上电路图为红绿灯模拟设计总电路图,通过8086CPU系统总线来控制8255的A端口、B端口,而A、B端口分别接LED发光二极管来控制十字路口红绿灯。红、黄、绿灯的表示情况如下:由于仪器上面只有16个发光二级管,且从高到低依次为:D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0。在设计的过程中做了如下的规定:R表示红灯,G表示绿灯,Y表示黄灯;E表示方向东,W表示方向西,S表示方向南,N表示方向北,例如:ER表示东方向为红灯,WG表示西方向为绿灯,SY表示南方向为黄灯,其余的类似。所以在设计中采用如下的规定:D15D14表示ER,D13D12表示SR,D11D10表示EG,D9D8表示SG,D7D6表示WR,D5D4表示NR,D3D2表示WG,D1D0表示NG,D15D14D11D10表示EY,D7D6D3D2表示WY,D13D12D9D8表示SY,D5D4D1D0表示NY。具体连线及表示如下图所示(圆圈表示发光二极管)。ERSREGSGWRNRWGNGEYSYWYNYD0D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15PB0PB1PB2PB3PB4PB5PB6PB7PA0PA1PA2PA3PA4PA5PA6PA7图4十字路口红黄绿灯的表示3.3使用说明这是一个交通红绿灯的模拟显示实验,由8255控制16个LED发光二极管的亮与暗来表达十字路口的交通信号,A口表示东、南方向,B口表示西、北方向,绿灯和红灯共同表示黄灯。可以通过发光二极管来判断具体是哪个方向、哪个灯亮。第四章软件设计芯片初始化东西方向绿灯亮,南北方向红灯亮60秒东西方向黄灯闪烁,南北方向红灯亮5秒东西方向红灯亮,南北方向绿灯亮20秒东西方向红灯亮,南北方向黄灯闪烁5秒有键按下?返回到DOS结束否是4.2源程序清单和注释IOY0EQU0DA00H;片选IOY0对应的端口始地址MY8255_AEQUIOY0+00H*4;8255的A口地址MY8255_BEQUIOY0+01H*4;8255的B口地址MY8255_CEQUIOY0+02H*4;8255的C口地址MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENTLADB?;定义数据变量LBDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,MY8255_MODE;定义8255工作方式MOVAL,80H;工作方式0,A口和B口为输出OUTDX,ALLOOP1:MOVDX,MY8255_A;写A口发出的数据,东方向绿灯亮,南方向红灯亮MOVAL,3CHOUTDX,ALMOVDX,MY8255_B;写B口发出的数据,西方向绿灯亮,北方向红灯亮MOVAL,3CHOUTDX,ALCALLDALLY1L1:MOVDX,MY8255_A;写A口发出的数据,东方向黄灯亮,南方向红灯亮MOVAL,0FCHOUTDX,ALMOVDX,MY8255_B;写A口发出的数据,西方向黄灯亮,北方向红灯亮MOVAL,0FCHOUTDX,ALCALLDALLY2MOVDX,MY8255_A;写A口发出的数据,东方向黄灯灭,南北方向红灯亮MOVAL,30HOUTDX,ALMOVDX,MY8255_B;写B口发出的数据,西方向黄灯灭,南北方向红灯亮MOVAL,30HOUTDX,ALCALLDALLY2LOOPL1MOVDX,MY8255_A;写A口发出的数据,东方向红灯亮,南方向绿灯亮MOVAL,0C3HOUTDX,ALMOVDX,MY8255_B;写B口发出的数据,西方向红灯亮,北方向绿灯亮MOVAL,0C3HOUTDX,ALCALLDALLY3L2:MOVDX,MY8255_A;写A口发出的数据,南方向黄灯亮,东方向红灯亮MOVAL,0F3HOUTDX,ALMOVDX,MY8255_B;写B口发出的数据,北方向黄灯亮,西方向红灯亮MOVAL,0F3HOUTDX,ALCALLDALLY2MOVDX,MY8255_A;写A口发出的数据,南北方向黄灯灭,东方向红灯亮MOVAL,0C0HOUTDX,ALMOVDX,MY8255_B;写B口发出的数据,南北方向黄灯灭,西方向红灯亮MOVAL,0C0HOUTDX,ALCALLDALLY2LOOPL2MOVAH,1;判断是否有按键按下,调用功能号1INT16H;ROMBIOS功能调用JZLOOP1;无按键则跳回继续循环,有则退出QUIT:MOVAX,4C00H;结束程序退出INT21H;DOS系统功能调用DALLYPROCNEAR;软件延时子程序PUSHCXPUSHAXMOVCX,0FFFHD1:MOVAX,0FFFFHD2:DECAXJNZD2LOOPD1POPAXPOPCXRETDALLYENDPDALLY1PROCNEAR;软件延时子程序,东西方