单片机原理及接口技术(共13章)第13章 应用系统设计_第1页
单片机原理及接口技术(共13章)第13章 应用系统设计_第2页
单片机原理及接口技术(共13章)第13章 应用系统设计_第3页
单片机原理及接口技术(共13章)第13章 应用系统设计_第4页
单片机原理及接口技术(共13章)第13章 应用系统设计_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

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

文档简介

1第13章

AT89S51单片机的应用

设计与调试

12【内容概要】本章介绍AT89S51单片机应用系统的设计。内容主要包括:应用系统的设计步骤和方法,应用系统的硬件设计,应用程序的总体框架设计以及应用系统设计举例。本章最后还对单片机应用系统的抗干扰和可靠性设计作以简要介绍。13.1单片机应用系统的设计步骤单片机应用系统的设计工作,首先要经过深入细致的需求分析,周密而科学的方案论证才能使系统设计工作顺利完成。一个单片机应用系统设计,一般可分为4个阶段。1.明确任务和需求分析以及拟定设计方案阶段明确系统所要完成的任务十分重要,它是设计工作的基础,设计方案正确性的保证。需求分析的内容主要包括:被测控参数的形式(电量、非电量、模拟量、数字量等)、被测控参数的范围、性能指标、系统功能、工作环境、显示、报警、打印要求等。34拟定设计方案是根据任务的需求分析,先确定大致方向和准备采用的手段。注意,在进行设计方案确定的时候,简单的方法往往可以解决大问题,切忌“将简单的问题复杂化”2.硬件和软件设计阶段根据拟定的设计方案,设计出相应的系统硬件电路。硬件设计的前提是必须能够完成系统的要求和保证可靠性。在硬件设计时,如果能够将硬件电路设计与软件设计结合起来考虑效果会更好。因为当有些问题在硬件电路中无法完成时,可直接由软件来完成(如某些软件滤波、校准功能等);当软件编写程序很麻烦的时候,通过稍稍改动硬件电路(或尽可能不改动)可能会使软件变得十分简单。另外在一些要求系统实时性强、响45应速度快的场合,则往往必须用硬件代替软件来完成某些功能。所以在硬件电路设计时,最好能够与软件的设计结合起来,统一考虑,合理地安排软、硬件的比例,使系统具有最佳的性/价比。当硬件电路设计完成后,就可进行硬件电路板的绘制和焊接工作了。接下来的工作就是软件设计。正确的编程方法就是根据需求分析,先绘制出软件的流程图,该环节十分重要。流程图的绘制往往不能一次成功,通常需要进行多次的修改。流程图的绘制可按照由简到繁的方式再逐步细化,先绘制系统大体上需要执行的程序模块,然后将这些模块按照要求组合在一起,在大方向没有问题后,再将每个模块进行细化,最后形成软件流程图,这样程序的编写速度就会很快,同时程序流程图还会为后面的调试工作带来很多56方便,如程序调试中某个模块不正常,就可以通过流程图来查找问题的原因。软件编写者一定要克服不绘制流程图直接在计算机上编写程序的习惯。设计者也可以先使用虚拟仿真开发工具Proteus来进行单片机系统的仿真设计。使用Proteus完成的单片机系统设计与用户样机在硬件上无任何联系,这是一种完全用软件手段来对单片机硬件电路和软件来进行设计、开发与仿真调试的开发工具。如果一个单片机的软硬件系统,先使用软件虚拟仿真工具进行系统设计并仿真调试通过,虽然还不能完全说明实际系统就完全通过,但至少在逻辑上是行得通的。系统虚拟仿真通过后,再进行实际的软硬件设计与实现,可大大减少设计上所走的弯路,软件编写调试可与硬件设计同步进行,可大大提高设计效率,这也是目前世界上广泛流行的一种开发设计方法。673.硬件与软件联合调试阶段上述的软硬件系统虚拟设计仿真调试通过后,再使用硬件仿真开发工具(在线仿真器)与用户样机来进行实际调试,具体的调试方法和过程,将在本章的后面进行介绍。所有的软件和硬件电路全部调试通过,并不意味着单片机系统的设计成功,还需要通过实际运行来调整系统的运行状态,例如系统中的A/D转换结果是否正确,如果不正确,是否要调零和调整基准电压等。784.资料与文件整理编制阶段当系统全部调试通过后,就进入资料与文件整理编制阶段。资料与文件包括:任务描述、设计的指导思想及设计方案论证、性能测定及现场试用报告与说明、使用指南、软件资料(流程图、子程序使用说明、地址分配、程序清单)、硬件资料(电原理图、元件布置图及接线图、接插件引脚图、线路板图、注意事项)。文件不仅是设计工作的结果,而且是以后使用、维修以及进一步再设计的依据。因此,一定要精心编写,描述清楚,使数据及资料齐全。8913.2单片机应用系统设计本节介绍如何进行单片机应用系统的设计。主要从硬件设计和软件设计两个方面考虑。

13.2.1硬件设计应考虑的问题在硬件设计时,应重点首先考虑以下几个问题。1.尽可能采用高集成度功能强的芯片(1)单片机的选型。随着集成电路技术的飞速发展,单片机的集成度越来越高,许多外围部件都已集成在芯片内,有许多单片机本身就是一个系统,这样可以省去许多外围部件的扩展工作,使设计工作大大简化。在第1章中,已经910介绍了目前较为流行的各种单片机机型,用户可根据任务的需求,选择合适的机型。例如,目前市场上较为流行的美国Cygnal公司的C8051F0208位单片机,片内集成有8通道A/D、两路D/A、两路电压比较器,内置温度传感器、定时器、可编程数字交叉开关和64个通用I/O口、电源监测、看门狗、多种类型的串行总线(两个UART、SPI)等。使用1片C8051F0208位单片机,就构成了一个应用系统。再如,如果系统需要较大的I/O驱动能力和较强的抗干扰能力,可考虑选用PIC单片机或AVR单片机。(2)优先选用片内带有较大容量Flash存储器的产品。例如,使用ATMEL公司的AT89S52/AT89S53/AT89S54/

