红绿灯控制系统设n计.doc

上传人:啊飒飒 文档编号:11611277 上传时间:2021-08-26 格式:DOC 页数:28 大小:217KB
返回 下载 相关 举报
红绿灯控制系统设n计.doc_第1页
第1页 / 共28页
红绿灯控制系统设n计.doc_第2页
第2页 / 共28页
红绿灯控制系统设n计.doc_第3页
第3页 / 共28页
红绿灯控制系统设n计.doc_第4页
第4页 / 共28页
红绿灯控制系统设n计.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《红绿灯控制系统设n计.doc》由会员分享,可在线阅读,更多相关《红绿灯控制系统设n计.doc(28页珍藏版)》请在三一文库上搜索。

1、 红绿灯控制系统的设计随着城市人口的快速增长和机动车数量的大量增加,城市交通灯作为缓解交通压力、提高道路通行效率的重要手段,其作用越来越重要。因此,如何改进交通灯的设计,使其更好的适应城市交通的发展也成为一个重要课题。红绿灯控制系统是利用8253A定时/计数器芯片的定时功能,向8259A中断控制器芯片发出定时中断请求,驱动8255A可编程并行接口芯片改变路口的LED灯的亮灭。系统采用DVCC8086-JHN微机原理与接口技术实验箱作为测试与运行的平台,8086汇编语言作为编程语言,并用MASM5.0作为汇编语言开发环境。一、十字路口基本情况分析图1-1是一个典型的十字路口示意图。分别用1、2、

2、3、4表明东、南、西和北四个流向的主车道,每个主车道置有一个交通灯,用于指示对面车辆的左转、右转和直行。比如,1号路口的左转灯亮时,即表示对面3号路口的车可以向左转行驶。每个路口的情况都不尽相同,要根据具体的情况来设置各个方向的放行时间。假设,1、3方向是主干道,车流量比较大,可以将1、3路口的直行灯亮的时间设得比较长;而2、4路口是一般道路,那么2、4路口直行灯亮的时间可以设得短一点。左转灯和右转灯放行的时间一般应比直行灯放行的时间要短。通常情况下,主干道直行时间应在40-60秒左右;左转和右转通行时间应在15-30秒之间。每个路口应设置时间指示灯,用来显示剩余的通行时间,并在时间快用尽时,

3、交通灯闪烁一定的次数,用来提醒行人。完成一个循环应在2分钟以内,以免引起车辆等待过长的时间。图1-1 十字路口示意图二、交通灯状态转换分析合理的设置每个路口、每个方向的交通灯的通行时间,对车辆能否及时疏散,有着决定性的作用。在本系统中,路口共设有四个状态,分别用来表示不同时间路口的通行状况。状态1的时候,2、4两个路口的直行灯亮,东西方向行驶的车辆通行45秒。2、4方向步行的行人,也可以同时通过路口。当通行时间快结束的时候,LED灯会闪烁,提醒车辆和行人通行时间快到了。状态2的时候,1、3两个路口左转灯亮,2、4两个路口右转灯亮15秒。在本状态的时候,四个路口的车辆可以同时进行疏散,并且不发生

4、冲突,大大地加快了车辆通行的速度。这样的设置,在南京市新街口的十字路口有类似这样的设置。通过在十字路口中间设置相应的行车线,行人也可以和车辆同时地经过路口。当通行时间快结束的时候,LED灯会闪烁,提示通行时间即将结束。类似于状态2,状态3的时候,1、3两个路口右转灯亮,2、4两个路口左转灯亮15秒。通过在十字路口中间设置相应的行车线,行人也可以和车辆同时地经过路口。当通行时间快结束的时候,LED灯会闪烁,提醒车辆和行人注意安全。类似于状态1,状态4 的时候,1、3两个路口的直行灯亮,东西方向行驶的车辆通行45秒。1、3方向步行的行人,也可以同时通过路口。完成四个状态的一次循环需要120秒,完成

5、了在适当的时间限度内,有效的疏散较大的通行量的目的。整个状态转换的过程见表1-1。表1-1 路口四个状态和相互转换过程每个路口灯的点亮情况通行时间路口1路口2路口3路口4左右人行状态1(ZT1)1.1直行直行40s20s40s1.2右转右转 直行右转右转 直行20s状态2(ZT2)左转右转左转右转15s状态3(ZT3)右转左转右转左转15s状态4(ZT4)4.1直行直行50s20s50s4.2右转 直行右转右转 直行右转30s三、硬件功能分析18253A定时/计数器芯片8253A定时/计数器具有定时、计数双功能。它具有三个相同且相互独立的16位减法计数器,分别称为计数器0、计数器1和计数器2。

