微机8086红绿灯系统设计详细设计_第1页
微机8086红绿灯系统设计详细设计_第2页
微机8086红绿灯系统设计详细设计_第3页
微机8086红绿灯系统设计详细设计_第4页
微机8086红绿灯系统设计详细设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、生物医学工程学院(医学信息专业)信息技术设计2报告课程设计名称十字路口交通灯控制系统设计摘 要十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯绿灯”转换间隔,并自动切换。但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受人为因素的影响,例如在救护车以及警车开过的情况下,交通灯应当为其开辟“绿色通道”,使其畅通无阻。本系统采用8253定时器计数,8255并口控制,的交通灯演示系统。设计一个用于十字路口的交通灯管理系统,分东、西、南、

2、北四个通行方向,东西和南北方向各有一组红、绿灯用于指挥交通;红、绿的持续时间分别为20s,周而复始。因为南北向和东西向交通灯是对称的,所以我们从南北向和东西向各取一个交通灯来进行控制。关键词:8086CPU 红绿灯控制系统 8255 8253 目录1.系统方案选择与论证41.1任务41.2要求41.3系统基本方案41.3.1各种方案选择及论证41.3.2系统的最终方案52.系统硬件设计62.1电路原理与电路图,实验系统接线图62.2主要芯片工作原理72.218255芯片的内部结构及引脚73系统软件设计103.1系统主程序的设计103.2延时子程序的设计113.3检测开关是否打开子程序124.调

3、试与分析125.收获与体会136参考资料14附录1(硬件电路原理图):14附录2(主要程序):151.系统方案选择与论证1.1任务设计并制作一个十字路口红绿灯控制系统。交通信号灯的控制:(1)通过8255并口来控制LED发光二极管的亮灭。(2)输出为0则亮,输出为1则灭。(3)利用8253定时来控制变换时间 。1.2要求该系统是某十字路口交通灯控制系统,分东、西、南、北四个通行方向,东西和南北方向各有一组红、绿灯用于指挥交通,红、绿的持续时间分别为20s,周而复始。利用8255,8253,等接口电路。红、绿灯可使用试验箱上的发光二极管进行模拟。系统设计时,利用8253芯片的一个计数器分别作为东

4、西和南北计时器,当计时20s时引起绿、红灯的变化。1.3系统基本方案1.3.1各种方案选择及论证1、方案选择根据题目要求可知,东西方向的绿灯与南北方向的红灯工作状态相同,而东西方向的红灯与南北方向的绿灯工作状态相同。两种工作状态之间切换的时间间隔为20秒。因此,正确设置两种工作状态之间的延时是解决问题的关键。而红绿灯的控制,可以简单的按照题目要求,由8255芯片的输出驱动LED灯即可实现。至于延时方法,存在两种实现方案可以选择。一种是使用软件延时,另一种是接入8253芯片,由8253芯片的计数器提供延时。第一种方案,使用硬件延时,利用的是8253芯片的计数功能。通过8253芯片计数器的级联,可

5、以方便的得出多种不同的延时值。由于是硬件延时,即使是移植到其他芯片,只需要保证接入8253芯片的时钟周期不变,程序几乎无需改动就可以改动。如果要更改延时时间,也可以很轻易地计算出新的计数值。第二种方案,使用软件延时,用汇编语言写一个不断循环的子程序。然后通过控制循环次数和循环时间来控制延时时间。这种方法的优点是不需要使用额外的硬件,再连线上比较简单。但是,如果使用软件延时,前提是必须知道系统的时钟周期,然后通过计算得出空指令执行的次数。因此软件延时需要依赖CPU芯片,程序移植到不同的芯片上或者延时时间改变都需要重新计算空指令执行的次数,不便于实际使用,而且延时不够准确。其次,使用8253芯片也

6、可以有几种不同的具体实现方案。方案1,使用方式3输出周期为20秒的方波,然后利用8253芯片的锁存功能将计数值锁存,然后通过不断查询的方法读取计数值,判断8253是否计数完毕。这个方案简单,但是由于实验箱上的提供的时钟周期都比较大,只用一个计数器无法实现,需要用两个计数器进行级联。在硬件上的连线比较复杂。方案2,使用方式3输出周期为40秒的方波,将计数器的输出连接到8255芯片,通过不断读取计数器的输出,一旦前后两次读取到的电平相反,则表明定时20秒时间到达。这个方案与方案1类似,需要用两个计数器进行级联。但是它比方案1简单之处在于判定方式比较简单。而且也比方案1准确。方案3,循环使用方式0,