AT89S55系列产品,1011PHILIPS公司的89C58(内有32KB的Flash存储器)等,可省去扩展片外程序存储器的工作,减少芯片数量,缩小系统的体积。(3)RAM容量的考虑。大多数单片机片内的RAM单元有限,当需增强软件数据处理功能时,往往觉得不足,这时可选用片内具有较大RAM容量的单片机,例如PIC18F452。(4)对I/O端口留有余地。在用户样机研制出来进行现场试用时,往往会发现一些被忽视的问题,而这些问题是不能单靠软件措施来解决的。如有些新的信号需要采集,就必须增加输入检测端;有些物理量需要控制,就必须增加输出端。如果在硬件设计之初就多设计留有一些I/O端口,这些问题就会迎刃而解了。1112(5)预留A/D和D/A通道。与上述的I/O端口同样的原因,留出一些A/D和D/A通道将来可能会解决大问题。2.以软代硬原则上,只要软件能做到且能满足性能要求,就不用硬件。硬件多了不但增加成本,而且系统故障率也会提高。以软件代硬件的实质,就是以时间换空间,软件执行过程需要消耗时间,因此这种替代带来的问题是实时性下降。在实时性满足要求的场合,以软代硬是合算的。3.工艺设计工艺设计包括机箱、面板、配线、接插件等。必须考虑到安装、调试、维修的方便。另外,硬件抗干扰措施(将在本章的后面介绍)也必须在1213硬件设计时一并考虑进去。13.2.2典型的单片机应用系统典型的单片机应用系统框图如图13-1所示。典型的单片机应用系统主要由单片机基本部分、输入部分和输出部分组成。(1)单片机基本部分基本部分由单片机及其扩展的外设及芯片,如键盘、显示器、打印机、数据存储器、程序存储器以及数字I/O等组成。1314图13-1

单片机典型应用系统框图15(2)输入部分这是“测”的部分,被“测”的信号类型有:数字量、模拟量和开关量。模拟量输入检测的主要包括信号调理电路以及A/D转换器。A/D转换器中都集成了包括多路切换、采样保持、A/D转换等电路,A/D转换器或者直接集成在单片机片内。连接传感器与A/D转换器之间的桥梁是信号调理电路,传感器输出的模拟信号要经过信号调理电路对信号进行放大、滤波、隔离、量程调整等,变换成适合A/D转换的电压信号。信号放大通常由单片式仪表放大器承担。仪表放大器对信号进行放大比普通运算放大器具有更优异的性能。如何根据不同的传感器正确地选择仪表放大器来进行信号调理电路的设计,请读者参阅有关资料和文献。1516(3)输出部分这部分是应用系统“控”的部分,包括数字量、开关量控制信号的输出和模拟量控制信号(常用于伺服控制)的输出。13.2.3系统设计中的总线驱动一个单片机应用系统有时往往是多芯片系统,如何实现AT89S51单片机对多片芯片的驱动的问题。在AT89S51单片机扩展多片芯片时,要注意AT89S51单片机4个并行双向口的P0~P3口的驱动能力。下面首先讨论这个问题。1617AT89S51的P0、P2口通常作为总线端口,当系统扩展的芯片较多时,可能造成负载过重,致使驱动能力不够,系统不能可靠地工作,所以通常要附加总线驱动器或其他驱动电路。因此在多芯片应用系统设计中首先要估计总线的负载情况,以确定是否需要对总线的驱动能力进行扩展。图13-2为AT89S51单片机总线驱动扩展原理图。P2口需要单向驱动,常见的单向总线驱动器为74LS244。

图13-3为74LS244引脚图和逻辑图。8个三态驱动器分成两组,分别由1G*和2G*控制。P0口作为数据总线,是双向传输,驱动器应为双向驱动、三态输出,并由两个控制端来控制数据传送方向。如图13-2所示,数据输出允许控制1718图13-2AT89S51单片机总线驱动扩展原理图19端DBEO有效时,数据总线输入为高阻态,输出为开通状态;数据输入允许控制端DBEI有效时,则状态与上相反。常见的双向驱动器为74LS245,图13-4为其引脚和逻辑图。16个三态门中每两个三态门组成一路双向驱动。驱动方向由G*、DIR两个控制端控制驱动器有效或高阻态,在控制端有效(G*=0)时,DIR控制端控制驱动器的驱动方向,DIR=0时驱动方向为从B至A,DIR=1时则相反。

192020图13-3

单向驱动器74LS244引脚图和逻辑图21图13-474LS245的引脚图和逻辑图22图13-5所示为AT89S52单片机应用系统总线驱动扩展电路图。P0口的双向驱动采用74LS245,如图13-5(a)所示;P2口的单向驱动器采用74LS244,如图13-5(b)所示。P0口的双向驱动器74LS245的G*接地,保证芯片一直处于工作状态,而输入/输出的方向控制由单片机的数据存储器的“读”控制引脚(RD*)和程序存储器的取指控制引脚(PSEN*)通过与门控制DIR引脚实现。这种连接方法无论是“读”数据存储器中数据(RD*有效)还是从程序存储器中取指令(PSEN*有效),都能保证对P0口的输入驱动;除此以外的时间(RD*及PSEN*均无效),保证对P0口的输出驱动。对于P2口,因为只用作单向的地址输出,故74LS244的驱动门控制端1G*、2G*接地。

