十字路口交通灯控制课程设计_第1页
十字路口交通灯控制课程设计_第2页
十字路口交通灯控制课程设计_第3页
十字路口交通灯控制课程设计_第4页
十字路口交通灯控制课程设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、十字路口交通灯控制课程设计摘要:十字路口交通灯实现了南北和东西方向的车辆控制,本次课程设计主要实现了并行接口8255传送信息与发光二级管,8253和8259的组合搭配,实现了倒计时中断,最终在LED管上每秒钟变化一次,以模拟实现红绿灯的功能。关键字:中断,栈,保护现场,接口,端口,控制,数据,状态,地址,中断矢量,控制字,方式字接口片实现十字路口交通灯8259AIR0 INT8086CPUINTR十字路口交通灯系统功能简介8259AIR0 INT8086CPUINTR本次设计主要将8259A,8253,8355三块芯片实现搭配组合,实现十字路口交通灯功能。总的实验线路接线为下图210-218H

2、5VLED显示器 CS 红绿灯74SLS27374SLS273黄灯 8255PB7PB4PC7PC0CS200H 207H 8253-5CS CLK0 OUT0210-218H5VLED显示器 CS 红绿灯74SLS27374SLS273黄灯 8255PB7PB4PC7PC0CS200H 207H 8253-5CS CLK0 OUT0 CLK1 OUT1GATE0GATE1218H21F218H21F在南北东西四个方向各有红、绿、黄三盏交通信号灯,初始倒记时间初值分别为30S,25S和5S,;将、和、路口(其中1、3是南北方向,2、4是东西方向)的通行或禁止通行的时间以倒计数的方式显示在位LE

3、D数码管显示器上。其中从左到右方向上的第一二块数码管显示的是黄灯的倒记时时间变化,第三四块数码管显示的是红灯的倒记时时间变化,第五六块数码管显示的是绿灯的倒记时时间变化。三种信号灯的显示顺序是 红绿黄,其中红灯由30秒开始倒记时,当倒记时到5秒时,另一方向的绿灯变为黄灯显示,绿灯的倒计时是和红灯同步的,绿灯的保持时间是25秒,当绿灯LED变化数为00时,代替绿灯显示的黄灯和另一方向剩下的5秒红灯同步倒计时,当红灯和黄灯的LED管显示数都为00时,两个方向的红绿信号灯显示互换,红绿黄三个信号灯的LED显示值被重新置值。系统硬件功能简述CPU的功能:所谓微处理器,就是运算器和控制器的集成,它是微处

4、理计算机的“心脏”,CPU的任务是执行存放在存储器里的指令序列,为此,除要完成算术逻辑操作外,还需要担负CPU和存储器以及I/O之间的数据传送任务。CPU内部结构大都由算术逻辑单元ALU,寄存器阵列RA,控制单元,总线和总线缓冲器4个部分组成。其中算术逻辑单元ALU的主要功能是进行算术和逻辑运算。目前,微处理器实现算术逻辑运算的途径大致有三种:1 .硬件实现基本运算功能:包括加、减、求补、逻辑非、逻辑或、逻辑与、逻辑异或、移位、BCD码运算的十进制调整等。2.乘除运算:在8位CPU中,乘除运算一般是由软件编程实现的,既由加、减、移位功能组合完成;在16位以上的CPU中专门设有乘除指令,由硬件完

5、成。3.浮点运算:在8位或16位的CPU中,只能做定点数运算,浮点数分成阶码和尾数两个定点数,用软件实现浮点运算;而高性能的CPU内部含有浮点处理器,设有浮点运算指令,由硬件来实现浮点运算,大大提高浮点运算的速度。CPU中的控制器是微型计算机的指挥中心,他的功能是将预先存放在内存中的指令逐条的取出,并分析和执行指令。控制器的组成有以下几部分:1指令部件:由程序计数器PC、指令寄存器IR、指令译码器ID组成。2时序部件:时序部件就是用来产生计算机各部件所需的定时信号,它一般由时钟系统,时钟脉冲分配器等部件组成。3微操作控制部件:是产生计算机各部件所需的时钟控制信号。(二).各硬件芯片功能在谈到各