6、每个计数器计数频率为02MHZ。其内部数据总线缓冲器为双向三态,故可直接连在系统数据总线上,通过CPU写入计数初值,也可由CPU读出计数当前值。读写控制逻辑,当选中该芯片时,根据读写命令和送来的地址信息控制整个芯片工作。其工作方式通过控制字确定。控制字寄存器用于接收数据总线缓冲器的信息。当写入控制字时,控制计数器的工作方式;当写入数据时则装入计数初值。控制寄存器为8位,只能写入不能读出。8253A内部结构见图1-2。当8253A执行计数功能时,计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK脉冲对计数值进行减1计数。每来一个脉冲减1,当计数值减为0时,由OUT端输出一个标志信号。

7、当8253A执行定时功能时,计数器装入初值后,当GATE为高电平时,由CLK脉冲触发开始自动计数。当计数到零时,发计数结束定时信号。8253A可以工作在方式0到方式5,常用的有方式2频率发生器方式和方式3方波发生器方式。在方式2时,当初值装入后,OUT变为高;计数结束,OUT变为低。该方式下如果计数未结束,但GATE为低时,立即停止计数,将OUT变为高;当GATE再变高时,便启动一次新的计数周期。在方式3时,当装入初值后,在GATE上升沿启动计数,OUT输出高电平;当计数完成一半时,OUT输出低电平。在本系统中,8253A工作于方式3方波发生器方式。计数器0CLK0GATE0OUT0计数器1C

8、LK1GATE1OUT1计数器2CLK2GATE2OUT2数据总线缓冲器读/写逻辑控制字寄存器D0-D7-RD-WRA0A1-CS图1-2 8253A内部结构图28259A中断控制器芯片8259A是专为控制优先级中断而设计的芯片。它将中断源按优先级排队、辨认中断源和提供中断向量的电路集成于一体,只要用软件对它进行编程,就可以管理8级中断。8259A的内部结构见图1-3。它由中断请求寄存器(IRR)、优先级分析器、中断服务寄存器(ISR)、中断屏蔽寄存器(IMR)、数据总线缓冲器、读写控制电路、级联缓冲器和比较器组成。1控制逻辑服务寄存器优先级分析器中断请求寄存器中断屏蔽寄存器IMR内部总线IR

9、0IR1IR2IR3IR4IR5IR6IR7数据总线控制器读写电路级联缓冲器/比较器CAS0CAS1CAS2D0-D7-RD-WRA0-CSSP/-ENINT-INTA图1-3 8259A的内部结构对8259A编程和初始化的时候,首先要写初始化命令字ICW1-ICW4。写ICW1以确定中断请求信号类型,清除中断屏蔽寄存器,进行中断优先级排队和确定系统是用单片还是多片。写ICW2用来定义中断向量的高五位类型码。ICW3可以定义主片8259A中断请求线上IR0-IR7有无级联的8259A从片。写ICW4用来定义8259A工作时用8085模式还是8088模式,以及中断服务寄存器复位方式等。初始化命令

10、字写完以后,要写8259A的控制命令字,它包括OCW1-OCW3。写OCW1可以设置或清除对中断源的屏蔽。写OCW2设置优先级是否进行循环、循环的方式和中断结束的方式。8259A复位时自动设置IR0优先权最高,IR7优先权最低。写OCW3用来设置查询方式和特殊屏蔽方式,并可以读取8259A中断寄存器的当前状态。在本系统中,使用8259A的循环等待中断工作方式。38255A可编程并行接口芯片8255A是一种可编程的芯片,它采用双列直插封装,用5V电源供电。内部有3个8位的I/0端口:A口、B口和C口。这三个端口也可以分为各有12位的两组:A组和B组。A组包含A口8位和C口的高四位,B组包含B口8