7、将计数器的输入连接到8255芯片,由于8253芯片的计数器工作在方式0时输出一个负脉冲,即只有在计数时才输出低电平,因此可以通过检测计数器的输出知道计数是否结束。假设每一次循环计数器输出一个0.1秒的负脉冲,则每次检测到高电平,即计数结束后,重新对8253的计数器赋予初值,使其重新计数,循环200次的话,就可以得到200次*0.1秒/次=20秒的延时。方案4,方式3和方式0级联使用。首先令8253的计数器0工作在方式3,输出一个0.1秒的方波。将计数器0的输出方波连接到计数器1的CLK端,作为计数器1的时钟脉冲信号。然后令计数器1工作在方式0下,计数值为200,即可在计数器1的输出端得到一个2

8、0秒的负脉冲。将计数器1的输出端与8255芯片的端口相连,只要检测到计数器1输出高电平,则表示20秒延时到达。通过上述的分析,结合题目的要求和硬件的实际情况,决定使用8253芯片,而且选择方案3来实现20S的延时。1.3.2系统的最终方案通过并行接口芯片8255和8086计算机的硬件连接,以及通过8254延时的方法,来实现十字路口交通灯的模拟控制。南北向和东西向红绿灯接在8255的A口,PC0控制开关,PC7判断是否已经延时20s了。8086工作在最小模式, 8253用计数器0来计数,第0个通道的门控端接+5V,CLOCK0接实验箱上的CLK4(375KHz),8086通过检测PC7是否有高电

9、平来判断是否20S定时到。定时时间到了后,就对LED灯的状态进行翻转,东西方向亮红灯,南北方向亮绿灯。2.系统硬件设计2.1电路原理与电路图,实验系统接线图设计思路框图:接口8255CPU外设L1-L8发光二机管外设KK1-KK8开关(PA PB PC) L+5V2.2主要芯片工作原理2.218255芯片的内部结构及引脚8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种工作方式下工作:图2.1 8255引脚图方式0基本输入/输出方式方式1选通输入/输出方式方式2双向选通输入/输出方式8255引脚图如图3.2示,

10、各引脚功能如下。D7D0与CPU侧连接的八条双向数据线;WR(低电平有效)写输入信号;RD(低电平有效)读输入信号;CS(低电平有效)片选输入信号;A0、A1片内寄存器选择输入信号;PA7PA0A口外设双向数据线;PB7PB0B口外设双向数据线;PC7PC0C口外设双向数据线;RESET复位输入信号8255 工作方式控制字和C口按位置位/ 复位控制字格式如上图所示:8253 的基本功能(1)3个独立的16位计数器,最大计数范围为065535; (2)每个计数器均可以按二进制或二十进制计数; (3)计数器速率可达2MHz; (4)可编程6种不同的工作方式; (5)所有输入和输出都与TTL兼容。

11、8253具有较好的通用性和使用灵活性,几乎适合于任何一种微处理器组成的系统。 8253的内部结构图图7.1 8253的内部结构示意图8253的工作方式(1) 、方式0计数结束中断方式 (2)、方式1 可编程的单稳态触发器(3) 、方式2 比率发生器、分频器 图7.9(a) 方式5 正常计数(4) 、方式3 方波发生器 图7.6(a) 方式2 正常计数图7.7(a) 方式3 计数值为偶数时的波形(5) 、方式4 软件触发选通方式(6)、方式5 硬件触发选通方式 8253的控制字3系统软件设计3.1系统主程序的设计主程序中主要是通过初始化8255,然后将PA口设置成为输出口,将PA口与LED灯连接

12、起来。首先判断开关是否有打开,当开关没有打开的时候就在不停地等待开关打开。当开关打开后,就立刻进入赋值状态。即将PA口的输出为B。通过延时子程序,使这个状态保持20S,然后灯自动变成另外一个状态,即PA口的输出变成B。然后这样子不断地重复,使灯的状态在不停地变化。3.2延时子程序的设计为了追求定时的准确性,本程序放弃了软件延时的方法,改用8253定时。这样,就能够使定时更为准确,出现错误的机会也会更小了。由于实验箱上有4种时钟信号的频率,我选用了最小的那个(375KHz),同时我只用了一个计数器0,并让其工作在方式0中。用计数器0延时0.1S这样重复200次就能够准确实现延时20S的效果了。这