222323图13-5AT89S52单片机应用系统中的总线驱动扩展电路图2413.2.4软件设计考虑的问题在进行应用系统的总体设计时,软件设计和硬件设计应统一考虑,相互结合进行。当系统的硬件电路设计定型后,软件的任务也就明确了。一般来说,软件的功能分为两大类。一类是执行软件,它能完成各种实质性的功能,如测量、计算、显示、打印、输出控制等;另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度的角色。设计人员在进行程序设计时应从以下几个方面加以考虑。(1)根据软件功能要求,将系统软件分成若干相对独立的部分,设计出合理的软件总体结构,使其清晰、简洁、流程合理。2425(2)各功能程序实行模块化、子程序化。既便于调试、链接,又便于移植、修改。(3)在编写应用软件之前,应绘制出程序流程图。多花一些时间来设计程序流程图,就可以节约几倍于源程序的编辑和调试时间。(4)要合理分配系统资源,包括ROM、RAM、定时器/计数器、中断源等。其中最关键的是片内RAM分配。对AT89S52单片机来讲,片内RAM指00H~FFH单元,这256个字节的功能不完全相同,分配时应充分发挥其特长,做到物尽其用。例如,在工作寄存器的8个单元中,R0和R1具有指针功能,是编程的重要角色,避免作为它用;20H~2FH这16个字节2526具有位寻址功能,用来存放各种标志位、逻辑变量、状态变量等;设置堆栈区时应事先估算出子程序和中断嵌套深度及程序中堆栈操作指令使用情况,其大小应留有余量。若系统中扩展了RAM存储器,应把使用频率最高的数据缓冲器安排在片内RAM中,以提高处理速度。当RAM资源规划好后,应列出一张详细的RAM资源分配表,以备编程时查用方便。13.2.5软件的总体框架设计设计者在软件设计时,感觉比较困难的是如何进行系统软件的总体框架设计。下面给出一个典型的例子,供读者在软件设计时参考。【例13-1】有一个AT89S51单片机的应用系统,假设5个中断源都已用到,应用系统的程序框架如下。

262727282929

上述程序框架仅供参考,当然在实际设计中,5个中断源也未必全用。3013.3单片机应用系统的仿真开发与调试当一个单片机应用系统(用户样机)完成了硬件和软件设计,全部元器件安装完毕后,在用户样机的程序存储器中放入编写好的应用程序,系统即可运行。但应用程序运行一次性成功几乎是不可能的,多少会存在一些软件、硬件上的错误,这就需要借助单片机的仿真开发工具(在线仿真器)进行调试,发现错误并加以改正。AT89S51单片机只是一个芯片,既没有键盘,又没有CRT、LED显示器,也无法进行软件的开发(如编辑、汇编、调试程序等),因此,必须借助仿真开发工具所提供的开发手段来进行。一般来说,仿真开发工具应具有如下最基本的功能。3031(1)用户样机程序的输入与修改。(2)程序的运行、调试(单步运行、设置断点运行)、排错、状态查询等功能。(3)用户样机硬件电路的诊断与检查。(4)有较全的开发软件。用户可用汇编语言或C语言编制应用程序;由开发系统编译连接生成目标文件、可执行文件。配有反汇编软件,能将目标程序转换成汇编语言程序;有丰富的子程序可供用户选择调用。(5)将调试正确的程序写入到程序存储器中。下面介绍常用的仿真开发工具。31321.仿真开发系统简介通用机仿真开发系统是目前设计者使用最多的一类开发装置,由在线仿真器与PC机上运行的仿真开发软件两部分组成。这是一种通过PC机的USB口,外加在线仿真器的在线仿真开发系统,如图13-6所示。在调试用户程序时,在线仿真器一侧与PC机的USB口相连,另一侧的仿真插头插入到用户样机的单片机插座上,来对样机上的单片机进行“仿真”。从仿真插头向在线仿真器看去,看到的就是一个“单片机”。这个“单片机”是“出借”给用户样机的,暂时代替用户样机上的单片机。仿真开发系统除了“出借”单片机外,还“出借”仿真用的RAM,来暂收代33图13-6

通用机仿真开发系统34替用户样机上的程序存储器,存放待调试的用户程序。但是这个“单片机”片内程序的运行是可以跟踪、修改和调试的。由于有PC机上强大的仿真开发软件支持,可在PC机的其屏幕上观察用户程序的运行情况,当按照图13-6将仿真开发系统与PC机联机后,用户可利用PC机上的仿真开发软件,在PC机上编辑、修改源程序,然后通过翻译软件(汇编语言编程翻译软件为汇编程序,C51语言编程翻译软件为相应的编译程序)将其汇编成机器代码,传送到在线仿真器中的“仿真RAM”中,这时用户可使用在线仿真器,采用单步、断点、跟踪、全速等手段调试用户程序,并进行修改和查找软、硬件故障,将系统状态实时地显示在屏幕上。待程序调试通过后,再使用仿真开发系统提供的编程器或专用编程器,把调试完毕的程序写入到单片机片内的Flash程序存储器中。3435此类仿真开发系统配置不同的在线仿真器,可仿真开发各种单片机。但是随着ISP技术的普及,对于AT89S5x单片机也可不使用在线仿真器以及编程器,用户只需要在PC机上修改程序,然后将修改的程序直接写入用户样机的单片机的Flash存储器中,运行程序观察运行结果,如有问题可在PC机上修改程序,重新在线写入,直至运行结果满意为止。这样可省去在线仿真器和编程器,但不足的是,不能对用户程序进行硬件单步、断点、跟踪、全速等手段来调试。

3536在工业现场,往往没有PC机的支持,此时可使用独立型仿真器。该类仿真器采用模块化结构,配有不同外设,如外存板、打印机、键盘/显示器等,用户可根据需要选用。由于没有PC机,这时使用独立型仿真器来进行的仿真调试工作,要输入机器码,稍显麻烦一些。2.软件仿真开发工具Proteus