11、位和C口的低四位;A组控制和B组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内部寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于8255A数据总线缓冲器是双向三态8位驱动器,因此可以直接和8088系统数据总线相连。8255A的内部逻辑结构见图1-4。A组端口A组端口C高4位A组端口C低4位B组端口A组控制B组控制数据总线缓冲器读写控制逻辑双向数据总线D0-D7I/0PA7-PA0I/0PC7-PC0I/0PC0-PC20I/0PB7-PB0-CSCPU接口内部逻辑外设接口-RD-WRA1 A0RESET图1-4 8255A的内部结构8255A有三种工作方式:方式0、方式1和

12、方式2。它通过对控制寄存器写入不同的方式选择控制字来决定其三种不同的工作方式。方式0是基本输入输出方式。该方式下的A口8位和B口8位可以由输入的控制字决定为输入或输出,C口分成高4位(PC4-PC7)和低4位(PC0-PC3)两组,也有控制字决定其输入或输出。需要注意的是,该方式下,只能将C口其中一组的四位全部置为输入或输出。方式1选通输入输出方式,又叫单向输入输出方式。它分为A、B两组,A组由数据口A和控制口C的高4位组成,B组由数据口B和控制口C的低4位组成。数据口的输入输出都是锁存的,与方式0不同,由控制字来决定它是作为输入还是输出。C口的相应位用于寄存数据传送中所需的状态信号和控制信息

13、。方式2为双向输入输出方式。本方式只有A组可以使用。此时A口为输入输出双向口,C口中的5位(PC3-PC7)作为A口的控制位。在本系统中,8255A的三个端口均工作于方式0,全部为输出口。四、系统设计(一)硬件设计1电路分析本系统要实现的功能是模拟十字路口红绿灯的工作状况。按照预先设定并优化的交通灯规则,控制LED指示灯的亮灭,同时在实验箱的数码管显示屏上显示剩余的时间。当时间递减到0的时候,改变LED灯的状态,并刷新显示屏显示的时间。为了实现以上功能需求,本系统需要12个LED指示灯,来分别代表四个路口的直行、左转和右转灯;两个双位的数码管显示屏,用来显示1、3路口和2、4路口剩余的时间。为

14、了实时地更新数码管显示屏上的数字,需要使用8255A可编程芯片来即时地改变显示屏每个笔划的电平高低,从而准确地将需要显示的数字显示在数码管显示屏上。由于交通灯需要按秒进行计数,所以需要一个均匀地时钟发生器。8253A芯片是个功能丰富、使用简单的定时/计数器。它可以根据需要设置不同的显示初值,从而产生所需频率的时钟脉冲,为系统提供计时和驱动其他事件的发生。8259A中断控制器芯片可以在收到8253A发出的时钟脉冲时,产生定时的中断,在中断服务程序中,更新显示缓冲区,并调用8255A芯片来执行相关程序,从而更新LED灯和数码管显示屏。本系统使用集成的电路和实验环境,以方便进行电路的连接和测试,同时

15、减少由于电路的复杂性而产生的错误。2电路连接设计本系统所使用到的硬件包括8253A芯片、8259A芯片、8255A芯片、LED指示灯和数码管显示屏。在电路连接的时候,将8255A芯片的PB4-PB7连接至四个路口的直行灯, PC0-PC3连接至四个路口的右转灯,PC4-PC7连接至四个路口的左转灯。通过改变8255A的PB口和PC口的值来实时地控制每个LED灯的亮灭,从而改变十字路口的交通状态。将8255A的CS插孔CS-8255接译码输出Y7插孔。将8253A的T2CLK插孔连接至1MHZ的分频输出插孔。分频输出插孔所输出的频率是将系统的主频分解为一定的频率,以供其他硬件或者软件使用。825

16、3A从分频插孔得到1MHZ的固定频率,再根据芯片内部设定的计数初值,从而产生需要频率的时钟脉冲,由T2OUT口输出,供其他芯片使用。将8253A的T2OUT插孔连接至8259A的IRQ3插孔上。8259A的IRQ3中断口每隔固定的时间便会收到8253A发送过来的时钟脉冲,作为中断源来执行中断服务程序。在中断服务程序中,完成更新数码管显示值和改变交通灯状态的功能。硬件的连接见图2-1和图2-2。D0 T0OUTD1 GATE0D2 T0CLKD3 GATE2D4 T2OUTD5 T2CLKD6D7 8253A OUT1 CS RD WRGATE2 A0CLK1 A1D0D1D2D3D4D5D6D

