1 引言
目前单片机的应用领域很广, 控制形式多种多样, 不同的场合技术要求各不相同, 它由硬件部分和软件部分组成。硬件是系统的基础, 软件则
是在硬件的基础上对其合理的调配和使用, 从而完成应用系统所要完成的任务。
2 单片机应用系统设计的一般流程
2.1 确定系统的功能与性能
对一个待开发的单片机应用系统, 收集相关的技术资料, 确定系统的功能与性能, 系统功能主要有数据采集、数据处理、输出控制等。每一个
功能又可细分为若干个子功能。比如数据采集可分为模拟信号采样与数字信号采样。模拟信号采样与数字信号采样在硬件支持与软件控制上是
有明显差异的。数据处理可分为预处理、功能性处理、抗干扰等子功能 , 而功能性处理还可以继续划分为各种信号处理等。输出控制按控制对象
不同可分为各种控制功能, 如继电器控制、D/A 转换控制、数码管显示控制等。系统性能主要由精度、速度、功耗、体积、重量、价格、可靠性
的技术指标来衡量。系统研制前, 要根据需求调查结果给出上述各指标的定额。一旦这些指标被确定下来, 整个系统将在这些指标限定下进行设
计。系统的速度、体积、重量、价格、可靠性等指标会左右系统软、硬件的功能的划分。系统功能尽可能用硬件完成, 这样可提高系统的工作速
度,但系统的体积、重量、功耗、硬件成本都相应地增大, 而且还增加了硬件所带来的不可靠因素。用软件功能尽可能地代替硬件功能, 可使系统
体积、重量、功耗、硬件成本降低, 并可提高硬件系统的可靠性, 但是可能会降低系统的工作速度。因此, 在进行系统功能的软、硬件划分时, 一
定要依据系统性能指标综合考虑, 合理搭配软硬件的比重。
2.2 确定系统基本结构
(1)单片机选型
(a)单片机性价比; (b)开发周期。
在选择单片机芯片时, 一般选择内部不含 ROM的芯片比较合适, 如 8031, 通过外部扩展 EPROM 和 RAM 即可构成系统 , 这样不需专门的设备
即可固化应用程序。但是当设计的应用系统批量比较大时, 则可选择带 ROM、EPROM、OTPROM 或 EEPROM 等的单片机, 这样可使系统更加简
单。通常的做法是在软件开发过程中采用 EPROM型芯片, 提高产品的性能价格比。同一般的计算机系统一样, 单片机应用系统的软件和硬件在逻
辑上是等效的。具有相同功能的单片机应用系统, 其软、硬件功能可以在很宽的范围内变化。一些硬件电路的功能可以由软件来实现, 反之亦
然。在应用系统设计中, 系统的软、硬件功能划分要根据系统的要求而定, 多用硬件来实现一些功能, 可以提高速度,减少存储容量和软件研制的工
作量, 但会增加硬件成本, 降低硬件的利用率和系统的灵活性与适应性。相反, 若用软件来实现某些硬件功能可以节省硬件开支, 提高灵活性和适
应性, 但相应速度要下降, 软件设计费用和所需存储容量要增加。因此, 在总体设计时, 必须权衡利弊, 仔细划分应用系统中的硬件和软件的功能。
开发研究与设计技术
2.4 软件设计
整个单片机应用系统是一个整体。在进行应用系统总体设计时, 软件设计和硬件设计应统一考虑, 相结合进行。当系统的硬件电路设计定型后, 软
件的任务也就明确了。
一个应用系统中的软件一般是由系统的监控程序和应用程序两部分构成的。 其中, 应用程序是用来完成诸如计算、显示、打印、输出控制等各
种实质性功能的软件; 系统监控程序是控制单片机系统按预定操作方式运行的程序, 它负责组织调度各应用程序模块, 完成系统自检、初始化、处
理键盘命令、处理接口命令、处理条件触发和显示等功能。
系统软件设计时, 应根据系统软件功能要求, 将系统软件分成若干个相对独立的部分, 并根据它们之间的联系和时间上的关系,设计出合理的软
件总体结构。通常在编制程序前, 先根据系统输入和输出变量建立起正确的数学模型, 然后画出程序流程框图。要求流程框图结构清晰、简捷、合
理。画流程框图时还要对系统资源作具体的分配和说明。编制程序时一般采用自顶向下的程序设计技术, 先设计监控程序再设计各应用程序模
块。各功能程序应模块化, 子程序化, 这样不仅便于调试、连接, 还便于修改和移植。
2.5 硬件调试、软件调试
2.5.1 软件调试
(1)建立用户源程序。
(2)在单片机开发系统上, 对用户源程序进行编译, 直至错误全部纠正为止。
(3)调试。
(a)先独立后联机、先分块后组合
对于用户系统规模较大、任务较多, 即使先行将用户程序分为与硬件无关和依赖于硬件两大部分, 但这两部分程序仍较为庞大的话, 采用对两类程
序块进一步采用分模块调试, 以提高软件调试的有效性。在调试时所划分的程序模块应基本保持与软件设计时的程序功能模块或任务一致, 子模块
的划分与一般模块的划分应一致。
(b) 先单步后连续调试好程序模块的关键是实现对错误的正确定位。准确发现程序(或硬件电路)中错误的最有效方法是采用单步加断点运行方式调
试程序。单步运行可以了解被调试程序中每条指令的执行情况, 分析指令的运行结果可以知道该指令执行的正确性, 并进一步确定是由于硬件电路
错误、数据错误还是程序设计错误等引起了该指令的执行错误, 从而发现、排除错误。
(4)将调试完毕的用户程序通过专用编程器固化在 EPROM中。
2.5.2 硬件调试
(1)静态调试。对用户样机进行调试, 首先要进行静态调试, 静态调试是在用户系统未工作时的一种硬件检查, 静态调试的目的是排除明显的硬件故
障。静态调试的第一步为目测。单片机应用系统中大部分电路安装在印制电路板上, 因此对每一块加工好的印制电路板要进行仔细的检查。检查
它的印制线是否有断线、是否有毛刺、是否与其它线或焊盘粘连、焊盘有否脱落、过孔是否有未金属化现象等。通过目测查出一些明显的器件、
设备故障并及时排除。
第二步为万用表测试, 目测检查后, 可进行万用表测试。先用万用表复核目测中认为可疑的连接或接点, 检查它们的通断状态是否与设计规定相
符。再检查各种电源线与地线之间是否有短路现象。
第三步为加电检查。当给印制板加电时, 首先检查所有插座或器件的电源端是否有符合要求的电压值, 接地端电压值是否接近于零, 接固定电平的
引脚端是否电平正确。然后在断电状态下将芯片逐个插入印制板上的相应插座中。每插入一块做一遍上述的检查, 特别要检查电源到地是否短路,
这样就可以确定电源错误或与地短路发生在哪块芯片上。
第四步是联机检查。因为只有用单片机开发系统才能完成对用户系统的调试, 而动态测试也需要在联机仿真的情况下进行。因此, 在静态检查印制
板、连接、器件等部分无物理性故障后, 即可将用户系统与单片机开发系统用仿真电缆连接起来。联机检查上述连接是否正确, 是否连接畅通、可
靠。
(2) 联机仿真、在线动态调试。在静态调试中, 仅对目标样机硬件进行了初步调试, 只是排除了一些明显的静态故障, 而样机中的硬件故障( 如各部
件内部存在的故障和部件之间连接的逻辑错误) 主要是靠联机仿真排除的。分别打开样机和仿真器电源后,便可开始联机仿真调试, 排除硬件的故
障。单片机开发中除必要的硬件外, 同样离不开软件, 我们写的汇编语言源程序要变为 CPU 可以执行的机器码有两种方法, 一种是手工汇编, 另一种
是机器汇编, 目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码, 用于 MCS- 51 单片机的汇编软件有早期的 A51, 随
着单片机开发技术的不断发展, 从普遍使用汇编语言到逐渐使用高级语言开发, 单片机的开发软件也在不断发展。单片机的程序设计可以使用机器
语言、单片机汇编语言和高级语言三种编程语言。机器语言是 CPU 惟一能够识别的语言, 其他语言必须通过编译后形成机器码供 CPU 识别, 单片
机只能执行机器语言的程序, 将源程序编写好并以扩展名.ASM 保存之后, 应将源程序编译成目标程序。在编译过程中, 能够检验程序的正确性, 并
能发现源程序中的语法错误和一般性的逻辑错误, 但不能检查结构上的错误。如果有错误, 汇编程序会报告, 指出错误位置及错误类型。程序错误
被纠正后, 要重新进行编译调试, 直至程序汇编无误为止。对源程序编译形成目标程序, 只是排除了语法错误和一般性的逻辑错误, 只有将目标程序
应用到目标样机中, 经过仿真调试满足功能要求才能最后写到程序存储器中。仿真调试是对程序功能是否能实现所做的最后检查。
3 汇编或编译
4 程序的仿真调试
使用单片机仿真器提供的软件包中的编辑器来编写单片机程序, 也可以使用 PC 的编辑程序编写程序经过编译、连接后形成目标文件, 并传送到目
标机上直接运行的目标程序。该目标程序可通过 PC 的串行通信接口直接传送到开发系统的 RAM中。
5 结语
本文从单片机应用系统设计的一般流程、研制方法及其所使用的开发工具几个方面来介绍单片机实用开发方法。从总体设计、硬件设计、软件设
计、仿真调试等这四个阶段来详细阐述。
编写:蔡永飞
2015.11.11