使用软件虚拟仿真开发工具Proteus进行单片机系统的设计与仿真,不需要在线仿真器,也不需要用户样机,直接就可以在PC机上进行。调试完毕的软件可采用ISP技术将其机器代码写入到片内Flash程序存储器中,一般能直接投入运行。但Proteus是软件模拟器是使用纯软件来对用户系统仿真,不能进行用户样机硬件部分的诊断与实时在线仿真。因此在系统的开发中,一般是先用3637Proteus仿真软件设计出系统的虚拟的硬件原理电路,编写程序,在Proteus环境下仿真调试通过。然后再依照仿真的结果,完成实际的硬件设计,再将仿真调试通过的程序写入到用户样机的Flash存储器中,观察运行结果,如果有问题,再连接硬件仿真器去分析、调试。3.用户样机的源程序调试下面介绍如何使用仿真开发工具进行汇编语言源程序编写、调试以及与用户样机硬件联调工作。用户源程序调试过程如图13-7所示,可分为以下4个步骤。3738图13-7

用户样机软件设计、调试的过程3939(1)输入用户源程序。用户使用编辑软件,按照汇编语言源程序要求的格式、语法规定,把源程序输入到PC机中,并保存在磁盘上。(2)在PC机上,利用汇编程序对用户源程序进行汇编,直至语法错误全部纠正为止。如无语法错误,则进入下一个步骤。(3)动态在线调试。这一步对用户的源程序进行调试。上述的步骤(1)、步骤(2)是一个纯粹的软件运行过程,而在这一步,必须要有在线仿真器配合,才能对用户源程序进行调试。用户程序中分为与用户样机硬件无关以及与用户样机紧密相关的程序。对于与用户样机硬件无关的程序,如计算程序,虽然已经没有语法错误,但可能存在逻辑错误,使计算结果不正确,此时必须借助于在线仿真器的4040动态在线调试手段,如单步运行、设置断点等,发现逻辑错误,然后返回到步骤(1)修改,直至逻辑错误纠正为止。对于与用户样机硬件紧密相关的程序段(如接口驱动程序),一定要先把在线仿真器的仿真插头插入用户样机的单片机插座中(见图13-6),进行在线仿真调试,利用仿真开发系统提供单步、设置断点等调试手段,来进行系统的调试。有关部分程序段运行有可能不正常,可能是软件逻辑上有问题,也可能是硬件有故障,必须先通过在线仿真调试程序提供的调试手段,把硬件故障排除以后,再与硬件配合,对用户程序进行动态在线调试。对于软件的4141逻辑错误,则返回到第一步进行修改,直至逻辑错误消除为止。在调试这类程序时,硬件调试与软件调试是不能完全分开的。许多硬件错误是通过软件的调试而发现和纠正的。(4)将调试完毕的用户程序通过编程器或ISP写入,固化在程序存储器中。4.用户样机的硬件调试

当用户样机全部焊接完毕,就可对用户样机的硬件进行调试。首先进行静态调试,静态调试的目的是排除明显的硬件故障。4242(1)用户样机的静态调试静态调试工作分为两步。第一步是在样机加电之前,根据硬件逻辑设计图,先用万用表等工具,仔细检查样机线路是否连接正确,并核对元器件的型号、规格和安装是否符合要求,应特别注意电源系统的检查,以防止电源的短路和极性错误,并重点检查系统总线(地址总线、数据总线、控制总线)是否存在相互之间短路或与其他信号线的短路。

第二步是加电后检查各芯片插座上有关引脚的电位,仔细测量各点电平是否正常,尤其应注意AT89S51插座的各点电位,若有高压,与在线仿真器联机调试时,将会损坏在线仿真器。4343具体步骤如下。

电源检查。当用户样机板连接或焊接完成之后,先不插主要元器件,通上电源。通常用+5V直流电源(这是TTL电源),用万用表电压档测试各元器件插座上相应电源引脚电压数值是否正确,极性是否符合。如有错误,要及时检查、排除,以使每个电源引脚的数值都符合要求。各元器件电源检查。断开电源,按正确的元器件方向插上元器件。最好是分别插入,分别通电,并逐一检查每个元器件上的电源是否正确,直到最后全部插上元器件。通电后,每个元器件上电源值应正确无误。

检查相应芯片的逻辑关系。检查相应芯片逻辑关系通常采用静态电平检查法,即在一个芯片信号的输入端加入一个相应电平,检查输出电平是否正确。单片机系统大都是数字逻辑电路,使用电平检查法可首先检查出逻辑设计是否正确,选用的元器件是否符合要求,逻辑关系是否匹配,元器件连接关系是否符合要求等。44(2)用户样机的在线仿真调试在静态调试中,对用户样机硬件进行初步调试,只能排除一些明显的静态故障。用户样机中的硬件故障(如各个部件内部存在的故障和部件之间连接的逻辑错误)主要是靠联机在线仿真来排除的。在断电情况下,除AT89S51单片机外,插上所有的元器件,并把在线仿真器的仿真插头插入样机上AT89S51单片机的插座(见图13-6),然后分别打开用户样机和仿真器电源后便可开始联机在线仿真调试。前面已经介绍,硬件调试和软件调试是不能完全分开的,许多硬件错误是在软件调试中发现和被纠正的。所以,在之前介绍的有关用户样机444545

软件调试的第(3)步的动态在线调试中,即包括联机仿真、硬件在线动态调试以及硬件故障的排除。下面介绍在仿真开发机上如何利用简单调试程序检查用户样机。利用仿真开发系统对用户样机进行硬件检查,常常按其功能及I/O通道分别编写相应简短的实验程序,来检查各部分功能及逻辑是否正确,下面做简单介绍。①检查各地址译码输出

