1.2 单片机应用系统概述

1.2.1 单片机应用系统的种类

根据单片机应用场合及系统控制的要求不同,在规模、结构上存在很大不同,根据使用功能器件的种类和数量,可分为基本系统和扩展系统。

1.基本系统

基本系统中,包括一个单片机,在该单片机中含有程序存储器和数据存储器,仅在外部配置了维持系统运行的基本部件,如电源、输入/输出设备,除了这些,还包括不扩充程序存储器、数据存储器、I/O接口,以及其他功能部件,因此也称为最小系统,其结构示意图如图1-3所示。

图1-3 单片机最小系统结构示意图

2.扩展系统

在大多数系统中,由于需要实现一些特殊的功能,采用最小系统无法满足系统的控制要求,所以要扩展特殊功能部件,弥补单片机内部资源的不足。单片机扩展系统通过并行I/O接口或者串行接口做总线,在外部扩展了程序存储器、数据存储器、A/D转换等特殊部件,以满足控制系统的特殊要求,其结构示意图如图1-4所示。

图1-4 单片机扩展系统结构示意图

1.2.2 单片机控制系统的组成

单片机控制系统是由单片机与其他器件和装置适当连接起来的硬件,在软件的操作下协调运行以执行预定的测量或测量控制任务,这些硬件和软件的总体就是单片机测量和控制系统,简称单片机控制系统。顾名思义,单片机测量系统的功能是对某些参数进行测量;单片机控制系统的任务是对生产过程或某些物理量进行控制。要控制就必须要测量,因此,可以认为单片机测量系统是单片机控制系统的一个特例。

像一般的计算机系统一样,单片机的控制系统也是由硬件和软件组成的。硬件是指单片机、扩展的存储器、输入/输出设备、控制设备、执行部件等组成的系统,软件是各种工作程序的总称。硬件和软件只有紧密配合,协调一致,才能组成高性能的单片机控制系统。

1.单片机控制系统的硬件组成

1)单片机测量系统

单片机测量系统是以单片机为核心,单纯以“检测”或“测试”为目的的系统。它是单片机控制系统的一个特例。一般用来对被测过程中的一些物理量进行测量并获得相应的精确测量数据,因此,又称为数据采集系统,其基本组成框图如图1-5所示。

图1-5 单片机测量系统框图

被测参数经传感器转换成模拟信号,再由模拟输入通道进行信号调理和数据采集,转换成单片机要求的数据格式送入单片机进行必要的处理,再送到磁带机、打印机等数据记录器记录下来,这样就得到了供进一步分析和处理的测量数据记录。

为了对测量过程进行集中实时监视,模拟输出通道将单片机处理后的测量数据转换成模拟信号在示波器或图示仪等模拟显示器上显示出来。在某些对生产过程进行检测的场合,当被测参数超过规定限度时,单片机还将及时启动报警器发出报警信号。

目前,在野外现场广泛使用的各种存储式测试记录仪就属于这一类系统,只不过结构比较简单(一般只包括传感器、模拟输入通道、单片机和数据记录仪几部分)。

2)单片机开环控制系统

单片机开环控制系统是以单片机为核心,单纯以程序控制为目的的系统,其组成框图如图1-6所示。

图1-6 单片机开环控制系统框图

程序控制的基本思想是将被控对象的动作次序和各类参数输入单片机,单片机执行固定的程序,一步一步地控制被控对象的动作,以达到预期的目的,其实质上是一种顺序控制,如机床的单片机控制,预先输入切削量、裕量、进给量、工件尺寸和加工步骤等参数,运行时由单片机控制刀具的动作,最后加工出成品。

3)单片机闭环控制系统

单片机闭环控制系统是以单片机为核心的测控一体化系统,这种系统对被控对象的控制是依据对被控对象的测量结果而定的,其基本组成框图如图1-7所示。

图1-7 单片机闭环控制系统框图

图1-7左侧的输入、输出通道,称为过程通道,它是单片机与测控对象的连接通道,分为模拟量输入通道、模拟量输出通道、数字量输入通道和数字量输出通道,其中模拟量输入通道和数字量输入通道统称为前向通道,模拟量输出通道和数字量输出通道统称为后向通道。

2.单片机控制系统的软件组成

单片机控制系统的软件指的是它的全部程序,包括系统软件和应用软件两大类。

1)系统软件

购置的现成计算机,在计算机出厂之前,已把系统软件装入到ROM中,计算机的用户只需熟悉和使用,不能改变。对于自行设计的微机化智能系统,系统软件也需要自行设计,然后固化在EPROM等类似的存储器中。系统软件包括以下内容。

(1)监控(监督)程序或操作系统