13、种做法就是简单,方便,软硬结合。对于硬件的要求和软件编程的要求都是比较低的。而且很容易检查出错误在哪里。3.3检测开关是否打开子程序该子程序的功能是检测开关是否打开了。如果开关打开了,则继续工作,如果开关没有打开,就将灯全部熄灭。并一直等待直到开关打开。本系统是用PC0读取开关的状态,并且用BL记录灯在熄灭之前的状态,只要开关一打开,就能够立刻恢复开关关闭前的状态。4.调试与分析刚开始设计这个系统的时候,只是单纯的想用一个延时子程序来实现20S的延时,从而实现老师题目的要求。但是后来发现,用软件延时的方式并不是很可靠。结合实验箱上的芯片,最后选择了用8253来进行延时。由于8253共有3个计数

14、器,而且每个计数器都有6种工作方式。因此刚开始的时候在选择用什么方式来进行延时确实花费了一定的时间。最终还是确定了选择只用一个计数器,并且是工作在方式0,然后用软件设置重复200次就能够非常简单的实现延时20S的效果了。虽然在动手开始写程序的时候已经尽量把思路理清,但是在写的过程中还是出现不少问题。(1)刚开始的时候弄错了开关的状态,导致程序执行后一直都在检测开关的状态,无法正常运行。后来看清楚了实验箱开关的状态,才让程序能够继续执行下去。(2)程序刚开始的时候能够实现对灯的亮灭的控制,但是灭灯要等20S后才能实现,达不到题目的要求。因此把检测开关状态改写成为了一个子程序,分别在程序一开始的时

15、候,还有延时的时候都分别调用检测子程序,这样子就能够实现了对LED灯亮灭的实时控制,从而达到了题目的要求。(3)在编程的时候一定要注意相关管脚对应的地址,不然即使你的程序是对的,在实验箱上调试的时候也有可能会出现错误。同时在调试程序之前一定要确保硬件设备的正确。5.收获与体会本次实验由我自己独自完成,在这个过程中使我受益匪浅。不仅训练了我查找资料的能力,更是一次很好考察所学的汇编语言知识和微机原理知识。通过此次课程设计的锻炼,自己的动手能力有了很大的提高,查找问题、解决问题的能力也有了相应的进步。在编程的中途也遇到了非常多自己当时无法解决的问题。但是经过了几个同学的帮助,就把自己找不到的错误找

16、出来了,可能这就是所谓的旁观者清吧。在进行软件设计的时候,一开始就已经能够很好的实现出来了。但是为了追求更好的效果,就在不停的对程序进行修改。总的来说,本次设计有苦也有甜。 设计思路是最重要的,只要你的设计思路是成功的,那你的设计已经成功了一半,因此我们应该在设计前做好充分的准备。同时在实践的过程中,一定不能半途而废,或者是中途改设计思路。因为这样不仅会浪费大量的时间与精力,还会让你自己没有了一往直前的勇气。因此,在做这些设计的时候一定需要耐心和勇气去克服在中途遇到的困难和阻力。同时熟练地掌握课本上的知识,这对试验中出现的问题进行分析解决也是相当重要的。 这次设计留给我印象最深的是要成功地完成

17、一个设计,必须要有耐心,更要有坚持的毅力。6参考资料1 微型计算机原理与接口技术 李伯成编 清华大学出版社 2008.92 EL-MUT-III型微机实验系统说明书附录1(硬件电路原理图):附录2(主要程序):assume cs:code code segment public org 100h start:mov dx,04a6h ;8255的状态控制字mov al,b ;8255的初始化out dx,al mov dx,04a0h ;8255的A口初始化,将所有灯都灭了mov al,bout dx,almov bl,b ;东西绿灯亮,南北红灯亮 call jiance again:mov

18、dx,04a0h ;8255的A口mov al,blout dx,al call yanshi ;调用延时子程序call jiance ;检测开关是否打开;mov dx,04a0h not bl ;mov al,bl ;东西红灯亮,南北绿灯亮;out dx,al;call jiance ;检测开关是否打开;call yanshi ;调用延时子程jmp again ;重复yanshi :mov dx,04b6h ;延时子程序mov al,b out dx,al mov cx,200 ;重复200次,共延时20s chong:mov ax,37500 ;计数初值mov dx,04b0hout dx,al mov al,ahout dx,almov dx,0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论