通常,地址译码输出是一个低电平有效信号。因此在选到某一个芯片时(无论是内存还是外设),其片选信号用示波器检查应该是一个负脉冲信号。下面讨论如何检查地址译码器输出。例如,一片RAM6116存储芯片地址为2000~27FFH,则在开发系统上执行如下程序:46 LOOP: MOV DPTR,#2000H

MOVX A,@DPTR SJMP LOOP程序执行后,应该从6116存储器芯片的片选端看到等间隔的一串负脉冲,说明该芯片片选信号连接是正确的,即使不插入该存储器芯片,只测量插座相应片选引脚也会有上述结果。用同样方法,可将各内存及外设接口芯片的片选信号逐一进行检查。如出现不正确的现象,就要检查片选线连线是否正确,有无接触不良或错线、断线问题。4747②检查RAM存储器检查RAM存储器时可编写程序,对RAM存储器进行写入,然后再读出,将写入和读出的数据进行比较,发现错误,立即停止。将存储器芯片插上,执行如下程序:4848

如一片RAM芯片的每个单元都出现问题,则有可能是某些控制信号连接不正确;如一片RAM芯片中一个或几个单元出现问题,则有可能是这一芯片本身是不好的,可换一片再测试一下。③检查I/O扩展接口

对可编程接口芯片,如82C55,首先要对该接口芯片进行初始化,再对其I/O端口进行I/O操作。初始化要按系统设计要求进行,这个初始化程序调试好后就可作为正式编程的相应内容。程序初始化后,可对其端口进行读/写。对开关量I/O来讲,在用户样机板上可利用钮子开关和发光二极管进行模拟,也可直接接上驱动板进行检查。一般情况下,用户4949样机板先调试,驱动板单独进行调试,这样故障排除更方便些。如用自动程序检查端口状态不易观察时,可用开发系统的单步功能,单步执行程序,检查内部寄存器的有关内容或外部相应信号的状态,并确定开关量输入/输出通道连接是否正确。若外扩一片82C55芯片,端口地址为B000~B003H,A口为方式0输入,B口、C口都为方式0输出,则可用下述程序进行检查:50505151对于锁存器和缓冲器,可直接对其端口进行读/写,不存在初始化的问题。通过上面介绍的调试用户样机过程,读者可以体会到离开仿真开发系统就根本不可能进行用户样机的软硬件的联调,而调试的关键步骤—动态在线仿真调试,又完全依赖于开发系统中的在线仿真器。所以,开发系统的性能优劣,主要取决于在线仿真器的性能优劣,在线仿真器所能提供的仿真开发手段,直接影响设计者的设计、调试工作的效率。所以,对于设计者来说,在了解目前的开发系统的种类和性能之后,选择一个性/价比高的仿真开发系统,并能够熟练地使用它来调试用户样机是十分重要的。5213.4单片机应用系统的抗干扰与可靠性设计随着单片机应用系统在工业测控领域的广泛应用,单片机系统的可靠性越来越受到人们的关注。单片机系统的可靠性是由多种因素决定,其中的抗干扰性能的好坏是影响系统可靠性的重要因素。一般把影响单片机测控系统正常工作的信号称为噪声,又称干扰。在单片机系统中,出现了干扰,就会影响指令的正常执行,造成控制事故或控制失灵;会在测量通道中产生干扰,使测量产生误差。本节介绍在单片机应用系统设计中的抗干扰设计以及提高可靠性的一些方法和措施。5313.4.1AT89S51片内看门狗定时器的使用有关AT89S51片内看门狗定时器的工作原理已在第2章作了介绍。“看门狗”技术就是使用一个WDT计数器来不断计数,监视程序的运行。当WDT计数器启动运行后,为防止WDT计数器的不必要溢出,在程序正常运行过程中,应定期性地把WDT计数器清0,以保证其不溢出。AT89S51单片机片内集成的“看门狗”WDT包含一个14位计数器和看门狗定时器复位寄存器(WDTRST)。当单片机的程序“跑飞”或陷入“死循环”时,也就不能定时地把WDT计数器清0。当WDT的14位计数器值计满溢出时,将在AT89S51的RST引脚上输出一个正脉冲(其宽度是98个时钟振荡周期),使AT89S51单片机复位,在系统的复位入口0000H处安排一条跳向出错处理程序段的指令或重新从头执行程序,从而使程序摆脱“跑飞”或“死循环”状态。54使用看门狗时,用户只要向寄存器WDTRST(地址为A6H)先写1EH,紧接着写入E1H,WDT的计数器便启动计数,程序段如下:

MOVWDTRST,#1EH ;先向WDTRST写入1EH MOVWDTRST,#0E1H ;再向WDTRST写入E1H在实际应用中,为防止WDT计数器启动后产生不必要的溢出,应在执行程序的过程中,用户不断地复位WDTRST,即向WDTRST寄存器写入数据1EH和E1H。在程序编写中,一般把复位WDTRST的这两条指令,设计为一个子程序,只要在程序的正常运行中,不断调用该子程序,把计数器清0,使其不溢出即可。55注意寄存器WDTRST是只写寄存器,而WDT中的计数器既不可写,也不可读,一旦溢出,便停止计数。13.4.2指令冗余和软件陷阱当单片机系统由于干扰而使程序运行发生混乱、导致程序乱飞或陷入死循环,须采取使程序纳入正规的措施,例如,经常采用的措施是指令冗余和软件陷阱。1.指令冗余单片机程序运行时取指令是先取操作码,再取操作数。当单片机系统受干扰出现错误时,程序便脱离正常轨道“乱飞”。当乱飞到某双字节指令,5556若取指令时刻落在操作数上,误将操作数当作操作码,程序有可能出错。若乱飞到三字节指令,出错概率更大,这时可在双字节指令和三字节指令后插入两个字节以上的NOP指令,可保护其后的指令不被拆散,称指令冗余。采用指令冗余无疑会降低系统的效率。因此,仅在一些对程序流向起决定作用的指令之前插入两条NOP指令。此类指令有RET、RETI、ACALL、LCALL、SJMP、AJMP、LJMP、JZ、JNZ、JC、JNC、JB、JNB、JBC、CJNE、DJNZ等。另外在某些对系统工作状态至关重要的指令(如SETBEA之类)前也可插入两条NOP指令,一旦程序乱飞时,保证使程序迅速纳入正轨。5657指令冗余可减少程序乱飞的次数,使其很快纳入程序轨道,但这并不能保证程序在失控期间不干坏事,更不能保证程序纳入正常轨道后就太平无事了。程序的运行事实上已经偏离了正常顺序,有可能做着它现在不该做的事情。解决这个问题还必须采用软件容错技术(限于篇幅,这里不作介绍),可使系统的误动作减少,并消灭重大误动作。2.软件陷阱就是一条引导指令“LJMPERP”,强行将乱飞的程序引向一个指定的地址入口标号“ERP”,在那里有一段专门对程序出错进行处理的程序。为加强其捕捉效果,一般还在它前面加两条NOP指令。 NOP NOP LJMP ERP5758软件陷阱一般安排在以下4种地方。(1)未使用的中断向量区:0003H~002FH当干扰使未使用的中断开放,并激活这些中断时,就会进一步引起混乱。如果在这些地方布上陷阱,就能及时捕捉到错误中断。例如,系统共使用3个中断

INT0*、T0、T1,它们的中断子程序分别为PGINT0、PGT0和PGT1,建议按如下方式来设置中断向量区:

ORG 0000H0000 START:

LJMPMAIN ;引向主程序入口0003 LJMPPGINT0 ;

中断入口58590006 NOP

;指令冗余与软件陷阱0007 NOP

;0008 LJMP ERP

;000B LJMPPGT0 ;T0中断入口000C NOP

;指令冗余与软件陷阱000D NOP

;000E LJMP ERP0013 LJMPERP ;未使用

中断,设指令冗余与软件陷阱001B LJMPPGT1 ;T1中断入口001E NOP ;指令冗余与软件陷阱001F NOP0020 LJMPERP ;0023 LJMPERP ;未使用串口中断,设指令冗余与软件陷阱0026 NOP ;指令冗余与软件陷阱0027 NOP ;59600028 LJMPERP ; ………0100MAIN:………

;主程序入口 ………(2)未使用的程序存储器空间对未用程序存储器空间,一般均维持原态(FFH)。FFH单字节指令(MOVR7,A),程序弹飞到这一区域后将顺流而下,不再跳跃(除非受到新的干扰)。这时,只要每隔一段设置一个陷阱,就一定能捕捉到乱飞的程序。软件陷阱一定要指向出错处理子程序ERP。可将ERP安排在0030H开始的地方,这样就可用00H,00H,02H,00H,30H五个字节(指令NOP,NOP,LJMPERP的机器码)作陷阱来填充EPROM中的未使用空间,或每隔一段设一个陷阱(020030),其他单元保持FFH不变。6061(3)表格两类表格。一类是数据表格,供“MOVCA,

@A+PC”指令或“MOVCA,@A+DPTR”指令使用,其内容完全不是指令;另一类是跳转表格,供“JMP@A+DPTR”指令使用,为一系列的三字节指令LJMP或两字节指令AJMP。由于表格内容和检索值有一一对应关系,在表格中间安排陷阱将会破坏其连续性和对应关系,所以只能在表格的最后安排五字节陷阱(NOP,NOP,LJMPERP)。由于表格区一般较长,安排在最后的陷阱不能保证一定捕捉到乱飞的程序,可能中途再次飞走,这时只好由别处的陷阱或冗余6162指令来制伏。

(4)程序区由一串执行指令构成的,不能在这些指令串中间任意安排陷阱,否则将影响正常程序执行。但是,在这些指令串之间常有一些断裂点,正常执行的程序到此便不会继续往下执行,这类指令有LJMP、SJMP、AJMP、RET、RETI。这时PC的值应发生正常跳变。如果还要顺次往下执行,必然会出错。在这种地方安排陷阱之后,就能有效地捕捉住它,而又不影响正常执行的程序流程。6263例如,在一个根据累加器的正、负、零值的进行跳转的三分支程序中,软件陷阱的安置方式如下:

JNZ L1 ;A中内容非零,跳转L1程序段

……

;A中内容为零的处理程序段 AJMP L3 ;断裂点

NOP ;指令冗余和软件陷阱 NOP ;

LJMP ERR ;L1:

JB Acc.7,L2

……

LJMP L3 ;断裂点

6364

NOP ;指令冗余和软件陷阱 NOP ; LJMPERR ; L2:

…… L3:

MOV A,

R2 ;取结果

RET ;断裂点

NOP ;指令冗余和软件陷阱 NOP ; LJMPERR ;由于软件陷阱都安排在正常程序执行不到的地方,故不影响程序执行效率。在程序存储器容量不成问题的条件下,多设置陷阱是有益的。646513.4.3软件滤波对实时数据采集系统,为了消除传感器通道中的干扰信号,常采用硬件滤波器先滤除干扰信号,再进行A/D转换。也可采用先A/D转换,再对A/D转换后的数字量进行软件滤波消除干扰。下面介绍几种软件滤波的方法。1.算术平均滤波法对一点数据连续取n个值进行采样,然后求算术平均。这种方法一般适用于具有随机干扰的信号的滤波。这种信号的特点是有一个平均值,信号在某一数值范围附近上下波动。6566这种滤波法,当n值较大时,信号的平滑度高,但灵敏度低;当n值较小时,平滑度低,但灵敏度高。应视具体情况选取n值,既要节约时间,又要滤波效果好。对于一般流量测量,通常取经验值n