17、7VCCTCLK1T0OUTVCCT0CLKCKVCCUB318253TOUT1CS3IORIOWADD0ADD11MHZIR0 D0IR1 D1IR2 D2IR3 D3IR4 D4IR5 8259A D5IR6 D6IR7 D7 A0SP/EN WR RDCS INT INTAADD0IOWIORINTRINTACSVCC图2-1 系统电路图8253A和8259A的连接图RD PB0 PB1WR PB2A0 PB3A1 PB4RESET PB5CS PB6 PB78255A PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7VCCY7L3(控制左转灯)L6L9L12L1(控制右转

18、灯)L4L7L10L2(控制直行灯)L5L8L11CS_8255图2-2 系统电路图8255A和LED灯的连接图(二)软件设计1程序总体设计本系统采用“自上而下总体规划、自下而上应用开发”的策略进行总体设计和开发。先根据其功能需要,设定需要的功能模块,确定需要编写的子程序,从而使程序结构清晰,便于阅读和调试,加快了系统完成的速度。结构化的程序设计方法很适合用来开发汇编语言程序,因为汇编语言的特性决定了其无法使用面向对象的程序开发方法;使用瀑布程序开发模型,从开始的时候把系统的需求分析透彻,对系统的功能和各个模块进行清晰的规划,从而缩短系统开发所用的时间。为了完成系统的功能,系统的程序部分应包含

19、以下几个模块(见图2-3)。各个模块有的为一个子程序,有的为几个子程序的集合,有的为一段代码,但是其功能却是相互独立和便于调用的。程序定义模块。它用来定义系统的代码段、数据段、堆栈段、所使用到的常量和变量、8253A、8255A和8259A的各控制口和数据口地址,以及系统的储存地址的偏移量。汇编语言所编写的程序开头有固定的格式,为下面程序的运行建立必须的条件。芯片初始化模块用来初始化各个芯片,分为以下几个步骤:写8253A芯片的控制字,选用方波发生器方式,并设定其使用通道2进行工作;定义8255A的工作方式,使A、B、C三个端口均工作于方式0,且为输出口;写8259A的ICW1、ICW2、IC

20、W3和ICW4,设定其工作方式为循环等待中断方式。地址赋初值模块(FORMAT)用来定义数字对应的显示字符,便于转换模块将时间缓冲区中的数值转换为便于数码管显示的字符;定义“ERR“显示区,供INT7中断服务程序调用;定义初始显示缓冲区中的字符,用于系统初始运行的时候,直接从此取值进行显示;定义显示缓冲区,用于存放系统运行时剩余时间所对应的显示字符;定义交通灯的初始状态、初始时间缓冲区的值,便于系统开始运行时从此数值开始递减,LED灯也按照这里定义的状态值进行点亮。等待模块(WATING)在中断请求没有到来的时候,根据交通灯所处的状态,判断应调用哪个交通灯状态程序,从而点亮相应的LED灯;有中

21、断请求时,调用相应的中断服务程序。交通灯状态模块存放着四个交通灯状态子程序ZT1、ZT2、ZT3、ZT4,供等待模块调用。当某个子程序被调用时,便点亮相应的LED灯。中断处理程序分为两个子程序。其中INT7是在中断源电平信号不符合规定要求时,自动转到7号中断,在数码管显示屏上显示“Err”;INT3是主要的中断服务程序,用来对8253A发来的时钟脉冲进行计数,到达一定次数后,调用NEWTIME、CONVERS和LEDDISP模块。更新时间缓冲区模块(NEWTIME)每次被调用的时候,将时间缓冲区中的时间减1,所以数码管显示屏上的数字才能够不断的减少。更新显示缓冲区模块(CONVERS),用来将

22、时间缓冲区中值转换为适合在数码管上显示的字符,并存入显示缓冲区。显示模块(LEDDISP)使用8255A将显示缓冲区的字符逐位显示在数码管显示屏上,完成显示数值的更新。程序定义模块地址赋初值模块FORMAT芯片初始化模块等待模块WATING交通灯状态模块ZT1-ZT4显示模块LEDDISP中断处理程序INT3,INT7更新显示缓冲区模块CONVERS更新时间缓冲区模块NEWTIME交通灯控制系统图2-3 系统模块图2程序流程设计程序运行的流程图见图2-4。开始运行的时候,调用FORMAT初始化程序,给初始显示区和电平错误显示区赋初值,这样系统会在初始显示和电平有错误的时候,显示相应的字符;定义