监控(监督)程序是一种低级计算机的管理程序。它的功能是扫描键盘,实现人机对话,接收用户程序,显示、调试、修改用户程序,显示和修改存储器中的内容。通电后立即进入监控(监督)程序,各种程序均在监控程序控制下运行。一般在设计单片机智能化仪器、仪表及设备时要自己编制监控(监督)程序。同时在编制用户程序时,可以调用监控程序中的一些子程序,节省用户应用程序的存储空间。

操作系统是一种微型计算机的大型管理程序,是在监控程序的基础上进一步扩展许多控制程序而形成的,其主要功能是实现人机对话,管理微型机、存储器、操作台、外部设备(磁盘驱动器、CRT、打印机及其他外围设备)、文件和作业进程。它控制各种软件,例如,汇编程序、解释程序、编译程序、I/O驱动程序、连接程序等。不同的计算机系统可能有不同的操作系统,如CP/M、CDOS等。

(2)汇编程序、解释程序和编译程序

汇编程序用于把汇编语言程序翻译为计算机能够识别和执行的机器语言程序(也称目标程序)。例如,MCS-51单片机仿真器里有MCS-51汇编程序,用户可以把自己用汇编语言编写的程序送入仿真器,然后把它变为机器语言程序,再把这些机器语言程序固化到EPROM中,EPROM中的程序就可以在用户系统中执行。解释程序能把用某种程序设计语言编写的源程序,翻译成机器语言的目标程序,此目标程序是可执行程序。解释程序翻译一句执行一句。编译程序能把用高级语言编写的源程序,编译成某中间语言或机器目标程序。

2)应用软件

单片机实时控制系统的应用软件是服务于实时控制的程序集合,由单片机实时控制系统的设计者编写。因控制系统的复杂程度和功能差别很大,所以应用软件的差别也很大。应用软件的设计应当留有余地、易于扩展和更改。为此,应用软件宜采用模块化结构,一个程序模块就是一个子程序。主程序的主要任务是调用这些子程序,总的来说,这些子程序可分为两类,分别为通用软件和专用软件。

(1)通用软件

不管控制规模有多大,按什么规律控制,也不管被控对象是什么,一般情况下,有些软件常会被用到,这些软件称为通用软件。例如,数制转换程序,包括二进制数与BCD码之间的相互转换程序;运算程序,包括加、减、乘、除、乘方、开方、函数运算等;数字滤波程序,用于对数据进行处理;工程量程序,在工程显示时往往用到这类程序;查表程序,如查找热电势对应的温度值;报警程序。

(2)专用软件

专用软件是针对某一具体控制系统和不同控制规律编制的程序,主要有数据采集程序、A/D转换程序、D/A转换程序、键盘扫描程序、显示程序、各种控制算法程序(如PID程序、纯滞后补偿算法程序、自适应控制程序等)。

1.2.3 单片机应用系统的开发过程

单片机应用系统是为了完成某项任务而研制开发的用户系统,每个系统针对不同的应用具有不同的功能,但总体设计方法和研制步骤基本相同。本节简要介绍单片机应用系统的一般开发、研制方法。

与一般的计算机系统一样,单片机的应用系统也是由硬件和软件组成的。硬件指单片机、扩展的存储器、输入/输出设备、控制设备、执行部件等组成的系统,软件是各种工作程序的总称。硬件和软件只有紧密配合,协调一致,才能组成高性能的单片机应用系统。

在系统的研制过程中,软、硬件的功能总是在不断地调整,以便相互适应、相互配合,达到最佳性能价格比。单片机应用系统的研制过程包括总体设计、硬件设计、软件设计、系统总体调试四个阶段,但它们不是绝对分开的,有时是交叉进行的,其开发流程图如图1-8所示。

图1-8 单片机应用系统开发流程图

目前,单片机应用系统的设计方法一般是针对具体任务选用合适的单片机,配以必要的存储器、接口芯片和外围设备来构成系统。这类系统中的硬件配置和软件设计完全是按照应用系统的功能进行的。因而系统结构简单、投资少,软、硬件资源能够得到最充分的利用。因为设计人员必须编制必要的系统监控或监督程序、应用功能程序等,所以,软件设计和硬件设计的工作量很大,要求设计人员要有一定的软、硬件开发能力。

1.总体设计

在进行系统设计之前,首先应根据对系统的功能要求及其应用环境等确定合理、具体的功能和技术指标,对应用系统的可靠性、通用性、先进性、可维护性及成本等进行综合考虑,以尽量合理并符合单片机性能及开发工具等因素选择合适的单片机机型。接下来要根据系统中可能涉及的传感器、模拟电路、I/O接口、存储器、打印机、显示器等器件和设备进行器件选择,使之符合系统在精度、速度和可靠性等方面的要求。最后确定硬件和软件的功能划分,由于在系统设计中某些功能用硬件和软件都能实现,在设计中应综合考虑研制周期和成本等因素具体划分软、硬件功能。