6、接口片功能时,不得不先提出中断的概念。中断分为两大类:硬件中断和软件中断。所谓硬件中断是指CPU在执行程序的过程中,遇到了某种随即出现的外设请求,暂停正在执行的程序而转去执行为外设服务的程序;服务完毕,CPU再返回到暂停处继续执行原来的程序。有随机性。软件中断是指CPU执行某写预先设置的指令或指令执行的结果使标志寄存器中某个标志置“1”而引发的中断。无随机性。8086的中断系统采用中断矢量结构。当CPU收到中断类型码后,便可通过查表得到中断服务程序的首地址(中断矢量),并自动进入和执行相应的中断服务程序。例如程序中的这段代码:mov ax,3508h;中断类型码为08H,35号DOS调用int

7、 21hpush es;一系列的保护现场push bx push ds mov dx,offset intp;取中断子程序的偏移地址mov ax,seg intp;取中断子程序的段地址mov ds,axmov ax,2508h ; 赋新的中断地址,以便调用中断int 21h当CPU获得中断矢量后,既进入中断处理过程,所有的中断处理子程序都有相同的结构模式:(1)保护现场,一开始必须通过一系列堆栈指令来进一步保护中断时的现场,既保护CPU各寄存器的值。(2)开中断,在一般情况下,应该用指令设置中断允许标志IF=1来开放中断,以允许级别较高的中断请求进入,从而实现中断请求的嵌套。(3)中断处理,这

8、是中断处理子程序的主要部分。 (4)关中断,目的是保证在恢复现场时不被新的中断打扰。(5)在非自动结束方式,给中断控制器8259A发中断结束命令OCW2,使当前正在处理的中断在服务标志清零,否则同级或低级中断请求被屏蔽。(6)恢复现场,中断处理模块后,是一系列的弹出堆栈指令,使得各寄存器恢复进入中断处理时的值。(7)中断返回指令IRET,中断返回指令的执行会使堆栈中保存的断点值和标志值分别装入IP,CS和标志寄存器。 中断处理子程序通常都是常驻内存的,既系统一启动,就完成中断处理子程序的装配。下面就是本次课程设计所用到接口片的功能和性质。 eq oac(,1)8259A芯片功能: 8259A是

9、由中断请求寄存器(IRR)、优先级裁决器(TR)、中断服务寄存器(ISR)、数据总线缓冲器、读写电路、级联缓冲/比较器、控制逻辑电路和两个寄存器组、初始化命令寄存器组和操作命令寄存器组成。工作原理:当外部中断请求信号时,由8259A的中断请求寄存器(IRR)IR0IR7来接受中断请求信号,IR0IR7中某一位为“1”说明该位有中断请求。控制逻辑电路根据中断屏蔽寄存器IMR中的对应位决定是否让此请求通过。当IMR对应位为“0”,则允许该位中断请求进入中断优先级裁决器进行裁决,例如本次设计中的程序段in al,21h;读入8259A的奇口and al,0fbh;这条语句就是为了开IRQ2的中断ou

10、t 21h,al;写入屏蔽寄存器(IMR)写入ICW1级连方式写入ICW2写入ICW3写入ICW4将新进入的中断请求和当前正在处理的中断请求进行比较,从而决定哪个优先级高。当前中断服务寄存器ISR就是用来存放当前正在处理的中断请求。如果判断出新进入的中断请求具有足够高的优先级,那么,中断寄存器将通过逻辑电路使8259A的输出端INT为1,从而向CPU发一个中断请求信号。如果CPU的中断允许标志IF为1时,也就是程序中的STI指令,在CPU执行完当前指令后,想8259A的INTA端发出中断应答信号。该信号是往8259A送回两个负脉冲。当第一个负脉冲到达时,首先解除IRR的琐存功能,使IR0IR7