23、数值对应的显示字符,便于转换程序取到时间数值对应的字符;定义显示缓冲区的地址,便于系统运行的时候,把时间转换成的显示字符存到相应的单元中;定义时间缓冲区初值,系统运行后时间将从该处的值开始减小;定义系统初始状态,便于运行后LED灯工作于相应的状态。接着对8253A、8255A和8259A进行初始化。定义8253A使用通道2,工作于方式3,其计数初值为3C50,每隔20ms向8259A发出一个时钟脉冲;8255A的A、B、C三个端口均工作于输出方式;8259A工作于循环等待中断方式。进入等待程序WATING后,首先打开中断,等待8259A发出的中断请求。当无中断的时候,判断系统所处的状态,并调用

24、相应的交通灯状态子程序,使LED灯相应的点亮。当有中断的时候,则转到相应的中断服务程序,本系统主要为INT3程序。INT3程序首先关闭中断,判断中断计数器DATA6单元所存储的中断次数是否达到20次,如果没有则直接调用INTR2程序,打开中断,并中断返回。如果达到20次,则将中断计数器清零;再调用显示程序LEDDISP把当前时间显示出来;接着调用时间缓冲区更新程序NEWTIME将剩余时间减1;进入状态判断程序P1-P4,当相应状态的剩余时间未减到0的时候,调用CONV程序,更新显示缓冲区并中断返回,否则改变状态,并将新状态将持续的时间写入时间缓冲区,再调用CONV程序,更新显示缓冲区并中断返回

25、。开始芯片初始化初始化时间缓冲区、时间缓冲区、状态开中断状态1等待调用ZT1状态2调用ZT2状态3调用ZT3调用ZT4YYYNNN主程序流程图开始关中断DATA620DATA6清零LEDDISP显示时间NEWTIME时间减1状态1时间=0设为状态2,时间值为15、15状态2时间=0设为状态3,时间值为15、15状态3时间=0设为状态4,时间值为40、40状态4设为状态1,时间值为40、40CONVERS时间转为显示字符返回Y时间=0中断服务程序流程图YYYYYYNNNNNNNNYN3重要代码分析(1)中断服务程序INT3是本系统的程序最核心的子程序。它用来计算收到8353A发来的中断次数,当次

26、数达到20的时候,就自动将次数清零、调用LEDDISP显示程序、NEWTIME时间缓冲区更新程序、状态修改程序P1-P4和中断返回程序,完成数码显示屏上时间的更新和LED灯状态的改变。以下是该程序的代码分析,并注有详细的功能说明。/等待模块(WATING)在中断请求没有到来的时候,根据交通灯所处的状态,判断应调用哪个交通灯状态程序,从而点亮相应的LED灯;有中断请求时,调用相应的中断服务程序。交通灯状态模块存放着四个交通灯状态子程序ZT1、ZT2、ZT3、ZT4,供等待模块调用。当某个子程序被调用时,便点亮相应的LED灯。INT3: ;定义函数名称 CLI ;处理中断时先关中断 PUSH AX

27、 ;保存堆栈 PUSH DX MOV AL,DS:DATA6 ;DATA6用于保存收到的中断次数,取当前中断次数 INC AL ;将中断次数加1 MOV DS:DATA6,AL ; 将加1后的中断次数写回DATA6存储单元 CMP AL,20H ;将中断次数与20进行比较 JAE NEXT ; 大于等于20时,清零,并转向状态判断程序,中断返回 JMP INTRE2 ;小于时直接中断返回NEXT: MOV BYTE PTR DS:DATA6,00H ;将DATA6清零 CALL LEDDISP ;调用显示程序,将显示缓冲区中的数字显示出来 CALL NEWTIME ;调用时间缓冲区更新程序,将

28、时间缓冲区DATA8,DATA9减1P1: CMP BYTE PTR DS:STATUS,01H ;判断是否是状态一 JNZ P2 ;如果不是状态一,则转P2 CMP BYTE PTR DS:DATA8,00H ;如果是状态一,看时间否已经减到0 JNE CONV ;如果未减到0,则更新显示缓冲区,并中断返回 MOV BYTE PTR DS:STATUS,02H ;如果减到0,则设置系统为状态二 MOV BYTE PTR DS:DATA9,15H ; 设定状态二时,路口的显示初始值 MOV BYTE PTR DS:DATA8,15H JMP CONV;P2-P4类似于P1,在此略去。 CONV