=

12;若为压力测量,则取经验值n

=

4。一般情况下,经验值n取3~5次平均即可。读者可根据上述设计思想,设计出算术平均滤波法的子程序AVGFIL。66672.滑动平均滤波法算术平均滤波法,每计算一次数据需要测量n次。对于测量速度较慢或要求数据计算速度较快的实时控制系统来说,该法无效。介绍一种只需测量一次,就能得到当前算术平均值的方法——滑动平均滤波法。滑动平均滤波法把n个采样值看成一个队列,队列的长度为n,每进行一次采样,就把最新的采样值放入队尾,而扔掉原来队首的一个采样值,这样在队列中始终有n个“最新”采样值。对队列中的n个采样值进行平均,就可以得到新的滤波值。6768滑动平均滤波法对周期性干扰有良好的抑制作用,平滑度高,灵敏度低;但对偶然出现的脉冲性干扰的抑制作用差,不易消除由此引起的采样值的偏差。因此不适用于脉冲干扰比较严重的场合。通常,观察不同n值下滑动平均的输出响应,据此选取n值,以便既少占有时间,又能达到最好的滤波效果,其工程经验值参考如下:

下例为滑动平均滤波法的参考程序。68参数温度压力流量液面n值1~44124~1269【例13-2】假定n个双字节型采样值,30H单元为采样队列内存单元首地址,n个采样值之和不大于16位。新的采样值存于2EH、2FH单元,滤波值存于50H、51H单元,

AVGFIL为本程序调用的算术平均滤波子程序。参考程序如下:

SAVGFIL:

MOV R2,#n-1 ;n为采样个数 MOV R0,#32H ;队列单元首地址 MOV R1,#33H LOOP:

MOV A,

@R0 ;移动低字节 DEC R0 DEC R0 MOV @R0,A6970 MOV A,R0 ;修改低字节地址 ADD A,#04H MOV R0,A MOV A,@R1 ;移动高字节 DEC R1 DEC R1 MOV @R1,A MOV A,R1 ;修改高字节地址

ADD A,#04H MOV R1,A DJNZR2,LOOP MOV @R0,2EH ;存新的采样值 MOV @R1,2FH

ACALLAVGFIL ;调用求算术平均值子程序 ;AVGFIL,假设已编写

RET70713.中位值滤波法中位值滤波法就是对某一被测参数接连采样n次(一般n取奇数),然后把n次采样值按大小排列,取中间值为本次采样值。中位值滤波能有效地克服因偶然因素引起的波动干扰。对温度、液位等变化缓慢的被测参数采用此方法能收到良好的滤波效果。但对于流量、速度等快速变化的参数一般不宜采用中位值滤波法。中位值滤波法程序设计的实质是,首先把n个采样值从小到大或从大到小进行排序,然后再取中间值。【例13-3】设采样值从8位A/D转换器输入5次,存放在SAMP为首地址的内存单元中,采用中位值滤波。参考程序如下:7172 SAMP EQU30H

ORG 1000HINTER: MOV R2,#04H ;置最大循环次数SORT: MOV A,R2 ;小循环次数→

(R3) MOV R3,A MOV R0,#SAMP ;采样数据首地址→

(R0)LOOP: MOV A,@R0 INC R0 MOV R1,A CLR C SUBB A,@R0 MOV A,R1 JC DONE7273 MOV A,@R0 ;((R0))→((R0)+1) DEC R0 XCH A,@R0 INC R0 MOV @R0,ADONE: DJNZ R3,LOOP ;R3≠0,小循环继续进行 DJNZ R2,SORT ;R2≠0,大循环继续进行 INC R0 MOV A,@R0 RET73744.去极值平均值滤波法在脉冲干扰比较严重的场合,则干扰将会“平均”到结果中去,故前述两种平均值法不易消除由于脉冲干扰而引起的误差。这时可采用去极值平均值滤波法。思想:连续采样n次后累加求和,同时找出其中的最大值与最小值,再从累加和中减去最大值和最小值,按n

2个采样值求平均,即可得到有效采样值。这种方法类似于体育比赛中的去掉最高、最低分,再求平均分的评分办法。为使平均滤波算法简单,n

2应为2、4、6、8或16,故n常取4、6、8、10或18。7475具体做法有两种:对快变参数,先连续采样n次,然后再处理,但要在RAM中开辟n个数据的暂存区;对慢变参数,可边采样,边处理,而不必在RAM中开辟数据暂存区。实践中,为加快测量速度,一般n取4。【例13-4】以n=4为例,连续进行4次数据采样,去掉其中最大值和最小值,然后求剩下两个数据的平均值。R2R3存最大值,R4R5存最小值,R6R7存放累加和及最后结果。当然,连续采样不只限4次,可以进行任意次,这时,只需改变R0中的数值。参考程序如下:7576DEMAXFL:CLR A MOV R2,A ;0→最大值寄存器R2R3 MOV R3,A MOV R6,A ;0→累加和寄存器R6R7

MOV R7,A MOV R4,#3FH ;3FFFH→最小值寄存器R4R5 MOV R5,#0FFH MOV R0,#4HDAV1:

LCALLRDXP ;调采样子程序RDXP,数字量

;从A/D读入B、A中 MOV R1,A ;采样值低位暂存R1,高位在B ADD A,R77677 MOV R7,A ;低位加到R7