11、不接收中断请求信号,直到第二个负脉冲到来时恢复琐存功能,使当前中断服务寄存器ISR中的相应位置“1”,说明当前正在为该中断进行服务,将IRR寄存器中的相应位清“0”。当第二个负脉冲到达时,8259A将中断类型寄存器的内容ICW2送数据总线D7 D0,既为中断类型码。如果ICW4(方式控制字)中的中断自动结束位为写入ICW1级连方式写入ICW2写入ICW3写入ICW48259A的编程:在8259A内部有两组命令寄存器,一组用于存放初始化命令字ICW,另一组用于存放操作命令字OCW。ICW用于设定8259A的工作方式,在初始化编程中写入;OCW用于中断操作管理,设置灵活,视需要写入。由于8259A

12、是一个可编程芯片,在使用时,需要对它的工作方式进行设置,初始化编程主要完成ICW1ICW4的设置。既设置芯片的连接方式,设置中断请求的触发方式,设置中断请求源的中断类型号,设置中断管理方式。由于ICW1ICW4,四个命令字使用两个端口地址,既ICW1用A0=0的端口地址,ICW2ICW4共用一个地址,使用A0=1的端口地址,因此,在写入命令字时必须按下面8258A流程图的顺序写入。 eq oac(,2)定时器/记数器8253 8253-5CS 8253-5CS CLK0 OUT0 CLK1 OUT1GATE0GATE1Q4 Q3 2CP 1CP74LS393 8MHz的振荡器CLK8259AI

13、R2 INT8086CPUINTR5VV5V200207HH250KHz8MHz 8253-5CS CLK0 OUT0 CLK1 OUT1GATE0GATE1Q4 Q3 2CP 1CP74LS393 8MHz的振荡器CLK可编程中断控制器采用PC机内部的8259A,它是和可编程计数器/定时期8253组成一个频率发生器,将8253的OUT1输出端的输出信号送PC总线接口IRQ2端,将中断请求信号送入机内8259A,中断处理过程由机内8259A来处理。在计算机应用中,常需要为处理器和外部设备提供时间基准或对外部事件进行记数。8253具有三个独立的16位记数器,它可用程序设置成很多种方式,按十进制B

14、CD码或二进制数进行减法计数。8253能工作于定时方式,OUT脚产生周期性的输出波形,例如作为可编程方波频率发生器,分频器,实时时钟等,也可工作于计数器方式,OUT脚产生非周期性的输出波形。8253引脚中,D7D0为八位双向数据线,WR为写输入信号,CS为片选输入信号,A1,A0为片内内寄存器的地址输入信号。信号线除CS外,都同系统总线直接相连。在三个计数器中各自有3条信号线:计数信号输入CLK用于输入计时基准脉冲或计数脉冲;输出信号OUT以相应的输出脉冲波形来指示计数器的状态;门控输入GATE用于控制计数器的计数操作,以使计数器和计测对象同步。每个计数器都有三个寄存器:一个是6位的控制寄存器

15、初始化时,将控制字寄存器中低6位写入该寄存器,从而控制计数器的工作方式;另一个是计数初值寄存器初始化时写入该计数器的初始值;还有一个是减一计数寄存器计数开始时,将计数初值从初值寄存器送入减1计数,当计数器输入端CLK输入一个计数脉冲后,减1计数寄存器内容减1;当减1计数寄存器内容发生变化时,OUT脚输出相应信号反映的当前的计数状态。8253的读/写控制逻辑接受系统总线的输入信号,当CS端接收到低电平时,8253根据WR,RD端的电平,控制本器件接受CPU的读/写访问,双向三态的8位数据总线缓冲器由此接收来自总线的数据或发送数据到总线上,可以参照下表来看:8253内部寄存器的读写功能CS(非)R