29、: CALL CONVERS ;把时间缓冲区中的时间转换到显示缓冲区中INTRE2: MOV AL,20H ;写8259控制口 ,并中断返回MOV DX,INTPORT1 OUT DX,AL POP DX ;弹出堆栈 POP AX STI ;开中断 IRET ;中断返回(2)交通灯状态程序也是本系统中一个非常重要的子程序。它通过改变8255A的PB和PC口的值来控制特定LED灯的亮灭。下面以状态1所对应的子程序为例,来分析一下如何用8255A来控制交通灯的亮灭。ZT1: PUSH AX PUSH DX MOV AL,01010000B ;设置2,4路口直行灯亮 MOV DX,BPort ;BP

30、ort为8255A的PB口的地址 OUT DX,AL ;更改PB口的值,从而改变LED灯显示的状态 MOV AL,00H ;设置四个路口左转灯,右转灯全部关闭 MOV DX,CPort ;CPort为8255A的PC口的地址 OUT DX,AL ;更改PC口的值,从而改变LED灯显示的状态 POP DX POP AX RETZT1F: ;状态一闪烁程序: 2、4路口直行灯闪烁PUSH AX PUSH DXMOV CX,12H ;定义闪烁12次ZT1Flash:MOV AL,00H ;灯灭MOV DX,BPortOUT DX,ALCALL DELAY2 ;短延时 MOV DX,BPort MOV

31、 AL,01010000B ;灯亮OUT DX,ALCALL DELAY2 ;短延时LOOP ZT1Flash ;循环 POP DX POP AX JMP WATING ;跳转到等待程序(3)显示子程序LEDDISP: PUSH AX ;将当前寄存器保存到堆栈中 PUSH BX PUSH CX PUSH DX MOV SI,DATA4 ;将显示缓冲区的首地址0520h存入SI MOV AL,90H ;初始显示时 DATA3 EQU 0518H MOV DX,CONTPORT ;写8255控制口 OUT DX,AL MOV BYTE PTR DS:DATA5,00H ;DATA5单元中保存当前显

32、示到第几位LED1: CMP BYTE PTR DS:DATA5,05H ;看是否显示到第5位 JA LED2 ;如果显示完5位后,返回 MOV BL,DS:DATA5 MOV BH,0H MOV AL,CS:BX+SI ; 将当前位的显示缓冲区的地址写入AL MOV DX,DATAPORT ;写8255A数据口,以此改变显示值 OUT DX,AL ADD BYTE PTR DS:DATA5,01H ;显示下一位 JNZ LED1LED2: POP DX ;弹出堆栈并返回 POP CX POP BX POP AX RET五、系统实现(一)软件开发与运行环境本系统的代码使用8086汇编语言编写,

33、所以代码编写环境可以使用任何文本编辑器。如系统自带的记事本、DOS下的编辑工具EDIT和文本编辑工具UltraEdit等。本系统使用了DVCC-8086JHN实验箱附带的DV88联机软件。它可以读取其他编辑软件生成的MASM格式的汇编语言文件(*.ASM),也可以作为汇编代码的编辑、测试、运行环境。在显示代码的时候,可以把常用的汇编指令显示为蓝色,数值显示为红色,注释显示为绿色,从而使论文清晰易读,并容易发现代码中的错误。DV88联机软件同样可以作为系统的运行环境。系统运行的时候需要将ASM源程序编译产生的OBJ文件传送到实验箱,由实验箱上的处理器和各个芯片负责执行。(二)系统硬件环境交通灯控

34、制系统采用的DVCC-8086JHN通用微机原理及接口实验系统,集成了8253A计数/定时器芯片、8255A可编程并行接口芯片和8259A中断控制器芯片,并把大部分的引脚进行了封装,方便直接进行使用;并设有12个LED显示灯;系统分频器可以产生特定频率的时钟脉冲;固定的导线接口,方便使用导线把各芯片进行连接;并设有键盘,可以随时控制程序的运行,方便进行调试。实验箱使用串行口连接线与PC机的串口相连,然后使用DV88联机软件与实验箱进行连接并传送运行的程序。(三)系统运行步骤系统的代码编写完毕的时候,便可以进行程序的联机调试了。将实验箱的电源线连接好,使用串口通信线将实验箱上的串口与PC机上的串

