微机应用系统设计与实现.ppt
第12章 微机应用系统设计与实现,12.1 微机应用系统设计原则与步骤12.1.1 微机应用系统的一般构成与类型 12.1.2 应用系统的设计原则与要求12.1.3 应用系统设计的基本内容与步骤12.1.4 系统集成12.2 微机应用系统设计实例微机信号发生器的分析与设计12.2.2 城市交通管理控制系统分析与设计,12.1微机应用系统设计原则与步骤,12.1.1 微机应用系统的一般构成与类型 典型微机应用系统的构成一般由硬件系统(计算机+控制电路)和软件系统(系统软件+应用软件)两大部分构成。1.硬件构成 微机应用系统的硬件构成框图如图12-1所示。图中可见,应用系统由如下几大部分组成。,图12-1 微机应用系统硬件的一般组成,(1)微机。微机称为主机,是系统的核心,所有设备都要在它的控制和管理下进行工作。微机可以用8086/8088或其他CPU构成,也可由个人PC机、单片机、数字信号处理器电路等构成。(2)常用外设。包括输入设备,输出设备和外存储器。(3)外设。外设是应用系统与被控或被测对象之间进行信息变换和信息传递的设备。它包括输入接口和输出接口。(4)操作控制台及监视报警设备。微机应用系统在正常工作时,并不需要人为参与。但是必须设置人机对话系统。因为系统在运行过程中,操作人员需要对运行状态进行监视和了解,在系统发生故障时自动报警,操作人员通过控制台上的按键干预。另外,当需要修改控制程序和控制参数时,同样也要通过控制台上的键盘或按键对系统的工作进行干预。,2.软件构成 硬件是系统的躯体,软件(即各种程序和数据的集合)是整个系统的灵魂。不同的控制对象和不同的控制任务,在系统软件构成上会有很大区别。一般,只有系统硬件确定以后,才能完全确定如何配置系统的软件。软件系统大体可以分成以下几个部分。1)用户程序。用户程序是一个用于对被控对象进行直接控制的程序。因此,它将对控制对象产生决定性的影响,即用户程序的优劣,会给系统的精度、可靠性及工作效率带来致命的影响。,2)常用子程序库。一个微机应用系统的基本功能要受到硬件结构和系统拥有的资源的限制。采用子程序的方式来满足系统用户程序的要求。所谓子程序,就是将一些特定功能编成一个个专用程序段,放在子程序库中,系统需要使用时,可以随时调用。3)操作系统。操作系统是一个系统管理程序,它由多个不同功能和作用的程序模块组成,形成一个程序的集合体,用于控制、管理微机系统的软硬件资源,提供用户操作和使用的接口。微机的应用一般可分成3种类型。,1.检测控制型 检测控制型微机系统用于对控制对象的状态作某些判断,然后再去控制其执行机构。它不需要做复杂的数学模型的计算工作,但它必须有检测控制对象的相关传感器件,还要将传感器得到的模拟信号(连续的电压或电流值)转换成数字信号(量化的数字量),即通过ADC实现A/D转换。也就是把模拟信号翻译成数字信号,以适应计算机的工作需要。ADC和DAC是计算机控制系统的必备的重要器件。,2.数据处理型 数据处理型微机系统是指输入数据量比较大,数据输入后按照一定规律进行分类、排序(列表)、折算(如线性化)、换算(如求均值、方差等),然后送入有关的数学模型进行繁杂运算的计算机系统。,3.混合型 混合型微机系统即以上二者的复合型式。混合系统一方面既有很多数据输入,并进行相应的处理,另一方面又要根据处理的结果去控制相应的对象,以达到控制整个系统的目的。,12.1.2 应用系统的设计原则与要求 在不同规模和要求的系统中大体是相同的。因此,这些共同的原则和要求在设计前或设计过程中都必须予以很好的考虑。(1)操作性能要好 微机应用系统的操作性能好,就是指系统的人机界面要友好,操作起来简单、方便,并且便于维护。,(2)通用性好,便于扩展 通常微机应用系统在工作时都能同时控制几台设备。所控制的设备也不是一成不变的,而是要经常不断地进行更新。这样,就要求系统不仅能适应各种不同设备的要求,而且也要考虑在设备更新时,整个系统不需要做大的改动就能马上适应新的配置。因此,系统就需要有好的通用性。(3)可靠性高 一个系统能否长时期安全可靠地正常工作,对一个工厂来说将要影响到整个装置甚至整个车间,乃至整个工厂的正常生产。,随着价格低廉的微机的出现,人们通常采用多微机系统形式来构成一个应用系统,就是将应用系统分成若干个功能模块,每个功能模块由一个微机来进行控制,并将各个微机用网络连接起来,构成一个多机系统。这样,功能分散了,危险也相应地分散了。即使工作过程中某一台微机发生了故障,也不至于使整个系统瘫痪。当前常见的形式有下面两种。1)采用双机系统 在这种系统中,用两台微机作为系统的核心控制器。由于两台微机同时发生故障的概率很小,从而大大提高了系统的可靠性 2)采用多微机集散控制 这种系统结构是目前提高系统可靠性的一个重要发展趋势。多级分布式应用系统可以使微机的故障对系统所产生的影响减至最小。,(3)设计周期短、价格便宜 目前科学技术发展十分迅速,各种新的技术和产品不断出现,如果研制周期太长,会使产品失去竞争能力和实用价值。所以,微机应用系统不能搞大而全,应考虑实际情况来确定系统的设计规模。在设计时,要仔细核算成本,在保证功能和性能的前提下,低的价格才有竞争力。(4)对环境的适应性要好 在开发微机应用系统时,一定要考虑到其应用环境,保证在现场的环境下可靠地工作。例如电源电压波动,环境温度变化,湿度,振动,有粉尘、盐雾、腐蚀等。这些外界因素在系统设计中必须加以考虑,采用必要的措施保证微机应用系统安全可靠地工作。,1.微机应用的必要性 在设计微机应用系统之前,首先要估价一下引入微机以后会给用户带来多少经济效益和社会效益,即估价成本高低,系统性能改善程度,系统的通用性、可靠性、可维护性等方面。最后再确定是否在系统中引入微机。一般地说,如果在二、三年内能收回引入微机应用系统所花的成本,采用微机就是合理的。若采用微机应用系统能取得降低工作人员的劳动强度,避开有污染和有害环境,保证人身安全等社会效益时,则引入微机也是十分必要的。,12.1.3 应用系统设计的基本内容与步骤,2.需求分析确定系统的功能 需求分析是在仔细了解用户需求的基础上进行的。因此,首先必须详细了解用户的需求。调查用户要利用微机应用系统实现的功能。例如,对于测量系统,应该了解要测量的参数是什么,采用什么传感器,信号大小与形式,放大器要求,测量精度,如何显示,如何输出结果等。对于控制系统,还要仔细调查用户的要求、工艺过程、控制精度等等。,12.1.3 应用系统设计的基本内容与步骤,此外,在了解用户要求完成测控功能的同时,还必须了解微机应用系统的工作环境,包括电源的稳定性,干扰大小以及环境的温度、湿度等。总之,要非常认真仔细地进行需求调查,必须强调需求调查和分析是后续工作的依据,其后所做的一切都是以满足用户需求为目的的。针对用户的需求,仔细分析测控对象的工作过程,明确微机系统应如何去做,用时间和控制流图来描述这些工作过程。,3.选择基本微机系统硬件系统设计 在设计微机应用系统时,通常总是先选择一个最基本的微机系统,然后对它进行扩展,并配上相应的软件,从而形成一个实用的应用系统。由于微机是整个应用系统的核心,所以它的选择是否合适,将对整个系统产生决定性的影响。基本微机系统选择中应考虑的依据大致有以下4个方面。1)微处理器的字长 微处理器的字长会直接对系统精度、指令多少、寻址能力、处理速度等产生影响,导致应用领域的不同。一般来说,微处理器的字长愈长,对数据处理愈有利,处理速度也可以进一步提高。但是,并不是字长愈长愈好,在选择时,应根据应用实际情况及性能价格比综合考虑。,2)微处理器的工作速度 微处理器的工作速度一般取决于主频的高低。速度的选择应使其与被控对象的要求相适应或稍留一点余量,过高的要求会给系统的安装和调试带来不必要的困难。因为在高速工作时,引线之间的串扰及信号延时非常令人头痛。3)系统结构对环境的适应性 不同的微机系统对环境的适应能力是不同的。例如,市面上出售的一般IBM-PC微机,通常只能适用于办公室或实验室这样的室内环境,如果将它用于工业控制环境就会产生诸多问题。在工业控制领域中,最好选用具有工业控制总线(STD总线)的工控机。因为它具有抗振、抗干扰等优良性能,能较好地适应工业领域的恶劣环境。,4)尽量选用有较多软件支持的机型 所选择的微机系统有较多的软件支持,会大大有利于应用系统的软件开发,可以节省大量的人力、物力和开发时间。当然,除上述几个方面外,外围设备配置情况、总线扩展方便与否、体积大小、重量等也都是通常要考虑的因素。,4.确定整个应用系统的硬件结构硬件系统设计 在基本微机系统选定以后,就可以根据被控对象的具体要求来确定系统的结构。1)通道划分及输入/输出方式的确定 根据被控对象所要求的输入/输出参数的数目,就可以确定整个系统应该有几个输出通道。当然,有的通道可以由几个被控设备共用,由硬件(或软件)来输入/选择切换。另外,根据被控对象要求,确定采用哪一种输入/输出方式更合适。一般说来,采用中断方式处理器效率较高,但硬件费用会稍高一些,而查询方式硬件价格较低,但处理器效率比较低,速度较慢。在一般小型的应用系统中,由于速度要求不高,控制的对象也较少,此时,大多采用查询方式。,2)内存分配 基本微机系统都对内存分配作了具体的规定。用户在使用已有的内存区时,应注意不要使用户程序占用微机系统的基本工作区。如果用户认为内存不够,需要进行扩展,那么应按说明书的要求,在空余的内存区进行扩展。3)确定接口和外设 除了专用外设,可以购买现成的设备。对于应用系统中所需的测控部件,如有合适的也尽量购买成品部件。若需自己设计开发,那就需要根据用户的要求仔细加以确定。4)选择电源 微机应用系统的故障多发点就包括电源部分。根据系统的硬件配置,可以粗略估计系统电源需要几组,各为多少伏,它们的容量是多少。同时,还要考虑对电源采用必要的可靠性措施,如滤波、稳压、防雷电、防浪涌等。,5)系统总线的选择 采用标准化总线,可对系统设计带来很多方便。6)确定系统的机械结构 最终研制的系统是要放在控制台中的,在硬件设计时,也要考虑将来系统的机械结构。例如,显示器、控制按钮、键盘、手动操作杆、鼠标等通常放在控制台上面;主机、放大器、驱动器放在控制台中间;而电源、继电器、电机等大功率设备放在控制台底下或放在另外的机箱中。,在硬件结构确定的基础上,考虑与之相配合的软件框架,确定软件的组成模块。根据用户的要求,将这些模块有机地联系在一起,形成粗略的系统软件流程图。同时,对软件的大致方案写出文字和流程图组成的文档。在硬件及软件方案确定之后,应对方案进行认真讨论,必要时邀请有关方面的专家对方案进行认真论证和审定,以确保方案的正确性。只有方案本身合理、正确,后面的工作才有意义。,(5)确定软件框架及流程软件系统设计,硬件的具体设计规划:1)在硬件系统上合理地划分模块,即将硬件系统划分成若干相对独立的部件。2)各模块(电路板)的逻辑设计。3)电路板设计。4)加工电路板。5)安装、调试。6)硬件各部件(各模块)进行联调。软件的具体设计规划:1)划分模块。2)确定各模块的详细要求。3)确定程序设计方法。一般程序设计采用下面几种技术:,(6)硬件和软件的具体设计系统实现,模块化设计:模块是按功能加以划分的,这种划分的程序模块能够形成在以后工作中所要用到的程序库。缩短了查错和测试的程序长度,为其他程序提供了可重复使用的基本程序。其缺点是:各模块连接时,参数传递费时并占用内存,另外,需要进行模块级和主程序级的两级调试。自上至下的程序设计:当主程序编好之后,再将各代号展开成从属的程序或子程序,最后完成整个系统程序的设计。优点是设计、测试和连接同时按一条线索进行,所出问题可以较早地发现并解决,无须测试程序。其缺点不能充分发挥硬件在软件设计中的作用,树形结构会使上一级错误对整个程序产生灾难性的影响。结构程序设计。有3种逻辑简单的结构线性结构、条件结构和循环结构。,(4)编写代码:在确定程序设计方法后,可以编制程序。(5)查错:查错是程序设计中所必须经过的一个步骤。几个常用的查错手段。汇编(或编译)程序。利用汇编(MASM)程序。逻辑分析仪和在线仿真器。这两种测试仪器可以帮助我们查找软件及硬件的错误(故障)。,列表校正和手工校正。手工校正在程序设计中通常作为必要的补充查错手段。第三方检查。有时请第三者仔细阅读出错的程序,对照校正表认真分析,可以较容易地发现错误。(6)测试:测试和查错是紧密相连的。测试的本质就是在一组特定的测试条件下,进行查错的后续步骤。(7)软、硬件联调系统调试将硬件和软件放到同一系统中进行联调,又称集成测试。如果某一模块有问题,则可集中注意力加以解决,直至整个系统通过测试。,(8)实验室模拟运行离线仿真将整个联调好的系统在实验室中模拟现场的运行,此步骤称为离线仿真。(9)现场调试、试运行将研制的系统放到现场,对专用外设进行逐一调试,使它们进入正常状态。然后,执行用户程序,使系统进入试运行状态。仔细观察并记录系统运行的状态。如发现问题,要认真分析,务求尽快解决。,在试运行过程中,系统的设计开发人员要认真编写大量的文件、资料。例如,研制项目的背景、研制报告、技术报告、使用维护手册、软件资料、硬件图纸、标准化规范、用户使用报告等等。(10)验收或鉴定系统性能评估在使用半年或更长时间之后,若对系统的性能感到满意,即可组织验收或鉴定,使设计工作完结。否则,依据需要修改设计,重新开发。微机应用系统设计和开发步骤的简要流程如图12-2所示。,图12-2 微机应用系统设计步骤示意图,硬件系统集成、软件系统集成以及网络集成已成为工程技术的流行方法。对应用于工业现场实现对生产过程监控的微机应用系统,其硬件系统多采用系统集成的方法来实现。对大型的网络(如城域网),常采用网络集成,包括网络的硬件、软件均采用集成方式。在这里我们仅就工业企业的小型监控系统来说明系统集成的方法。,12.1.4 系统集成,利用已有的部件(半成品),根据系统设计要求,构成微机应用系统硬件。它必须根据设计要求,满足所规定的性能指标。系统集成的目标就是以既定的方案为基础进行系统合成的。在硬件集成时,须根据厂家提供的说明书,弄清工作原理,使各部件集成在一起调试好,进入正常状态。而且,一旦某部件出现故障要能很快判断故障的部位并加以排除。若集成的系统能正常工作,则后面的工作将如前所述。,1.硬件系统集成,许多在网络上运行,包括多媒体等多种信息的大型应用软件,需要集成许多软件(包括工具软件)作为支持。在小型的工业监控系统中,有时只有用户程序,而用户繁多,要求各异,则用户程序多为自己研制的专用软件。在一些小型的工业监控系统中,常以广泛使用的操作系统为基础,也可以说是将操作系统(DOS、Windows、OS等)集成在系统中。由于有了操作系统的支持,用户程序的开发和设计就变得简单和省时省力。在进行系统设计时,若以系统集成的方式进行,可收到事半功倍的效果。,2.软件集成,例12-1利用8086CPU制作函数信号发生器。设计思路:通过在8086 CPU中扩展A/D、D/A通道和信号转换电路,构成函数信号发生器的硬件电路。利用软件编程使DAC0832产生不同波形,然后利用ADC0809采集波形并以图形方式在显示器上显示。本例以锯齿波产生为例,说明系统设计的全过程。如果在软件设计上稍做修改,也可以产生方波、三角波等信号。,12.2微机应用系统设计实例微机信号发生器的分析与设计,D/A转换送出的模拟信号,经过A/D采样将其取回并转换成数字信号(D/A、A/D转换器可参考相关章节)。以图形方式显示各种波形,在进行本设计前必须熟悉和掌握微型计算机显示器的图形编程方法,具体可用BIOS的INT 10H调用来实现。根据上述分析,依据前面介绍的设计原则和设计步骤,分析设计系统的硬件连接。参考电路如图12-3所示。其中:,1.硬件设计,(1)D/A电路采用双缓冲工作方式,用片选信号确定输入寄存器和DAC寄存器的端口地址,进行两次写操作便可以完成数据传送和转换。第一次有效,完成将数据线上的数据锁存到输入寄存器;第二次有效,完成将输入寄存器中的数据锁存到DAC寄存器实现D/A转换。D/A电路用通用双运放LM358实现电流到电压的转换。D/A输出为双极性,电压输出范围是-5+5 V,电压输出与数字量的对应关系如表12-1所示。,表12-1 电压输出与数字量的对应关系,(2)A/D电路将START端和ALE端相连,从而可同时锁存通道地址并开始A/D采样转换。其输入控制信号为CS#和IOW#,故启动A/D转换只要能发出和信号即可。如:MOV DX,2A0H;ADC0809的端口地址OUT DX,AL;启动A/D采用中断法读取A/D转换结果,即用A/D转换结束信号EOC作为中断请求信号,提出中断申请,在中断服务程序中,使用下面的指令读取A/D转换的结果:MOV DX,2A0HIN AL,DX可使用微型计算机的中断IRQ3(串行口2不用),A/D芯片的EOC信号接总线的IRQ3。ADC0809采集通道用IN0,电压输出范围是0+5V,端口地址为2A0H。,(3)8254用通道0对CPU主频进行分频(8086CPU主频为4 MHz,分频后产生ADC0809所需的500 kHz时钟)。8254通道0的地址为2B0H,8254控制寄存器的地址为2B3H。(4)地址译码器完成各个接口芯片的地址选择,可采用74LS128译码器,也可用逻辑门电路来实现线选译码。在选择各个端口地址时一定不能与IBM-PC系统中的I/O端口地址冲突。本例选择的地址范围为290H2B7H。其中的290H29lH分配给DAC0832,2A0H2A7H分配给ADC0809,2B0H2B3H分配给8254。,D/A数据端送出的锯齿波数据由80H(0V)开始,每次增加1,顺序递增到0FFH(+5 V),输出1个锯齿波。重复此过程,可以连续输出多个锯齿波。显示器初始化成图形方式,再显示锯齿波图形。,2.软件设计(以锯齿波信号为例),图12-3 例12-l的参考电路,A/D采集来的锯齿波图形放置到一个数据缓冲区中,同时画出该锯齿波的图形点。数据缓冲区满时,将第一个锯齿波数据从数据缓冲区去掉,同时将对应的图形点抹掉。将数据缓冲区中其余锯齿波数据顺序前移一个位置,并将其余锯齿波图形点的显示也顺序前移一个位置,这样可得到一个向前移动的锯齿波图形显示,使得演示的波形更加直观。锯齿波主程序流程图见12-4,中断流程见图12-5 所示。,图12-4 锯齿波主程序流程图,图12-5 中断服务程序流程图,系统主程序:DATASEGMENT X0EQU155 Y0 EQU155;坐标系原点坐标(X0,Y0)MESS DBpress any key to return to dos.,0DH,0AH;提示信息TMCTL EQU 2B3H;8254控制口地址TMRO EQU2B0H;8254通道0地址INPR EQU290H;DAC0832输入寄存器地址DACR EQU29lH;DAC0832 DAC寄存器地址DAINDB?;DAC0832的D/A数据INT3SDW?;IRQ3的中断向量段地址保存单元INT3ODW?;IRQ3的中断向量偏移地址保存单元IMR DB?;中断屏蔽字保存单元,3.锯齿波参考程序,ADDR EQU 2A0H;ADC0809的片选地址ADDA DB?;ADC0809的采集数据COUNT DW 0;ADC0809的采集数据个数BUFF DB 240 DUP(?);采集数据缓冲区(240个数据)DATA ENDS STACK SEGMENT DB 100 DUP(?)STACK ENDS WRICH MACRO CHAR,WH,COLOR;写字符调用(CHAR 为字;符,WH 为位置,COLOR为颜色)MOV AH,02H;置光标位置功能调用MOV DX,WH;光标位置为WHMOV BH,00HINT10H;显示功能调用MOV AH,09H;写字符功能调用MOV AL,CHAR;显示字符送ALMOV BL,COLOR;置字符颜色,MOV CX,l;字符长度为1 INT 10H WRICH ENDMCODESEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX CLI;关中断 MOV DX,TMCTL MOV AL,00110110B OUT DX,AL;8254初始化MOVDX,TMROMOV AL,08H;计数低位字节,计数初值为8 OUT DX,ALMOV AL,00H;计数高位字节置0OUT DX,ALMOV AL,0BHMOV AH,35HINT 21H;取IRQ3的中断向量并保存在INT3O,MOV INT3S,ES;和INT3S单元MOV INT3O,BXPUSH DSMOV DX,OFFSETADINTMOV BX,SEG ADINTMOV DS,BXMOV AL,0BHMOV AH,25HINT 21H;设置新的IRQ3中断向量POP DSIN AL,21HMOV IMR,AL;保存中断屏蔽字AND AL,11110111BOUT 21H,AL;开放IRQ3中断MOV SI,OFFSETBUFF,CALL INIT;屏幕图形初 始化 MOV DAIN,80H;锯齿波 初值80H 送DAINBEGIN:MOV AL,DAIN MOV DX,INPR OUT DX,AL;锯齿波值送DAC0832输入寄存器 MOV DX,DACR OUT DX,AL;锯齿波值送 DAC0832 DAC寄存器 INC DAIN NZ QQQ MOV DAIN,80HQQQ:STI;开中断 MOV DX,ADDR OUT DX,AL;启动一 A/D转换 HLT;等待中断 CLI INC COUNT;采集数据个数+1 MOV AL,ADDA;取A/D采集数据,MOV BX,COUNTMOV BYTE PTRSIBX,AL;将A/D采集数据送数据缓冲区CMP COUNT,240;JB DRAW;以下程序为采集数据缓冲区满的处理,在显示器上抹掉缓冲区中第一个;数据的显示将缓冲区中2240位置的数据顺序向前移动一个位置MOV BX,1;从采集数据缓冲区的第一个数据处 开始处理BUFDR:MOV AL,00;点的颜色为黑色CALL DPT;从显示器上抹掉第一点个 MOV AL,BYTE PTRSIBXl MOV BYTE PTRSI+BX,AL;将采集数据缓冲区的数据 MOV AL,0FFH;顺序前移一个位置,并置点的CALL DPT;颜色为白色,调用画点子程序INC BX CMP BX,240 JNE BUFDR,MOVCOUNT,239JMPNEXTDRAW:MOV AL,0FH;显示缓冲区未满时,MOVBX,COUNT;直接显示采集的数据 CALLDPT NEXT:MOV AH,06H MOV DL,0FFH;判断是否有键按下 INT 21H JZ BEGIN;没有按键,则继续OVER:PUSH DS MOV DX,INTSO MOV BX,INT3S MOV DS,BX MOV AL,0BH MOV AH,25H,INT 21H;恢复原IRQ3中断向量POP DSMOV AL,IMROUT 21H,AL;恢复原中断屏蔽字STIMOV AH,4CHINT 21H;返回DOS中断服务子程序ADINT PROC NEAR;A/D中断服务程序PUSHAXPUSH DXPUSH DSMOV AX,DATAMOV DS,AX;送数据段地址;确保中断服务程序MOV DX,ADDR;对数据段中的变量正确寻址IN AL,DX;读入A/D数据并送ADDA单元MOV ADDA,ALMOV AL,20H,OUT 20H,AL;送EOI命令POPDSPOPDXPOPAXIRET;中断返回ADINT ENDPDPT PROC NEAR;画点子程序PUSHAXPUSH BX PUSHCX PUSHDX MOV CX,X0;点的列位置(CX)为BX+X0ADDCX,BXMOVDH,00MOVDL,BYTEPTRSI+BX;取缓冲区中的数据SHRDX,l;DX/2MOVBX,DX;DX值送BXMOVDX,Y0-1;点的行位置为Y0-1-BX,SUBDX,BX;减1是为了避免将点画到坐标轴上 MOV AH,0CH;画点 INT10HPOP DXPOP CXPOP BXPOP AXRETDPT ENDPINIT PROCNEAR;初始化屏幕子程序MOV AH,00;设置显示器工作方式为EGA/VGA MOV AL,0EH;显示模式为 64020016INT10HWRICH,0112H,0FH;显示坐标系的两个箭头WRICH,124CH,0FH MOV AH,0CH;写像素功能调用MOV AL,0FH;颜色为白色,MOV CX,X0MOV DX,Y0 DRAX:INT10H;画坐标系的X轴INCCXCMP CX,614JNZDRAXMOV DX,Y0MOV CX,X0DRAY:INT10H;画坐标系的Y轴DEC DXCMP DX,8;JNZDRAY;MOV AH,0CH;以下为显示坐标系上X、Y;;轴的刻度MOVAL,0FHMOVCX,X0-4;给定Y轴刻度初值,画第一个MOVDX,25;刻度,长度为4点,YBJ:INT 10HINC CX CMP CX,X0JNZ YBJ MOV CX,X0-4;在Y轴画间隔为26 ADD DX,26;长度为4点的5条刻度线CMP DX,Y0JBYBJMOV CX,X0+80;给定X轴刻度初值,画第一个MOV DX,Y0+2;刻度,长度为2点XBJ:INT 10HDEC DXCMP DX,Y0 JBXBJWRICHV,0112H,0FH;显示坐标的Y轴标识V;行列位置为(01H,12H),白色,WRICH 0,1412H,0FH;显示原点标识WAICH T,144CH,0FH;显示X轴标识TWAICH l,14Ldh,0FH;显示X轴的刻度WRICH 2,1427H,0FHWRICH 3,1431H,0FHWRICH 4,143BH,0FHWRICH 5,1445H,0FH;WRICH 2,0D12H,0FH;显示Y轴的刻度值WRICH 5,0312H,0FHPUSHDSPOPESMOVAX,1200H;显示字符串功能调用LEA BP,MESS;ES:BP指向提示信息MOV CX,35;提示信息长度MOV BL,0FH;黑底,白字MOV DX,1600H;从16H行00列开始INT10H;显示功能调用RET INIT ENDPCODE ENDSENDSTART,【例12-2】8088/8086交通灯控制系统设计。设计思想:过去的城市交通灯管理系统采用数字逻辑电路,利用人工进行定时切换设定方式进行控制,缺点是控制过程不灵活,成本过高,制造复杂。现代城市十字路口交通灯的控制对车辆运行效率及安全十分重要。如果采用计算机控制,就具有实时、高效、低成本、灵活和安全等优点,可为城市交通管理带来极大的经济效益和社会效益。1.控制要求及系统分析 城市交通管理中,十字路口的交通灯布局情况如图12-6所示。,12.2.2 城市交通管理控制系统分析与设计,图12-6 十字路口的交通灯控制,图中A为纵向车流,B为横向车流。RB、OB、GB为横向红、黄、绿灯,RA、OA、GA为纵向红、黄、绿灯。A1、A2及B1、B2为车辆检测传感器。J为紧急车辆检测传感器。交通管理系统中,要求对十字路口的交通灯进行定时转换控制,灯光控制规律归结如下:(1)纵向与横向交通灯定时60秒交换红绿灯一 次。(2)灯光有三种颜色:红、黄、绿,每次交换时要求在黄色灯亮时停留3秒钟。(3)一路在60秒内过完车后超过6秒无车继续过时,如另一路有车在等待,则自动提前交换灯色。交换过程也得先在黄灯处停留3秒。(4)在紧急车辆(如消防车、救护车等)通过时,四边街口均显红灯,以便只许紧急车辆通过,其他车辆暂停行驶。紧急车辆过后自动恢复原来的灯色标志。,上述4点基本要求已足以说明交通灯控制问题对计算机提出的要求是什么。这种控制方式具有如下的特点:(1)这是一个开环控制系统,即无反馈的程序控制。(2)开关量输入和开关量输出。图中的车辆检测传感器是光电开关式的,所以送入计算机的信息是开关量。计算机控制交通灯的通断是通过继电器的,所以也是开关量输出。(3)提前换灯信号功能,即一路的车辆能够申请另一路中断绿灯而让其通行。不过这是有条件的,即必须是被请求的一路已有6秒钟无车通过才会响应;硬件电路设置为IRQ5实现。(4)紧急车辆检测功能;当紧急车辆检测传感器检测到有紧急车辆要通过时,立即发出紧急中断讯号(也是开关量)。这种中断请求不必等到被请求的一路已无车通过,而是无条件地停止其他车辆通过。这里中断设置为IRQ3,它的优先级高于IRQ5。,2.系统硬件结构设计,图12-7 交通灯控制系统结构框图,图中8088是系统的核心,它具有下列最基本的组件:(1)微处理机:包含CPU、ROM/RAM等部件。CPU是执行程序、接受输入信号并发出控制信号的指挥中心;ROM/RAM是只读存储器/随机存储器,存放着控制系统的程序和数据,其中的程序是由用户编制的,故称为用户程序。这个程序是根据交通灯控制的需要而由设计者(用户)制定的。(2)LED:发光二极管显示器(模拟灯光标志)。在编制程序时,此显示器可帮助程序员观察到存储器中所存的内容是否符合所编程序的要求,也可显示控制过程。并行接口电路:利用PA端口连接和控制十字路口的红、黄、绿三色灯,PB端口连接紧急车辆检测器。(3)REL:继电器板。其中有6个继电器以提高输出接口的6条输出线的功率,以便控制A向及B向的交通灯。,(4)RA、OA、GA为A向两个街口的交通灯,红、黄、绿三色各有2个灯。RB、OB、GB为B向两个街口的交通灯,也是三色各有2个灯。(5)GB:门电路板。其中装有两个或门,这实际上是一个门电路组件。其各个与门的输入输出逻辑关系为:A1+A2=A,B1+B2=B。(6)A1及A2为放在A向两个街口的检测器,只要其中一个为1(有车要通过),则A=1,即通知计算机A向有车要求通过。(7)B1与B2是放在B向两个街口的检测器,其作用和上述检测器是相同的。(8)J:4个紧急车辆检测器的公共入口,即4个控制器的输出端并联在一起,接至此处。NMI低电位(即在J=0时)有效(表示有紧急车辆要通过)。通过NMI端将此信息进入CPU,从而使RAM中正在进行的程序中断,而跳转至让紧急车辆通过的中断服务子程序。当车辆过后,J恢复为1,经由PC口的输入线使程序恢复到原来的主程序上去。,图12-8 应用系统的计算机控制硬件结构,系统工作原理如下:(1)开始时设A向通行(GA,即A向的绿灯亮),B向不通(RB,即B向的红灯亮)。这样,通行60秒后自动转为B向通行(GB,绿灯亮),A向不通(RA,红灯亮)。这是两个方向都很频繁通车的情况。(2)如在GA(绿灯)及RB(红灯)亮时,A向并未有车辆通行,等待6秒之后,如B向有车辆在等待通过,则通过B1或B2使程序跳转,其结果是使灯光自动按次序改变:GA及RB灭;OA及OB亮(3秒);RA及GB亮,同时OA及OB灭。(3)从此时起B向车辆可以通行,60秒后又自动转为A向车辆通行的程序。如无论哪个方向正在通行时,突然来了紧急车辆,不论其方向无核,则通过S(S=0)使程序跳转至让紧急车辆通行的子程序而使RA及RB都亮,此时没有黄灯过渡时期,以便禁止一般车辆继续通行。此时子程序所达到的灯光控制效果为:,3.系统工作原理,如本来GA是亮的,则GA由亮转灭,然后RA亮。而原来就是红灯亮(RB)的B向,其红灯RB仍不变。在A向和B向的红灯全亮时,紧急车辆可以不受交通灯的管制而随意通行。根据上述控制过程的灯色配置,可以将灯色状态归纳成四个模式(PAD),表12-2作出了这四种模式各自的灯色配置。,表12-2 灯色配置模式,4、系统软件设计根据上面讨论的交通规则要求,可以设计出如图12-9所示的流程图。,图12-9 交通灯控制软件流程图,程序开始后,即对A向(纵向)进行测试,如A=1为真,即A向有车要求通过,则程序转至CHK1端而直接输出灯色模式ZA,否则输出灯色模式ZB(CHK2端)。如A向及B向均无车时,则对CHK0及CHK2进行循环测试,同时维持原来的某一输出状态不变。在循环测试过程中,测试某一方向有车,如A向有车,A=1是真,其控制流程为图中的左半部,则控制过程如下:先检查该A向原来是否已处于放行状态(PAD=ZA)?如PADZA,则在A向转为绿灯之前,必须经黄灯的过渡。所以要用ZC子程序和3秒子程序,然后调用ZA子程序。如果PAD=ZA,则说明该A向已处于放行状态,不需经过ZC子程序,而直接由CHK1处进入输出ZA的方框(即PAD=ZA),并等到60秒子程序进行完毕后再去进行循环检查。当检出B=1为真,即B向有车时,其控制流程为图12-9中的右半部,其过程和左半部完全一样。,程序设计思路,图12-9中,箭头附注A=0(或B=0)的意义是,在A向无车时,就转入进行循环测试。因此,必须每隔若干秒(一般为零点几秒)测试一次A或B是否为0。如A向(或B向)始终有车,则PAD=ZA(或PAD=ZB),要延续至满60秒再转入循环测试程序。当有紧急车辆通过时,NMI线有效,则计算机进入紧急车辆程序,此程序一开始就将图12-9复位至初始状态,等紧急车辆过完后,又从“开始”进入控制流程。,