购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

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

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

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

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

figure_0021_0013

图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设备、程序存储器,以及晶振和复位电路,改正其中的错误。

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

点击中间区域
呼出菜单
上一章
目录
下一章
×