单片机应用系统设计内容和步骤包括总体设计、功能设计、可靠性设计和系统调试,如图11-1所示。
1.总体设计
在对系统要求进行全面分析之后,确定单片机应用系统的总体方案,画出系统的硬件结构框图和应用程序结构框图,是系统设计中十分重要的一步,合理的总体设计来自于对系统要求的全面分析和对实现方法的正确选择。
图11-1 单片机应用系统设计内容与步骤示意图
(1)制定设计任务书 设计者首先应对系统的任务、控制对象、硬件资源和工作环境作出详尽而周密的调查研究,明确各项设计任务,在此基础上对设计目标、系统功能、处理方案、控制精度、输入/输出速度、地址分配、存储容量、I/O接口和出错处理等给出明确的定义,制定出完整的设计任务书。
(2)建立数学模型 设计者在制定好任务书后,要对测控对象的物理过程和计算任务进行全面分析,从中抽象出数学模型,以真实客观地描述测控过程。
(3)总体方案设计 在设计任务书和数学模型的基础上,确定系统总体方案,划分硬件和软件的任务,完成系统结构设计。
2.系统功能设计
(1)系统软件结构分析与模块设计
1)程序模块的自主性。主程序和若干中断子程序是可以自主运行的程序模块,而普通子程序是不能自主运行的,可以将普通子程序看作主调程序模块的一部分。因此整个系统程序设计就是完成主程序设计和若干个中断子程序设计的过程。
2)程序模块的功能性。系统软件通常包含:自检模块、初始化模块、监控模块、显示输出模块、时钟模块、信息采集模块、数据处理模块、控制决策模块、信号输出模块和通信模块等。
通常,自检模块、初始化模块安排在主程序中系统上电后执行;时钟模块固定安排在定时中断子程序中;通信模块安排在通信中断子程序中;监控模块、显示输出模块、信息采集模块、数据处理模块、控制决策模块、信号输出模块可安排在主程序中,也可以安排在各种中断子程序中,建议全部安排在若干中断子程序中,如定时中断子程序中,使主程序的无限循环进入节电睡眠模式,从而使低级中断子程序不需要保护现场,并可提高系统可靠性。
下面对各模块的作用功能进行分析。
①自检模块通常有下面几部分组成。
程序代码自检:执行校验算法,判断程序代码是否改变。
数据存储器自检:进行非破坏性读写校验,判断是否正常。
A/D通道自检:测试已知信号,判断是否正常。
D/A通道自检:输出已知数字量,用A/D通道来检测其转换结果是否正常。
显示自检:显示固定内容,判断是否正常。
蜂鸣器自检:响一声判断是否正常。
②初始化模块的组成与作用如下。
外部硬件初始化:对各种外部芯片设定明确的初始状态。
功能部件初始化:对片内功能部件设定明确的初始状态。
变量初始化:为各种变量和指针设置初始值、默认值。
软件标志初始化:为所有软件标志设置初始状态。
系统时钟初始化;设置初始时间。
数据区初始化:通常是清零。
③监控模块是整个软件系统的骨架,其主要功能如下。
监控模块的任务:获取键盘操作信息并解释,调度执行相应模块完成预定任务。遥控操作也可以合并到监控模块中进行解释执行。
监控模块的实质:保证系统在运行过程中的因果关系符合设计要求,其中“因”包括内因(系统当前状态)和外因(操作),“果”包括执行的操作和状态的变化。
④显示输出模块设计要注意以下问题。
显示输出集中处理:将系统所有的显示输出全部集中到本模块中,可以避免分散编程时产生的冲突。
显示数据的获取:该模块通过查询系统的状态信息(状态编码和各种状态标志)可以判断出应该显示哪些数据,在预定的位置找到这些数据,并将其转换成显示所需要的格式。
显示内容的刷新:当某显示内容发生变化时,可置位“申请刷新”标志,由本模块来检测该标志并刷新显示,然后清除该标志,为保证显示内容正确,即使没有“申请”也应该定时刷新。
⑤信息采集模块的设计中各种信号的采集方法。
数字信号的采集:光电隔离重复采集。
模拟信号的采集:使用合适的数字滤波算法。
多路信号的采集:当定时间隔远小于采样周期时,可采用一路A/D器件对各路信号轮回进行采样;当定时间隔与采样周期相当时,必须采用多路A/D器件对各路信号同时进行采样。
随机信号的采集:由随机信号产生外部中断,在该中断子程序中进行采集。采样周期由采样对象的频率特性决定。
⑥数据处理模块的设计要注意以下问题。
数据格式的选择:用汇编语言编程时,采用定点数格式还是采用浮点数格式;用C语言编程时采用整数格式还是采用实数格式,应该由数据的变化范围和分辨率来确定。
数据格式的转换:用汇编语言编程时,应该进行人机交互格式与内部运算格式之间的转换,可调用相关子程序来完成。
数据处理过程:先编制若干相关标准运算子程序,然后将各种复杂运算分解为若干标准运算,通过调用这些标准运算子程序,来实现数据处理的目标。为提高可靠性尽可能使用子程序库中的子程序,为提高效率尽可能使用迭代算法。
⑦控制决策模块一般安排在信息采集模块和数据处理模块之后,信号输出模块之前。
控制决策算法的选择:根据控制对象的特性和系统控制指标的要求来选择。常用算法有PID算法及其变形算法、模糊控制算法。
控制决策模块的输出:用来对对象进行逻辑控制(通断控制、启停控制等)的决策,结果一般用软件标志来表示,用来对对象进行程度控制(如温度控制、流量控制等)的决策,结果为一个数据,必须转换成D/A的器件对应的整形数据。
⑧信号输出模块设计中应考虑以下问题。
输出信号的缓冲:控制决策模块的运算结果不直接控制对象,而是存放在内存的输出缓冲区中,由本模块来执行输出。将“输出”从决策模块中独立出来以后就可以实现一次决策多次输出,提高可靠性。
异步决策同步捆绑输出:不同的输出控制信号,在不同的情况下决策产生,在不同时刻存入输出缓冲区。本模块执行时一并捆绑输出。
按状态输出:控制决策模块不产生各个独立的逻辑控制信号,而是产生系统状态信号。本模块按状态查表来输出一组逻辑控制信号,可保证输出的合理性,避免事故。
⑨通信模块设计中须注意的问题。(www.xing528.com)
波特率的设置:与信道质量有关,通信双方共同约定。
通信协议(帧结构)的设计:由通信内容来决定,一般包含地址码、帧长、命令码和数据校验码。
通信缓冲区:其长度应该能够存放下最长帧。工作时和一个指针进行配合,完成一帧数据的收发。
通信过程:如果采用查询模式,可一次接收或发送完一帧内容。为提高系统效率,最好采用中断模式,一次中断只接收或发送一个字节。
通信命令的执行:最好在监控模块中执行。
⑩时钟模块设计中应考虑以下问题。
时钟源:由硬件时钟芯片或者软件定时器提供。
定时周期的决定:由系统最小时间分辨率来确定。
时钟单元的安排:由系统时间动态变化范围来确定。
时钟的设置与校对:通过键盘操作来完成。
系统时钟的使用:触发与系统时间相关的任务。
计时器的使用:测试某任务执行的时间。任务启动时清零,任务执行时与时钟一起运行,任务结束时停止,读取结果。
闹钟的使用:控制某任务的时间间隔。任务启动时置初始值,任务执行时由时钟进行倒计时,计时结束,则停止任务。
(2)系统资源的配置
1)芯片硬件资源的配置。主要包括对接口引脚、中断源、定时器/计数器、其他功能部件(如串行接口、A/D、PWM、比较器和看门狗等)硬件进行合理配置与设计。
2)RAM资源的分配。片内RAM用来存放各种变量、标志、堆栈、数据处理中的临时结果等,片外RAM主要用来存放数据块。
3.系统可靠性设计
可靠性是单片机应用系统的重要性能指标,由多种因素决定。单片机应用系统所在现场的各种干扰是影响可靠性的主要因素。
干扰是指叠加在电源电压或正常工作信号上的其他电信号。干扰有多种来源:电网、空间电磁场、输入/输出通道等。干扰会影响传送信息的正确性,扰乱程序的正常运行,使程序“跑飞”或进入死循环,还可能损坏系统的元器件。干扰是单片机应用系统必须认真对待的问题。形成干扰的基本要素有以下三个。
干扰源:指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt、di/dt大的地方就是干扰源。如:雷电、继电器、晶闸管、电机、高频时钟等都可能成为干扰源。
传播路径:指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和空间的辐射。
敏感器件:指容易被干扰的对象。如:A/D、D/A转换器,单片机,数字IC,弱信号放大器等。
抗干扰设计的基本原则是:抑制干扰源,切断干扰传播路径,提高敏感器件的抗干扰性能。
(1)抑制干扰源 抑制干扰源就是尽可能地减小干扰源的du/dt、di/dt。这是抗干扰设计中最优先考虑和最重要的原则,常常会起到事半功倍的效果。减小干扰源的du/dt主要是通过在干扰源两端并联电容来实现。减小干扰源的di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。
抑制干扰源的常用措施如下。
1)在继电器线圈中增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加续流二极管会使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可动作更多的次数。
2)在继电器接点两端并联火花抑制电路(一般是RC串联电路,电阻一般选几kΩ到几十kΩ,电容选0.01μF),减小电火花影响。
3)给电机加滤波电路,注意电容、电感引线要尽量短。
4)电路板上每个IC要并联一个0.01~0.1μF高频电容,以减小IC对电源的影响。注意高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电容的等效串联电阻,会影响滤波效果。
5)布线时避免90°折线,减少高频噪声发射。
6)晶闸管两端并接RC抑制电路,减小晶闸管产生的噪声(这个噪声严重时可能会将晶闸管击穿)。
(2)切断干扰传播路径 按干扰的传播路径可分为传导干扰和辐射干扰两类。
所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和有用信号的频带不同,可以通过在导线上增加滤波器的方法切断高频干扰噪声的传播,有时也可加隔离光耦来解决。电源噪声的危害最大,要特别注意处理。所谓辐射干扰是指通过空间辐射传播到敏感器件的干扰。一般的解决方法是增加干扰源与敏感器件的距离,用地线把它们隔离和在敏感器件上加屏蔽罩。
切断干扰传播路径的常用措施如下。
1)充分考虑电源对单片机的影响。电源做得好,整个电路的抗干扰就解决了一大半。许多单片机对电源噪声很敏感,要给单片机电源加滤波电路或稳压器,以减小电源噪声对单片机的干扰。比如,可以利用磁珠和电容组成П形滤波电路,当然条件要求不高时也可用100Ω电阻代替磁珠。
2)如果单片机的I/O接口用来控制电机等噪声器件,在I/O接口与噪声源之间应加隔离(增加П形滤波电路)。控制电机等噪声器件,在I/O接口与噪声源之间应加隔离(增加П形滤波电路)。
3)注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。此措施可解决许多疑难问题。
4)电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源(如电机,继电器)与敏感元件(如单片机)远离。
5)用地线把数字区与模拟区隔离,数字地与模拟地要分离,最后在一点接于电源地。A/D、D/A芯片布线也以此为原则,厂家分配A/D、D/A芯片引脚排列时已考虑此要求。
6)单片机和大功率器件的地线要单独接地,以减小相互干扰。大功率器件尽可能放在电路板边缘。
7)在单片机I/O接口,电源线,电路板连接线等关键地方使用抗干扰元件如磁珠、磁环、电源滤波器,屏蔽罩,可显著提高电路的抗干扰性能。
(3)提高敏感器件的抗干扰性能 提高敏感器件的抗干扰性能是指从敏感器件方面考虑尽量减少对干扰噪声的影响,以及从不正常状态尽快恢复的方法。
提高敏感器件抗干扰性能的常用措施如下。
1)布线时尽量减少回路环的面积,以降低感应噪声。
2)布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦合噪声。
3)对于单片机闲置的I/O接口,不要悬空,要接地或接电源。其他IC的闲置端在不改变系统逻辑的情况下接地或接电源。
4)对单片机使用电源监控及看门狗电路,如:IMP809、IMP706、IMP813、X25043、X25045等,可大幅度提高整个电路的抗干扰性能。
5)在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字电路。
6)IC器件尽量直接焊在电路板上,少用IC座。
4.系统调试
由于单片机应用系统自身不具备调试功能,即无法验证所设计的硬件和软件的正确性,因此必须借助于单片机开发系统才能完成调试工作。调试时,应将硬件和软件分成几部分,逐一调试,各部分均调试通过后再进行联调。调试完成后,应在实验室模拟现场条件,对所设计的硬件、软件进行性能测定。现场试用时,要对使用情况做详细记录,在各种可能的情况下都要做实验,写出详细的试用报告。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。