35、口相连。将各个芯片和LED灯按照硬件连接设计图上的图示进行连接。打开实验箱的电源,数码管显示屏上显示DVCC86,提示实验箱初始化成功。在PC机上打开DV88联机软件,调用编辑好的程序代码。首先进行编译,系统会自动调用MASM程序对代码进行编译。若没有提示错误,便可以点击连接按钮,调用LINK程序把编译生成的OBJ文件进行连接,生成EXE文件。再点进调试按钮,把生成的可执行文件传送到实验箱,进行调试状态,此时屏幕会显示实验箱各个寄存器的值。最后点击连续运行按钮,实验箱上的数码显示管和LED灯便会按照设计的要求进行工作。在运行的过程中可以随时按实验箱上的RESET键,中断程序的执行,以便进行代码

36、的修改或者结束系统的运行。(四)系统测试结果按照表1-1中交通灯四个状态所对应的秒数,在程序中为各个状态子程序设定相应的时间初值。测试运行的结果如下:开始运行时,系统在状态一下工作,两个显示屏显示剩余时间为45秒,并不断递减,同时LED灯的2、4路口的直行灯点亮;当状态一的剩余时间减至零的时候,系统自动切换到状态二,显示屏显示剩余时间变为15秒并递减,同时1、3路口的左转灯和2、4路口的右转灯点亮;状态二结束时,系统切换到状态三,显示屏的剩余时间变更为15秒,1、3路口的右转灯和2、4路口的左转灯点亮;状态三结束时,进入状态四,显示屏剩余时间变为45秒,同时1、3路口的直行灯点亮。状态四结束时

37、,自动切换到状态一循环执行。附 录(一)重要源代码1CONVERS子程序,用于将时间缓冲区中的数值转换到显示缓冲区。CONVERS:MOV AL,BYTE PTR DS:DATA9 CALL CONVERS2ADD WORD PTR DS:DATA10,03H MOV AL,BYTE PTR DS:DATA8CALL CONVERS2MOV WORD PTR DS:DATA10,DATA4 RETCONVERS2:PUSH AXCALL CONVERS1 MOV BX,WORD PTR DS:DATA10MOV DS:BX,AL ADD WORD PTR DS:DATA10,01H POP A

38、XPUSH CXMOV CL,4HSHR AL,CL POP CXCALL CONVERS1 MOV BX,WORD PTR DS:DATA10 MOV DS:BX,ALRETCONVERS1:MOV BH,0H AND AL,0FH MOV BL,AL MOV AL,CS:BX+DATA2 RET2 NEWTIME子程序,用于将时间缓冲区中的数值减1。/更新时间缓冲区模块(NEWTIME)每次被调用的时候,将时间缓冲区中的时间减1,所以数码管显示屏上的数字才能够不断的减少。更新显示缓冲区模块(CONVERS),用来将时间缓冲区中值转换为适合在数码管上显示的字符,并存入显示缓冲区。NEWTIM

39、E:MOV AL,BYTE PTR DS:DATA9 SUB AL,01DDAS MOV BYTE PTR DS:DATA9,ALMOV AL,BYTE PTR DS:DATA8 SUB AL,01DDASMOV BYTE PTR DS:DATA8,ALJMP OKOK: RET 3WATING子程序,用于在没有中断的时候,调用相应的交通灯状态程序。/等待模块(WATING)在中断请求没有到来的时候,根据交通灯所处的状态,判断应调用哪个交通灯状态程序,从而点亮相应的LED灯;有中断请求时,调用相应的中断服务程序。交通灯状态模块存放着四个交通灯状态子程序ZT1、ZT2、ZT3、ZT4,供等待模块

40、调用。当某个子程序被调用时,便点亮相应的LED灯。WATING: STI CMP BYTE PTR DS:DATA7,01H JA WATING1 CMP BYTE PTR DS:DATA8,03H JNA ZT1F CALL ZT1 JMP WATINGWATING1: CMP BYTE PTR DS:DATA7,02HJA WATING2CMP BYTE PTR DS:DATA8,03HJNA ZT2FCALL ZT2JMP WATINGWATING2: CMP BYTE PTR DS:DATA7,03HJA WATING3CMP BYTE PTR DS:DATA8,03HJNA ZT3FCALL ZT3JMP WATINGWATING3:JMP WATING4 ZT1ZT3:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1