MOV A,B ADDC A,R6

MOV R6,A ;高位加到R6,(R6R7)+(BA)→R6R7 CLR C MOV A,R3 SUBB A,R1 MOV A,R2 SUBB A,B JNC DAV2 ;输入值>(R2R3)? MOV A,R1 MOV R3,A MOV R2,B ;输入值→R2R37778DAV2:

CLR C MOV A,R1 SUBB A,R5 MOV A,B SUBB A,R4 JNC DAV3 ;输入值<(R4R5)? MOV A,R1 MOV R5,A ;输入值→R4R5

MOV R4,BDAV3:

DJNZ R0,DAV1 ;n-1=0?

CLR C MOV A,R77879 SUBB A,R3 XCH A,R6 SUBB A,R2 ;n个采样值的累加和减去最大值和最 ;小值,n=4 XCH A,R7 SUBB A,R5 XCH A,R6 SUBB A,R4 CLR C RRC A XCH A,R6 ;剩下的采样值求平均(除2) RRC A MOV R7,A RET798013.4.4开关量输入/输出软件抗干扰设计如干扰只作用在系统I/O通道上,可用如下方法减小或消除其干扰。1.开关量输入软件抗干扰措施干扰信号多呈毛刺状,作用时间短。利用该特点,在采集某一状态信号时,可多次重复采集,直到连续两次或多次采集结果完全一致时才可视为有效。若相邻的检测内容不一致,或多次检测结果不一致,则是伪输入信号,此时可停止采集,给出报警信号。由于状态信号主要来自各类开关型状态传感器,对这些信号采集不能用多次平均方法,必须绝对一致才行。8081在满足实时性前提下,如果在各次采集状态信号间增加一段延时,效果会更好,以对抗较宽时间范围的干扰。延时时间在10~100μs。每次采集的最高次数限制和连续相同次数均可按实际情况适当调整。2.开关量输出软件抗干扰措施输出信号中,很多是驱动各种警报装置、各种电磁装置的状态驱动信号。抗干扰的有效输出方法是,重复输出同一个数据,只要有可能,重复周期应尽量短。外设收到一个被干扰的错误信息后,还来不及作出有效的反应,一个正确的输出信息又到来了,可及时防止错误动作的产生。8182在执行输出功能时,应将有关输出芯片的状态也一并重复设置。例如,82C55芯片常用来扩展输入/输出功能,很多外设通过它们获得单片机的控制信息。这类芯片均应进行初始化编程,已明确各端口的功能。由于干扰的作用,有可能无意中将芯片的编程方式改变。为了确保输出功能正确实现,输出功能模块在执行具体的数据输出之前,应先执行对芯片的初始化编程指令,再输出有关数据。828313.4.5过程通道干扰的抑制措施——隔离在数据采集或实时控制中,过程通道是系统输入、输出与单片机之间进行信息传输的路径,模拟量的输入输出、开关量输入输出是必不可少的。过程通道的输入输出信号线和控制线多,且长度往往达几百米或几千米,因此不可避免地将干扰引入单片机系统。消除或减弱过程通道的干扰主要采用光电隔离技术。83841.光电隔离的基本配置采用光电耦合器可以将单片机与前向、后向以及其他部分切断电路的联系,能有效地防止干扰从过程通道进入单片机。其原理如图13-8所示。

84图13-8

光电耦合隔离的基本配置85优点是能有效抑制尖峰脉冲以及各种噪声干扰,从而使过程通道上的信噪比大大提高。2.光电隔离的实现(1)数据总线的隔离对单片机数据总线进行隔离是一种十分理想方法,全部I/O端口均被隔离。但由于在CPU数据总线上是高速(µS级)双向传输,就要求频率响应为MHz级的隔离器件,而这种器件目前价格较高。因此,这种方法采用不多。通常采用下列方法将ADC、DAC与单片机之间的电气联系切断。8586(2)对A/D、D/A进行模拟隔离

对A/D、D/A转换前后的模拟信号进行隔离,是常用的一种方法。通常采用隔离放大器对模拟量进行隔离。但所用的隔离型放大器必须满足A/D、D/A转换的精度和线性要求。例如,如果对12位A/D、D/A转换器进行隔离,其隔离放大器要达到13位,甚至14位精度,如此高精度的隔离放大器,价格昂贵。图13-9是实现数字隔离的一个例子。该例将输出的数字量经锁存器锁存后,驱动光电隔离器,经光电隔离之后的数字量被送到D/A转换器。8687图13-9

数字隔离原理图88需注意,现场电源F+5V,现场地FGND和系统电源S+5V及系统地SGND,必须分别由两个隔离电源供电。还应指出的是,光电隔离器件的数量不能太多,由于光电隔离器件的发光二极管与受光晶体管之间存在分布电容。当数量较多时,必须考虑将并联输出改为串联输出的方式,这样可使光电器件大大减少,且保持很高的抗干扰能力,但传送速度下降了。888913.4.6印制电路板抗干扰布线的基本原则印制电路板布线好坏对抗干扰能力影响很大,决不单是器件、线路的简单布局安排,须符合抗干扰布线原则。1.地线的布置在单片机测控系统中,地线的布置是否合理,将决定电路板的抗干扰能力。(1)地线宽度加粗地线能降低导线电阻,如有可能,地址宽度应在2~3mm以上,元件引脚上的接地线应该在1.5mm左右。8990(2)接地线构成闭环路在设计逻辑电路的印制电路板时,其地线构成闭环路能明显地提高抗噪声能力。闭环形状能显著地缩短线路的环路,降低线路阻抗,从而减少干扰。但要注意环路所包围的面积越小越好。(3)分区集中并联一点接地当同一印制电路板上有多个不同

温馨提示

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

评论

0/150

提交评论