16、D(非)WR(非)A1A0功能01000写计数器001001写计数器101010写计数器201011写控制字寄存器00100写计数器000101写计数器100110写计数器200111无操作这些访问一是写8253工作方式的控制字,二是装入各计数器的初始值,三是读出各计数器的当前值。其中 BCD:计数值格式选择位。当BCD=1时,计数常数为二-十进制数即BCD码,最大计数值为9999+1,既为0000,表示10*10*10*10。当BCD=0时,计数常数为二进制数,最大计数值为FFFFH+1,即为0000h,表示65536。M2,M1,M0:工作方式选择位。因为8中编码对应六中工作方式,因此方式

17、2和方式3的M2为任意值。RW1,RW0:渎/写计数器控制位,计数值的写入或读出可按字节或字进行操作,RW1,RW0。两位编码组合用来控制写入和读出计数值的顺序与字节数,写入计数值是按照所确定的计数常数的大小和格式来选择字节写入或字写入,按字写入时,分成两不完成,既写入低8位,后写入高8位。若要读取当前计数值,许先发锁存命令,后执行读出操作,当8253接受到锁存命令后,将当前的计数值锁存到计数锁存其中,供CPU读取。8253的控制字格式: D7D6D5D4D3D2D1D0SC1SC0RL1RLOM2M1MOBCD01二进制计数BCD码计数Rl1Rl000011011M2M1M000000110

18、111001018253的工作方式字:8253有六种工作方式字:方式0计数结束中断,在写入方式0控制字(CW)之后,输出端OUT初始电平为低电平,在写入初始值N之后的下一个计数脉冲信号CLK到来(下降沿)且门控信号GATE为高电平时开始启动计数,当计数值减为”0”方式1单拍负脉冲,方式1是一种硬件触发启动,无自动重复计数方式.当控制字写入之后,OUT初始点平为高电平,在写入计数初值N之后,并不马上开始计数,启动计数是由门控信号GATE的上跳沿触发的,一旦开始计数,OUT由高变低,直到计数到”0”方式2频率发生器,当写入控制字后,OUT变为高电平,在计数初值N写入后的下一个CLK脉冲的下降沿到来

19、求GATE为高电平时开始计数,当计数值减到”1”时,OUT由高变低,计数只值减到”0方式3方波发生器,当计数初值N为偶数时,输出对称方波,正,负脉冲的宽度都为N/2个TCLK;当为奇数时,输出不对称波形,正脉冲的宽度为(N+1)/2个TCLK,负脉冲宽度为(N-1)/2个TCLK.本次设计正是利用了方波发生器. mov al,36h ;计数器0,工作方式3,2进制减数,16位out 43h,al ;写到8253的控制口mov ax,11930 ;将计数值写到计数0口的低八位out 40h,almov al,ah;将计数值写到计数器0的高八位out 40h,al方式4软件触发计数,写入控制字之后

20、,OUT变为高电平,若GATE信号为高电平,在写入计数初值N后的下一个CLK的下降沿开始启动减”1”计数,计数值减为”0方式5硬件触发计数,写入控制字后,OUT变为高电平,写入计数初值N后并不马上开始计数,只有GATE信号出现由低到高的跳变时,才开始减”1”计数;当计数值减到”0在本次设计中,8259的中断,完全是靠8253的出发来实现的,实验中的接线方法如下图: eq oac(,3)并行接口8255芯片 在实验中灯是靠8255来传输信息的,在实验中的接线图如下 并行通信是计算机与I/O设备进行数据传送的一种方式。其特点是:传送的数据以字节或字为单位,每个数据位占用一根数据传输线,各数据位同时

