142第八章单片机应用系统的研制和调试教学内容:1、单片机应用系统研制方法2、单片机应用系统的调试方法3、应用举例本章重点:单片机应用系统研制和调试方法教学要求:1、通过本章的学习,应掌握单片机应用系统的研制和调试方法。2、通过应用实例了解单片机应用系统开发过程。3、通过本章的学习,结合单片机原理与编程方法,能进行简单的单片机应用系统的开发与研究。教案:第一节单片机应用系统研制方法单片机应用系统随着用途的不同,它们的硬件和软件结构差别很大,但系统研制的方法和步骤是基本相同的,其研制过程可以用图1表示。1、确定任务如同任何一个新产品设计一样,单片机应用系统的研制过程也是从确定目标系统的任务开始的。在着手系统设计之前,必须确定系统的技术指标,这是系统设计的依据和出发点,它贯串于系统设计全过程的。不管是老产品改造还是新产品设计,应对产品性能改善的程度、成本、可靠性、可维护性以及经济效益等进行综合考虑,参考国内外同类产品的资料,提出比较合理的技术指标。使所设计的产品达到最佳的性能/价格比。应该指出,技术指标在设计过程中还需调整。2、总体设计一般而言,任务和技术指标确定以后,下一步便是调研阶段。这个阶段的任务是通过调查研究和查阅资料来完成系统的总体设计。1)机型和元器件选择选择机型的出发点有以下几方面:·市场的货源:设计者只能在市场上能提供的几个机型中挑选。特别是将作为产143图1单片机应用系统研制过程品生产的系统,所选机种必须有稳定充足的货源。·在研制任务重、时间短的情况下,应选择最熟悉的机种,这样可以缩短研制周期。·选择最容易实现技术指标的机种。一般说来,从性能/价格比考虑,MCS-51系列中测试系统动态性能目标机脱离开发系统插CPU检查错误原因排除样机硬件故障调试硬件,修改软件仿真运行EPROM中目标程序系统研制完成EPROM插入目标样机目标程序固化到EPROM系统达到设计指标否?软件固化错误?有错误否?硬件逻辑框图设计软件结构设计选择机型,划分软,硬件功能确定任务,系统功能,技术指标开始选择器件,完成逻辑设计确定算法,程序流程设计加工,组装样机编写程序程序编译,部分软件调试样机静态测试,插上器件联机仿真调试调整硬件,修改软件仿真运行目标程序调整样机硬件测试样机硬件有故障否?有错误否?144的AT89C51单片机最适合于国内控制型应用领域。还应考虑是否有现成的开发工具。因为开发工具的优劣,往往是产品研制周期长短的决定性因素。元器件的选择应包括传感器、模拟电路、I/O电路等。这些元器件在总体设计阶段,只需了解大体的市场情况,待硬件设计时最后确定。2)硬件和软件的功能划分一般来说,硬件和软件具有一定的互换性。有些由硬件实现的功能依然可以由软件来完成,反之亦然。多用硬件完成一些功能,可以提高工作速度。但增加了硬件成本;若用软件代替某些硬件的功能,可使硬件成本降低,但软件的工作量增加。总体设计时,必须在硬件和软件之间均衡。一般的原则是看所设计的目标系统的生产量,如果成产量比较大,则能用软件实现的功能由软件完成,以便硬件结构简化。3、硬件设计方法单片机系统的各个模块(如存储器、I/O电路)加上模拟电路、传感器等构成硬件电路。前几章对单片机的结构及其功能模块作了介绍,本节重点讨论硬件方案设计。1)程序存储器的容量选择单片机时,应从容量、速度和价格方面考虑。目前市场上不同存储器容量的单片机价格相差不大。所以在固化设备允许的条件下,宜选用容量大的器件,减少外部扩展的程序存储器,简化硬件逻辑。ATMEL的89CXX系列和WINBOND的W77系列是目前国内最实用的单片机,它不要外接EPROM电路作为存储器。2)数据存储器和I/O接口对于数据存储器的容量需求,各个系统之间差别比较大。对于常规的智能仪表和实时控制器,80C51片上RAM已能满足要求。若需要扩展少量的RAM和/IO,可用扩展器8155。如前所述,8155功能强,接口方便,适用于单片机系统。对于单片机系统,如果要求有较大容量的RAM存储器,这时RAM电路选择的原则是尽可能地减小芯片数量。因为存储器容量大的电路性能价格依然高。如32K字节的62256和同样的四片6264相比,前者的价格低于后者。80C51的应用系统一般都需要扩展I/O接口,在选择I/O接口电路时,应从性能、价格和负载等方面考虑。应选用标准I/O接口电路(如8255等),使编程方便,应用灵活,负载小,但它的I/O性和一些功能往往没有被充分利用,造成浪费。选145用TTL电路作I/O口,负载较大,同时因一个电路的口线少,利用率会提高,成本也降低。应根据系统总的接口要求来权衡。模拟电路应根据系统对它的速度、精度和价格来选择。同时还需要和传感器、放大器等匹配。3)地址译码器80C51是根据地址来选择外部扩展电路进行信息交换的。外部的地址由所选择的地址译码来确定。通常采用全地址译码方法或线选法。80C51外部数据存储器和I/O接口电路是统一编址的。若系统只扩展少量的RAM和I/O口电路,则可采用线选法。所谓线选法就是把单独的地址线连接到单独的电路选片端,只要这一位地址为低电平,就选中该片电路。图2给出了线选法的例子。图中6116、8255、8155、0809、0832的地址编码如表1所示。图2线选法连接示意图表1图2的地址编码线选法的优点是硬件线路简单。但由于所用的选片信号线都是高位地址线,它们的权植比较大,因此地址空间没有被充分利用,芯片之间的地址出现不邻接的现象。器件RAM/IO地址器件RAM/IO地址6116F000H~F7FFH8255EFFCH~EFFFH8155RAMDE00H~DEFFH0832BFFFHIODF00H~DF05H08097FFFH146对于RAM和I/O口容量较大的系统,当芯片所需的选片信号多于可利用的地址线时就需采用译码寻址的方法。将低位地址线作为芯片的地址线,用一片译码器对高位地址进行译码,译出的信号作为选片线。一般用74LS138作地址译码器,它的逻辑符号如图3所示,功能如表2所示。以74LS138作地址译码器逻辑如图4所示,图中Y0~Y7非分别对应一个8K字节的地址空间。程序存储器往往采用一片EPROM电路,故把它的选片端接地即可。表274LS138功能表1G2GA2GBCBA1000001111111010000111111101100010111110111000111111011110010011101111100101110111111001101011111110011101111111其他状态×××11111111图374LS138逻辑符号图4地址译码逻辑4)总线驱动器80C51的外部扩展空间很大,电脑扩展总线口(P0P2)和控制信号线的负载能力是147有限的(P0口为8个STTL电路,P2口为4个LSTTL)。若负载过重,P0口需加双向的数据总线驱动器74LS245,P2口接单向驱动器74LS244,其接口方法如图5所示。(a)74LS244和P2口的接口(b)74LS245和P0口的接口图5总线扩展5)可靠性设计工作于恶劣环境下的应用系统,设计时应采取措施,提高系统的可靠性。4、软件设计方法应用系统工作程序(监控软件)的设计,是系统研制中最重要的也是最困难的任务。软件设计的过程如图6所示。1)问题定义问题定义是进一步明确系统对软件的要求,把软件承担的任务明确的定义出来。首先是定义输入/输出。应用系统通过输入/输出通路和外界发生联系,必确定信息交换的方式,输入/输出的速度以及状态信号等。对系统输入/输出的要求,是问题定义的依据。其次,必须确定对输入数据进行哪些处理。把输入数据转变为输出结果的基本点过程,主取决于对算法的确定。就实时控制系统来说,往往对于控制顺序和时间有明确的要求,例如何时发送数据,何时接收数据,有多少延迟等。另外在问题的定义阶段,必须考虑到能发生什么错误,其中最经常发生的是哪种错误等这样一类的问题。并应该弄清哪些错误系统是不能立刻发现的,以及如何排除这种错误。问题定义的基础,是建立在对系统应用环境的正确了解程度和正确的工程判断上的,它对软件设计和硬件设计提供指导。148图6软件设计过程2)软件结构设计在问题定义的基础上,将软件分解为几个相对独立的任务,并根据这些任务的联系和时间关系,设计一个合理的软件结构,使CPU有条不紊地对这些任务进行处理。对于简单的系统,通常用中断方法分配CPU的时间,指定哪些任务由主程序处理,哪些任务由中断服务程序处理,并指定各中断源的优先级别。只要处理恰当,就不会发生时间冲突和任务的相关性矛盾。对于复杂的实时控制系统,应采用实时多任务操作系统,采取合理的调度策略,才能取得满意的效果。软件结构设计还包括程序设计技术选择、程序设计技术、模块程序设计、自顶向下的程序设计和结构程序设计等。在单片机的软件设计中,模块程序设计是最常用方法。模块程序设计方法是把一个完整的程序分成若干个功能相对独立的较小的程序模块,各个程序模块分别进行设计,编制程序和调试,最后将调试好的程序模块联起来。模块程序设计的优点是,单个(功能明确的)程序模块设计和调试比较方便,容易完成。开始建立数据模型编写程序软件结构设计独立式按键结构键盘绘制程序流程图汇编程序有错否?修改程序在线仿真调试固化到EPROM结束149程序模块的划分没有一定的标准,一般可参考以下原则:·每个模块的程序不宜太长;·力求使每个模块之间界限明确,而且在逻辑上相对独立;·对一些简单的任务不必模块化;·尽量地利用现成的模块程序(如仿真机提供80C51子程序)。3)程序设计(1)建立数学模型建立数学模型是根据问题的定义,描叙出各个输入变量和输出变量之间的数学关系。在单片机应用系统中,数学模型的正确程度,是系统性能好坏的决定性因素。数学模型是随系统任务的不同而不同的。例如,在直接数字控制系统中,最简单的方法是数字PID控制算法及其改进形式。在测量系统中,从模拟输入通道得到的温度,流量,压力等现场信息与该信号对应的实际值往往存在非线性关系,则需要进行线性处理。为了削弱或消除干扰信号的影响,提高系精度,常采用算平均发,中值法,惯性数字滤波方法等等。(2)绘制程序流程图通常在编写程序之前先绘制流程图。程序流程图以简明,直观的方式对任务进描述,并很容易由此编写出具体的程序,故它对初学者来说,尤其适用。所谓程序流程图,就是把程序应完成的各种分立操纵,表示在不同的框中,并按一定的顺序用图7查询程序功能流程图连接起来,这种互相联系的框图称为流程图。在设计过程中,先画出简单的功能流程图,图7给出了一个查询程序的功能流程图。接下来对功能流程图进行扩充和具体化。(3)编写程序在完成了流程图设计以后,只要熟悉80C51的指令系统,编写程序是比较方便的。150首先应对数据存贮器进一步详细分配。先分配单片机内部的RAM,指定各模块使用的工作寄存器,分配标志位(20H~2FH的位寻址区),再估算子程序和中断嵌套的最大级数以及程序中栈操作指令使用情况,在此基础上指定堆栈区,栈区的大小应留有余量,最后剩下部分作为数据缓冲器。若有扩展RAM存贮器,应把使用频率最高的数据缓冲器设在内部RAM,以利提高处理速度。在充分利用内部RAM基础上,再分配外部的数据存贮器。在编写程序过程中,应按51汇编语言的符号和格式书写,必要时做若干功能性注释。4)程序的汇编、调试和固化将80C51汇编语言程序在专用的编译软件译成80C51目标程序(机器码),然后采用专用的工具将程序下载到芯片中。第二节单片机应用系统的调试方法单片机应用系统调试分硬件调试和软件调试。1、常见硬件故障分析1)逻辑错误样机硬件的逻辑错误是由于设计错误和加工过程中的工艺性错误所造成的。这类错误包括错线、开路、短路,其中短路是最常见也是最难于排除的故障。单片机系统的体积往往要求很小、,印刷板的布线密度很高,由于工艺原因经常造成引线与引线之间的短路。开路常常是由于金属化孔不好,或接插件接触不良所造成的。2)元器件失效元器件失效的原因有两个方面,一是元器件本身损坏或性能差,诸如电阻、电容