2.系统硬件设计

硬件系统设计的任务是根据总体设计要求,在所选择的单片机型的基础上,确定系统扩展所要用的存储器、I/O接口电路、A/D及D/A电路和有关的外围电路等,然后设计出系统的电路原理图。下面分别介绍硬件设计的各个环节。

1)程序存储器的选用

单片机内部没有程序存储器或存储器容量不够时需扩展外部程序存储器。可作为程序存储器的芯片有多种非易失存储器,如EPROM、E2PROM、快擦写Flash存储器和OTP等。从它们的价格和性能特点上考虑,对于大批量生产的已成熟的应用多选用OTP型,其他情况可选用快擦写存储器等。由于目前单片机片内存储器的容量越来越大,如设计的应用系统所需的存储器空间比较小,就没有必要扩充程序存储器了。

2)数据存储器的选用

数据存储器由RAM构成。对于数据存储器的容量要求,各个系统之间差别比较大。有的测量仪器和仪表只需少量的RAM即可,此时应尽量选用容量能符合要求的单片机。对于要求较大容量RAM的系统,对RAM芯片的选择原则是尽可能减少芯片的数量。例如,选一片62256(32KB)比选用4片6264价格低得多,连线也简单。

3)I/O接口电路的设计

由于外设多种多样,这使得单片机与外设之间的接口电路也各不相同。因此,I/O接口电路常常是单片机应用系统中设计最复杂也是最困难的部分之一。在设计I/O接口电路时应从体积、价格、功能、负载等几方面考虑。

I/O接口大致可归类为并行接口、串行接口、数据采集通道(接口)、模拟输出通道(接口)等。目前,有些单片机已将上述各接口集成在单片机内部,使I/O接口的设计大大简化。系统设计时,可以选择含有所需接口的单片机。如要设计专用接口,根据系统的输入/输出要求,也可选用TTL和CMOS芯片进行接口电路的设计。对于A/D和D/A电路芯片的选择,原则上应根据系统对它的精度、速度和价格的要求而定。此外,还要考虑和系统中的传感器、放大器相匹配等问题。

4)译码电路的设计

所有的需要扩展外部存储器和输入/输出接口设计的单片机系统都需要设计译码电路,译码电路的作用是为外设提供片选信号,也就是为它们分配独一无二的地址空间。译码电路在设计时要尽可能简单,这就要求存储器空间分配合理、译码方式选择得当。

考虑到修改方便与保密性强,译码电路除了可以利用常规的门电路、译码器实现外,还可以利用只读存储器与可编程门阵列来实现。

5)总线驱动器的设计

如果单片机外部扩展的器件较多,负载过重,就要考虑设计总线驱动器。例如,MCS-51单片机的P0口负载能力为8个LSTTL逻辑门,P2口负载能力为4个LSTTL逻辑门。如果P0、P2口实际连接的逻辑门数超出上述定额,系统便不能可靠地工作,此时就必须在P0、P2口增加总线驱动器来提高它们的驱动能力。P0口通常使用双向数据总线驱动器74LS245,P2口可使用单向总线驱动器74LS244。

系统扩展和配置设计遵循的原则如下:

(1)尽可能选择典型通用的电路,并符合单片机的常规用法。

(2)系统的扩展与外围设备配置的水平应充分满足应用系统当前的功能要求,并留有适当余地,便于以后进行功能扩充。

(3)整个系统中相关的器件要性能匹配。例如,选用晶振频率较高时,存储器的存取时间就短,应选择存取速度较快的芯片;选择CMOS芯片单片机构成低功耗系统时,系统中的所有芯片都应选择低功耗产品。如果系统中相关的器件差异很大,系统的综合性能将降低,甚至不能正常工作。

(4)应注意在硬件系统设计时,要尽可能充分地利用单片机的片内资源,使自己设计的电路向标准化、模块化靠拢。

硬件设计结束后,应编写出硬件电路原理图及硬件设计说明书。

3.系统软件设计

单片机应用系统是一个整体。软件设计和硬件设计应统一,系统的硬件电路设计定型后,软件的功能也就基本明确了。

一个应用系统中的软件一般是由系统监控程序和应用程序两部分组成的。其中,应用程序用来完成如测量、计算、显示、打印、输出控制等各种实质性功能的软件;系统监控程序是控制单片机系统按预定操作方式运行的程序,负责组织调度各应用程序模块,完成系统自检、初始化、处理键盘命令、处理接口命令、处理条件触发和显示等功能。

软件设计通常分为系统定义、软件结构设计和程序设计三个步骤。

1)系统定义

系统定义的目的就是根据系统软、硬件的功能分工,确定出软件应完成什么功能,其具体步骤如下:

(1)定义说明各输入/输出接口的功能,确定信息交换的方式、与系统接口方式、所占接口地址、读取和输出方式等。如在编写作为实现控制功能的软件时,应明确控制对象、控制信号及控制时序;作为实现处理功能的软件应明确输入是什么,要做什么样的处理(处理算法),产生何种输出。

(2)在程序存储器和数据存储器区域中,合理分配存储空间,其中包括系统主程序、常数表格、数据暂存区域、堆栈区域和入口地址等。

(3)对面板控制开关、按键等输入量,以及显示、打印等输出量也必须给予定义,以此作为编程依据。

(4)针对可能出现的由干扰引起的错误进行容错设计,给出错误处理方案,以达到提高软件可靠性的目的。一种最简单的错误处理就是软件引导重新启动系统。

(5)明确所设计的用户程序应达到的精度、速度指标。

2)软件结构设计

合理的软件结构是设计出一个性能优良的单片机应用系统软件的基础,必须予以充分重视。由系统的定义,可以把整个工作分解为几个相对独立的操作,根据这些操作的相互联系及时间关系,设计出一个合理的软件结构。

对于简单的应用系统,通常采用顺序设计的方法,这种系统软件由主程序和若干个中断服务程序所构成。根据系统各个操作的性质,指定哪些操作由主程序完成,哪些操作由中断服务程序完成,并指定各中断的优先级。

对于复杂的实时控制系统,应采用实时多任务操作系统,这种系统往往要求对多个对象同时进行实时控制,要求对各个对象的实时信息以足够快的速度进行处理并作出快速响应。这就要求提高系统的实时性、并行性。因此,实时多任务操作系统应具备任务调度、实时控制、实时时钟、输入/输出和中断控制、系统调用、多个任务并行运行等分功能。

在程序设计方法上,模块程序设计是单片机应用中最常用的程序设计技术。这种方法是把一个完整的程序分解为若干个功能相对独立的较小的程序模块,对各个程序模块分别进行设计、编制和调试,最后将各个调试好的程序模块连成一个完整的程序。

这种方法的优点是单个程序模块的设计和调试比较方便、容易完成,一个模块可以为多个程序所共享。缺点是各个模块的连接有时有一定难度。

还有一种方法是自上而下设计程序。此方法是先从主程序开始设计,主程序编好后,再编制各从属的程序和子程序。这种方法比较符合人们的日常思维。其缺点是上一级的程序错误将对整个程序产生影响。

3)程序设计

在软件结构设计确定之后就可以进入程序设计了,一般设计过程首先根据问题的定义,描述出各输入变量和输出变量之间的数学关系,即建立数学模型。然后根据系统功能及操作过程,先列出程序的简单功能流程框图(粗框图),再对粗框图进行扩充和具体化,即对存储器、寄存器、标志位等工作单元作具体的分配和说明。把功能流程图中每一个粗框转变为具体的存储单元、寄存器和I/O接口的操作,从而绘制出详细的程序流程图(细框图)。

在完成流程图设计以后,便可编写程序。单片机应用程序可以采用汇编语言,也可以采用某些机器语言,如可通过Keil C51软件来编写C语言等。编写完成后均须汇编成80C51的机器码,经调试正常运行后,再固化到非易失性存储器中去,完成系统的设计。

4.系统总体调试

单片机应用系统的总体调试是系统开发的重要环节。当完成了单片机应用系统的硬件、软件设计和硬件组装后,便可进入单片机应用系统调试阶段。系统调试的目的是要查出用户系统中硬件设计与软件设计中存在的错误及可能出现的不协调问题,以便修改设计,最终使用户系统能正确、可靠地工作。

系统调试包括硬件调试、软件调试和软、硬件联调。根据调试环境不同,系统调试又分为模拟调试与现场调试。各种调试所起的作用是不同的,它们所处的时间段也不一样,不过它们的目的都是为了查出用户系统中存在的错误或缺陷。

通常是先排除明显的硬件故障后再和软件结合起来进行调试。常见的硬件故障有逻辑错误、元器件失效、可靠性差和电源故障等。在进行硬件调试时先进行静态调试,用万用表等工具在样机加电前根据原理图和装配图仔细检查线路,核对元器件的型号、规格和安装是否正确,然后加电检查各点电位是否正常。接下来再借助仿真开发仪器进行联机调试,分别测试扩展的RAM、I/O接口、I/O设备、程序存储器,以及晶振和复位电路,改正其中的错误。

软件调试就是检查系统软件中的错误。常见的软件错误有程序失控、中断错误(不响应中断或循环响应中断)、输入/输出错误和处理结果错误等类型。通常是把各个程序模块分别进行调试,调试通过后再组合到一起进行综合调试,达到预定的功能技术指标后即可将软件固化。