21、发送或接受,传输效率高,但传输线的成本高,因此,这种传输方式合适于数据传送距离较近的系统中。 8255各部分功能以下:数据总线缓冲器:为三态,双向八位寄存器。数据线D7D0与系统数据总线相连,用于CPU与8255之间传递信息。CPU通过数据总线缓冲器向8255写入数据和命令或读取数据。读/写控制逻辑用来接收来自系统总县的读写控制信号和端口选择信号,控制8255内部的读,写操作。与读,写控制逻辑有关的引脚信号有:8255的工作方式有三种:方式0基本输入/输出方式0是8255的基本的I/O传送方式,A、B、C三个端口都可以工作在方式0。A口和B口为两个独立的8位I/O口,C口可分为两个4位I/O口

22、,即PC7PC4和PC3PC0可以分别设置成输入或输出。方式0适用与无条件数据传送或查询方式的数据传送,可利用C口的某一位做为查询方式的数据传送,可利用C口的某一位作为查询状态位。方式1选通输入/输出方式1是8255需要联络信号的一种单方向数据传送方式。适用于中断产讯方式传送数据。方式1分为A组控制和B组控制两部分,在A组控制中,A口作为8位数据端口,C口的高4位作为联络信号线。在B组控制中,B口作为8位数据端口,C口的低4位作为联络信号线,由于C口作为联络控制线使用,因此只允许A口和B口工作在方式1。方式2双向选通输入输出在方式1中,只允许A口或B口设定为带选通信号的单方向输入或输出数据传送

23、方式。用C口的PC7PC3作为双向数据传送的联络控制信号线。8255A的编程(一)控制字格式8255A的控制字有两种:工作方式控制字该字用于设置各端口的工作方式和数据传送的方向。其格式如下图 D7D6D5D4D3D2D1D0D7:方式字/复位字选择位,“1”时为8255A方式控制字,“0”时为PC口的置/复位控制字。当D7为“D6D5:A组方式选择位。“00”时为方式0,“01”时为方式1,“D2:B组方式选择位。“0”时为方式0,“1D4、D3、D1、D0:分别为PA口、PC7PC、PB口、PC3PC0输入/输出方式选择位。“0”为输出,“1”2PC口的置/复位控制字如前所述,D7=“0”时

24、,其作为PC口的置/复位字;由于PC口共有8跟输出线,故由D3D1为“001”,则对PC1操作;而对于其做任何操作则由D0来决定,如D0=“1”,则对其做置位操作(PC1=1),如D0=“08255的初始化编程:mov dx,21bh ;给8255的控制口赋端口号 mov al,82h ;B口为输入,A,C口为输出 out dx,al;工作在方式0 mov dx,219h;端口B地址送DX in al,dx;读取B口数据 mov pb,al;存如PB单元中 mov dx,21bh;给8255的控制口赋端口号 mov al,80h ;置方式选择控制子,三个口均工作在方式0 out dx,al;三

25、个口均为输出口mov dx,219h;端口B地址送DXmov al,pb;将B口的内容送ALor al,0f0h;置B口最高4位为1,熄灭黄灯out dx,almov dx,21ah;端口C地址送DXmov al,0f0h;使PC0PC3为“0”out dx,al;使PC4PC7为“0” eq oac(,4)LED管实验中LED管的接线如下图在本次实验用,LED管的显示是采用的共阴级接线法,七段LED字型码的格式如下:dpgfedCba显示的字型代码与十进制的对应关系是01234567893FH06H5BH4FH66H6DH7DH07H7FH6FHLED管的显示分为静态和动态显示两种形式静态显

26、示,就是当显示器显示某一个字符时,相应的发光二级管恒定的导通截止。静态显示的优点是显示稳定,在发光二极管导通电流一定的情况下显示器的亮度大,系统在运行过程中,仅在需要更新显示内容时CPU才执行一次显示更新程序,这样大大节俭CPU的时间,提高CPU的效率;其缺点是位数较多时显示口随之增加。2.动态显示,就是一位一位的轮流点亮各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。本次设计采用的正是动态显示的方法,程序如下:en: lea si,buffer;使si指向buffer表的首

