单片机应用系统的开发是以单片机为核心,配合一定的外部电路及程序,从而实现特定测量及控制功能的应用系统。其中单片机的选型、资源分配及程序设计是整个系统设计的关键。一般来说,一个完整的单片机应用系统设计包括分析测控系统、单片机选型、硬件资源分配、单片机程序设计、仿真测试并最终下载到实际硬件电路中执行。单片机开发的整个流程如图1-1所示。
图1-1 单片机开发流程
用户在进行单片机应用系统开发时,首先要对该测控系统进行可行性分析及系统总体方案设计。
可行性分析主要是分析整个设计任务的可能性。一般来说,可以通过两种途径进行可行性分析。首先,调研该单片机应用系统或类似设计是否有人做过。如果能找到类似的参考设计,便可以分析其设计思路,并借鉴其主要的硬件及软件设计方案。这样可以在很大程度上减少工作量及自己摸索的时间。如果没有,则需要自己进行整个应用系统的设计;然后,根据现有的硬件和软件条件,以及自己所掌握的知识等来决定该单片机应用系统是否可行。
当完成可行性分析并确认方案可行后,便进入系统整体方案设计阶段。这里,主要结合国内外相关产品的技术参数和功能特性、本系统的应用要求及现有条件,来决定本设计所要实现的功能和技术指标。接着,制订合理的计划,编写设计任务书,从而完成该单片机应用系统的总体方案设计。
在51系列单片机应用系统开发过程中,单片机是整个设计的核心,因此,选择合适的单片机型号很重要。目前,市场上的单片机种类很多,不同厂商均推出很多不同侧重功能的单片机类型。在进行正式的单片机应用系统开发之前,需要了解各个不同单片机的特性,从中做出合理的选择。在进行单片机选型时,主要需要注意以下几点。
●根据应用系统的硬件资源要求,在性能指标满足的情况下,尽量选择硬件资源集成在单片机内的型号,例如ADC、DAC、I 2 C及SPI等。这样便于整个系统的软件管理,可以减少外部硬件的投入,缩小电路板的面积,从而减少投资等。
●仔细调查市场,尽量选用广泛应用、货源充足的单片机型号,避免使用过时且缺货的型号,这样可以使硬件投资不会过时。
●对于手持式设备或其他需要低功耗的设备,尽量选择低电压、低功耗的单片机型号。
●在条件允许的情况下,尽量选择功能强的单片机,这样便于以后的升级扩展。
●对于商业性的最终产品,尽量选择体积小的贴片封装的单片机型号,这样可以减少电路板面积,从而降低硬件成本。
当总体方案及单片机型号确定下来后,需要仔细规划整个硬件电路的资源分配。一般来说,一个单片机应用系统由紧密联系的硬件及软件构成。因此,在进行设计前,需要规划哪些部分的功能用硬件来实现及用什么硬件来实现,以及哪些部分的功能用软件来实现等。这里需要注意以下几点。
●如果单片机的硬件资源丰富,尽量选择使用单片机内部集成的硬件资源来实现,这样可以减少硬件投资,提高集成度。
●对于一些常用的功能部件,尽量选择标准化、模块化的典型电路,这样可以提高设计的灵活性,确保成功率等。
●合理规划单片机的硬件及软件资源,充分发挥单片机的最大功能。
●硬件上最好留有扩展的接口,以方便后期的维护及升级。
●要仔细考虑各部分硬件的功率消耗及驱动能力,驱动能力不够将导致系统无法正确运行。
在整个单片机应用系统的总体方案及硬件分配定型后,便可以着手进入具体的设计阶段。这里,单片机的程序设计是关键,可以根据实际的需要来选择单片机设计语言及开发环境。在单片机程序设计时,主要需要从以下几点来考虑。
●采用结构化的程序设计,将各个功能部件模块化,用子程序来实现,这样便于调试及后续的移植修改等。
●合理使用单片机的资源,包括RAM、ROM、定时器/计数器、中断等。
●尽量采用执行速度快的指令,以充分发挥单片机的性能优势。
●充分考虑软件运行时的状态,避免未处理的运行状态,否则程序运行时易出错,不受控制。
●合理安排各个功能部件的时序,确保程序能正确执行。
●尽量选择使用单片机C语言来进行设计,避免使用汇编语言,除非有特殊要求。这样可以使程序易懂,便于交流和后期维护。
●程序中要尽量添加注释,提高程序的可读性。
单片机仿真测试和程序设计是紧密相关的。在实际的设计过程中,需要经常对各个功能部件进行仿真测试,这样可以及时发现问题,确保模块的正确性。对于整个系统的设计,仿真测试则可以模拟实际的程序运行,观察整个时序及运行状态是否合理。当发现问题时,需要返回程序设计阶段修改设计,进而重新仿真测试,直到程序运行通过。
用户在进行程序设计时,需要选择一个好的编译仿真环境,例如,Keil公司的μVision系列、英国Labcenter Electronics公司的PROTEUS等。如果条件允许,可以选择一款和单片机型号匹配的硬件仿真器。硬件仿真器一般支持在线仿真调试,可以实时观察程序中的各个变量,对程序进行最大程度的测试。
当程序设计通过后,便可以将其下载到单片机中结合整个硬件电路来测试。在实际的硬件电路测试阶段,主要看单片机程序和外部硬件接口是否正常,单片机的驱动能力是否够用,以及整个硬件电路的逻辑时序配合是否正确等。如果发现问题,则要返回设计阶段,逐个解决问题。硬件测试通过后,便可以投入使用或生产。