27、地址 lea bx,segtab mov cl,01h;cl是控制数字在led管中显示的位置ab1: mov al,si;查表来显示buffer指定的类容 xlat mov dx,211h;211是led的接口地址,显示指定的值 out dx,al mov al,cl ;指定第几个led管显示 dec dx out dx,al push cx mov cx,6000h;延时ab2: loop ab2 pop cx inc si;buffer的指针后移 shl cl,1 ;控制数字在led管中显示的位置,通过左移变化 cmp cl,40h;一共有六个led,说明都显示过了 jnz ab1 mov

28、 al,0 out dx,al课程设计程序与流程由于在前面介绍了各个芯片的初始化程序,应此下面就不给出同样的程序,下面主要是流程图以及倒计时功能程序。首先给出的是主程序,在一系列初始化之后,将二级管显示为13绿灯亮,24红灯亮,并切设置标志flag为01h,然后再等待中断的调用。由于主程序中的各个初始化都写过,则主程序没有需要判断。中断子程序:如果是的话,则进行红变绿灯的过程如果是的话,则进行红变绿灯的过程如果是的话,则进行绿灯变黄灯的过程如果是的话,则进行黄灯变红灯的过程保户现场判断flag=01Flag=02判断flag=02Flag=03判断flag=03Flag=01发中断结束命令恢复

29、现场中断返回调用LED动态显示程序主程序框图:开始程序初始化显示提示信息写控制字,使PB口为输入,工作在方式0写控制字,三个端口均工作在方式0,且为输出端口1,3路口绿灯亮,同时2,4路口红灯亮,FLAG=01开中断延时30秒。 N返回 有按键吗? 返回 Y 对与主程序而言,中断程序主要显现LED变化以及LED的刷新显示 子程序的流程图分为几个部分:它主要是(1)红灯绿灯;(2)绿灯黄灯;(3)黄灯红灯其中红灯变绿灯的程序为 loop0:cmp flag,01h;判断是否红跳绿jnz loop1;不是则转到绿跳黄cmp buffer+2,0;判断红灯最高位是否0jz ta;是则转TAcmp b

30、uffer+3,5;判断红灯低位是否5jnz tb;不是转TBdec buffer+4;当红灯最高位不为0,低位为5时mov buffer+5,9;使绿灯高位减一,低位置9dec buffer+3;红灯低位减一jmp en;显示刷新tb: cmp buffer+3,0;当红灯高位不是0,低位不是5 时判断 红低是否0jnz tc;不是0,则转TCdec buffer+2;是的话,红高减1,低置九mov buffer+3,9;dec buffer+5;绿低减1jmp en;显示刷新tc:dec buffer+3;dec buffer+5;jmp en;ta:cmp buffer+3,5;如果说,

31、红高是0,则比较红低是否5jge m1;如果=5,转m1cmp buffer+3,0;当红低小与5时,判断是否=0jz m3;如果=0,转m3dec buffer+3;如果/=0,黄灯,红灯减1dec buffer+1jmp enm1:je m2;如果红低=5,转m2dec buffer+3;否则红灯,黄灯减一dec buffer+1jmp enm2:dec buffer+3;红,黄灯减一dec buffer+1mov al,11001111b;绿灯变黄灯,红灯保持不变mov dx,21ahout dx,almov al,00111111bmov dx,219hout dx,alm3:mov

32、buffer+2,3;当红低5,且=5时mov buffer+3,0;LED总复位,红边绿,黄灭mov buffer,0mov buffer+1,5mov buffer+5,5mov buffer+4,2mov al,00111100bmov dx,21ahout dx,almov al,0ffhmov dx,219hout dx,almov flag,02hjmp loop1;红灯转绿灯实现,跳到绿灯转黄灯的程序绿灯转黄灯程序loop1:cmp flag,02hjnz loop2cmp buffer+4,0;比较绿高是否0jnz tf;不是0,跳tfcmp buffer+5,0;当绿高为0,比较绿低是否0jnz tg;当绿高为0,绿低不是

温馨提示

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

评论

0/150

提交评论