




已阅读5页,还剩86页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章单片机应用系统设计与开发 学习目标 掌握单片机应用系统设计与开发的方法 步骤 技巧了解单片机仿真系统的种类 功能掌握设计单片机应用系统的基本思路灵活掌握常用外围电路以及传感器的设计和使用技术掌握单片机应用系统软 硬件的设计 调试方法了解单片机应用系统抗干扰的方法 措施 引例 在工业自动化控制及生产 生活过程中 我们为了测量物体或环境温度 可以应用单片机技术和新型半导体感温元件热敏电阻制成数字式热敏电阻温度计 还有在工业过程控制及某些仪器设备中 常常要用到步进电机 其精度高 且具有快速起 停能力 可对位移量 旋转角度和转动速度等进行高精度控制 例如 在仪器仪表 机床设备以及计算机的外围设备 如打印机和绘图仪等 中 常有对可控制精度的回转源的需要 在这种情况下使用步进电机最为理想 再有就是繁华街道两旁或广场周围的各种各样霓虹灯闪烁控制 变幻出五颜六色 形状各异的造型 另外还有电子时钟 广场上的音乐喷泉等等 这些都是单片机应用系统设计 开发实例 在这些应用系统中是如何完成系统硬件设计和软件设计的呢 硬件设计包括哪些方面 软件设计包括哪些方面 应用系统设计 开发的一般步骤 方法 原则有哪些 这些都是在单片机应用系统设计 开发过程中要面临的 也是本章内容所要解决的问题 在本章中通过对数字式热敏电阻温度计 步进电机控制和电子时钟设计这三个单片机应用系统开发实例来具体说明单片机设计 开发的相关内容 正文 目前 mcs 51系列单片机以其独特的优越性 在智能仪表 工业测控 数据采集 计算机通信等各个领域得到了极为广泛的应用 可以说 单片机的应用已经渗透到人类生活 工作的每一个角落 这说明它和我们每一个人的工作 生活都密切相关 由于单片机的应用领域广泛 且技术要求各不相同 因此 应用系统的硬件与软件设计均不同 但它们的总体设计方法和研制步骤却基本相同 本章针对大多数应用场合 简要介绍单片机应用系统的一般开发 设计方法及其开发工具 8 1单片机应用系统的设计过程 所谓应用系统 就是利用单片机为某应用目的所设计的专门的单片机系统 在调试过程中通常称作 目标系统 与一般的计算机系统一样 单片机的应用系统也是由硬件和软件两部分构成 硬件部分指单片机 扩展的存储器 外围器件及输入 输出设备等硬件设备组成的系统 软件部分是指各种工作程序的总称 硬件和软件只有密切配合 协调一致 才能构成高性能的单片机应用系统 在系统的研制过程中 软 硬件的功能总是在不断地调整 以相互适应 相互配合 达到最佳性价比 硬件设计和软件设计不能截然分开 硬件设计时应考虑软件设计方法 而软件设计时应了解硬件的工作原理 在整个设计过程中相互协调 以利于提高工作效率 单片机应用系统的设计过程包括总体设计 硬件设计 软件设计 在线调试 产品化等几个阶段 但它们不是绝对分开的 有时是交叉进行的 图8 1描述了单片机应用系统设计的一般过程 单片机应用系统设计主要包括以下几方面内容 1 应用系统总体方案设计 包括系统的要求 应用方案的选择 以及工艺参数的测量范围等 2 选择各参数检测元件及变送器 3 建立数学模型及确定控制算法 4 选择单片机 并决定是自行设计还是购买成套设备 5 系统硬件设计 包括接口电路 逻辑电路及操作面板 6 系统软件设计 包括管理 监控程序以及应用程序的设计 7 系统的调试与实验 图8 1单片机应用系统设计的一般过程 8 1 1总体设计 确定单片机应用系统总体方案 是进行系统设计最重要 最关键的一步 总体方案的好坏 直接影响整个应用系统的投资 调节品质及实施细则 1 确定功能技术指标如同任何新产品的设计一样 单片机应用系统的设计是从确定目标任务开始的 在着手进行系统设计之前 必须根据系统的应用场合 工作环境 具体用途提出合理的 详尽的功能技术指标 这是系统设计的依据和出发点 也是决定产品前途的关键 所以必须认真做好这个工作 不管是老产品的改造还是新产品的设计 应对产品的可靠性 通用性 可维护性 先进性及成本等进行综合的考虑 参考国内外同类产品的有关资料 使确定的技术指标合理而且符合有关标准 2 机型选择选择单片机机型的出发点有以下几个方面 1 市场货源 系统设计者只能在市场上能提供的单片机中选择 特别是作为产品生产的应用系统 所选机型必须有稳定 充足的货源 2 单片机性能应根据系统的要求和各种单片机的性能 选择最容易实现产品技术指标的机型 而且能达到较高的性能价格比 单片机的性能包括片内的资源 扩展能力 运算速度 可靠性等几个方面 3 研制周期在设计任务重 时间紧的情况下 还需要考虑对所选择的机型是否熟悉 是否能马上着手进行系统的设计 与研制周期有关的另一个重要因素是单片机的开发工具 性能优良的开发工具 能加快系统设计的速度 考虑能否得到性能价格比很高的开发工具 3 器件选择除了单片机以外 系统中还可能需要传感器 模拟电路 输入 输出电路 存储器以及键盘 显示器等器件和设备 这些部件的选择应符合系统的精度 速度和可靠性等方面要求 在总体设计阶段 应对市场情况有个大体的了解 对器件的选择提出具体规定 4 硬件和软件的功能划分系统硬件的配置和软件的设计是紧密联系在一起的 而且在某些场合 硬件和软件具有一定的互换性 有些硬件电路的功能可用软件来实现 反之亦然 例如 系统日历时钟的产生可以使用时钟电路 如5832芯片 也可以由定时器中断服务程序来控制时钟计数 多用硬件完成一些功能 可以提高工作速度 减少软件设计的工作量 但增加了硬件成本 若用软件代替某些硬件的功能 可以节省硬件开支 但增加了软件的复杂性 由于软件是一次性投资 因此在一般情况下 如果所研制的产品生产批量比较大 则能够用软件实现的功能都由软件来完成 以便简化硬件结构 降低生产成本 在总体设计时 必须权衡利弊 仔细划分好硬件和软件的功能 8 1 2硬件设计 一个单片机应用系统的硬件设计包括两大部分内容 一是单片机系统的扩展部分设计 它包括存储器扩展和接口扩展 二是各功能模块的设计 如信号测量功能模块 信号控制功能模块 人机对话功能模块 通信功能模块等 根据系统功能要求配置相应的a d d a 键盘 显示器 打印机等外围设备 在进行应用系统的硬件设计时 首要问题是确定电路的总体方案 并需要进行详细的技术论证 所谓硬件电路的总体设计 即是为实现该项目全部功能所需要的所有硬件的电气连线原理图 初次接触这方面工作的设计人员 往往急于求成 在设计总体方案上不愿花时间 过于仓促地开始制板和调试 这种方法不仅不妥当 而且常常得不偿失 因为就硬件系统来讲 电路的各部分都是紧密相关 互相协调的 任何一部分电路的考虑不充分 都会给其他部分带来难以预料的影响 轻则使系统整体结构受破坏 重则导致硬件总体大返工 由此造成的后果是可想而知的 因此 希望设计者不要吝啬在硬件总体方案上花的时间 从时间上看 硬件设计的绝大部分工作量往往是在最初方案的设计阶段 一个好的设计方案常常会有事半功倍的效果 一旦硬件总体方案确定下来 下一步工作就能很顺利进行 即使需要做部分修改 也只是在此基础上进行一些完善工作 不会造成整体返工 在进行硬件的总体方案设计时 所涉及到的具体电路可借鉴他人在这方面进行的工作 因为经过别人调试和实验过的电路往往具有一定的合理性 尽管这些电路常与书籍或手册上提供的电路不完全一致 但这也可能正是经验所在 如果在此基础上 结合自己的设计目的进行一些修改 则是一种简便 快捷的做法 当然 有些电路还需自己设计 完全照搬是不太可能的 在参考别人的电路时 需对其工作原理有较透彻的分析和理解 根据其工作机理了解其适用范围 从而确定其移植的可能性和需要修改的地方 对于有些关键和尚不完全理解的电路 需要仔细分析 在设计之前先进行试验 以确定这部分电路的正确性和需要 并在可靠性和精度等方面进行试验 尤其是模拟电路部分 更需要进行这方面的工作 为使硬件设计尽可能合理 根据经验 系统的电路设计应注意以下几个方面 1 尽可能选择标准化 模块化的典型电路 提高设计的成功率和结构的灵活性 2 在条件允许的情况下 尽可能选用功能强 集成度高的电路或芯片 因为采用这种器件可能代替某一部分电路 不仅元件数量 接插件和相互连线减少 体积减小 使系统可靠性增加 而且成本往往比用多个元件实现的电路要低 3 注意选择通用性强 市场货源充足的器件 尤其对需大批量生产的场合 更应注意这方面的问题 其优点是 一旦某种元器件无法获得 也能用其他元器件直接替换或对电路稍作改动后用其他器件代替 4 在对硬件系统总体结构考虑时 同样要注意通用性的问题 对于一个较复杂的系统 设计者常常希望将其模块化 即对中央控制单元 输入接口 输出接口 人机接口等分块进行设计 然后采用一定的连接方式将其组合成一个完整的系统 在这种情况下 连接方式就显得非常重要 有时可选用通用接口方式 因为对于这些总线结构的连接目前应用比较广泛 不少厂家已开发出适合于这些总线结构的接口板 如输入板 输出板 a d板等 在必要的情况下 选用现成的模板作为系统的一部分 尽管成本有些偏高 但会大大缩短研制周期 提高工作效率 当然 在有些特殊情况和小系统的场合 用户必须自行设计接口 定义连线方式 此时要注意接口协议 一旦接口方式确定下来 各个模块的设计都应遵守该接口方式 5 系统的扩展及各功能模块的设计在满足应用系统功能要求的基础上 应适当留有余地 以备将来修改 扩展之需 实际上 电路设计一次成功而不做任何修改的情况是很少的 如果在设计之初未留有任何余地 后期很可能因为一点小小的改动或扩展而被迫进行全面返工 举例来说 在进行rom扩展时 尽量选用2764以上的芯片 这样不仅将来升级方便 成本也会降低 在进行ram扩展时 为使系统升级或增加内存方便 系统的ram空间应留足位置 哪怕多设计一个ram插座 不插芯片也好 在进行i o接口扩展时 也应给出一定的余量 这样对临时增加一些测量通道或被控对象就极为方便了 另外在电路板设计时 可适当安排一些机动布线区 在此区域中安排若干集成芯片插座和金属化孔 但不布线 这样在样机研制过程中 若发现硬件电路有不足之处 需增加元器件时 可在机动布线区临时连线完成 从而避免整个系统返工 在进行模拟信号处理电路设计时 尤其要注意这一点 因为在调试这类电路时 经常会增加一些电容 电阻等元器件 当然 一旦试验完成 制作电路板时 可以去掉机动布线区 6 设计时应尽可能多做些调研 采用最新的技术 因为电子技术发展迅速 器件更新换代很快 市场上不断推出性能更优 功能更强的芯片 只有时刻注意这方面的发展动态 采用新技术 新工艺 才能使产品具有最先进的性能 不落后于时代发展的潮流 7 在电路设计时 要充分考虑应用系统各部分的驱动能力 一些经验欠缺者往往忽视电路的驱动能力及时序问题 认为原理上可行就行了 其实不然 因为不同的电路有不同的驱动能力 对后级系统的输入阻抗要求也不一样 如果阻抗匹配不当 系统驱动能力不够 将导致系统工作不可靠甚至无法工作 值得注意的是 这种不可靠很难通过一般的测试手段确定 而排除这种故障往往需要对系统做较大地调整 因此 在电路设计时 要注意增加系统驱动能力或减少系统的功耗 8 工艺设计 包括机箱 面板 配线 接插件等 这也是一个实际进行系统设计人员容易疏忽但又十分重要的问题 在设计时要充分考虑到安装 调试 维修的方便 9 系统的抗干扰设计 这个问题在硬件设计中也是十分重要的 根据系统的复杂程度 mcs 51应用系统有3种典型结构 1 最小应用系统 2 小规模扩展系统 只扩展少量的ram和i o接口 地址在00h 0ffh之间 3 大规模扩展系统 需要扩展较大量的rom ram和i o接口 连接多片扩展芯片 硬件和软件是单片机控制系统的两个重要方面 硬件是基础 软件是关键 但两者又是可以相互转化的 硬件设计时 应考虑留有充分余量 电路设计力求正确无误 因为在系统调试中不易修改硬件结构 硬件设计的任务是根据总体设计要求 在所选机型的基础上 首先确定系统扩展所要用的存储器 i o电路 a d电路以及有关外围电路等 然后再设计系统的电路原理图 硬件设计的具体内容有以下几个环节 1 程序存储器当单片机内部程序存储器容量不够时 须外扩存储器 一般可选用容量较大的eprom芯片 如2764 8kb 27128 16kb 或27256 32kb 等 尽量避免用小容量的芯片组合扩充成大容量的存储器 由于目前单片机片内存储器的容量越来越大 已基本能够满足用户对程序存储容量的要求 因此 现在已很少外扩程序存储器 2 数据存储器对于数据存储器的容量要求 各系统之间差别较大 有的测量仪器和仪表只需少量ram即可 此时应尽量选用片内ram容量符合要求的单片机 对于要求较大容量ram的系统 这时ram芯片的选择原则是尽可能减少ram芯片的数量 例如一片62256 32kb 比4片6264 8kb 的价格要低得多 连线也相对简单 3 输入 输出接口较大的应用系统一般都需要扩展i o接口 选择i o电路时 应从体积 价格 功能 负载等几方面考虑 标准可编程接口电路8255 8155接口简单 使用方便 对总线负载小 因而应用很广泛 但对有些i o接口基本可满足要求的系统 则可用ttl电路 能提高口线的利用率 且其驱动能力较强 可直接驱动发光二极管等器件 因此 应根据系统总的输入 输出要求来选择接口电路 对a d和d a电路芯片的选择原则 应根据系统对它的速度 精度和价格的要求来确定 此外 还须与系统中的传感器 放大器匹配 4 地址译码电路80c51系统的存储器空间包括64kb程序存储器和64kb数据存储器 而在应用系统中一般不需要这么大的容量 为简化硬件逻辑 同时使所用到的存储器空间地址连续 通常可采用译码法和线选法相结合的办法实现 当存储器和i o芯片较多时 可选用专用译码器74ls138或74ls139等 5 总线驱动能力mcs 51系列单片机的外部扩展功能很强 但4个8位并行口的负载能力是有限的 p0口能驱动8个lsttl电路 p1 p3口只能驱动3个lsttl电路 在实际应用中 这些端口的负载不应超过总负载能力的70 以保证留有一定的余量 如果满载 会降低系统的抗干扰能力 在外接负载较多的情况下 如果负载是mos芯片 因负载消耗电流很小 影响不大 如果驱动较多的ttl电路 则应采用总线驱动电路 以提高端口的驱动能力和系统的抗干扰能力 数据总线宜采用双向8路三态缓冲器74ls245作为总线驱动器 地址和控制总线可采用单向8路三态缓冲器74ls244作为单向总线驱动器 6 系统速度匹配mcs 51系列单片机时钟频率可在1 2mhz 12mhz之间任选 在不影响系统技术性能的前提下 时钟频率选择低一些为好 这样可降低系统中对元器件工作速度的要求 从而提高系统的可靠性 7 硬件可靠性设计单片机应用系统的可靠性是最重要 最基本的一项技术指标 也是在硬件设计时必须考虑的一个方面 可靠性通常是指系统在规定的条件以及规定的时间内完成规定功能的能力 规定的条件包括环境条件 如温度 湿度 振动等 和供电条件等 规定的时间一般指平均故障时间 平均无故障时间和连续正常运转时间等 所规定的功能则随单片机应用系统的不同而有所差别 单片机应用系统在实际工作中 可能会受到来自外部和内部的各种干扰 特别是单片机的测控系统常常工作在环境恶劣的工业现场 非常容易受到电网电压 电磁辐射 高频干扰等的影响 使系统工作产生错误或故障 为减少这种情况的发生 就要采取各种提高硬件可靠性的措施 通常采取的措施有以下几种 1 提高元器件的可靠性 在系统硬件设计和加工时 应注意选用质量好的电子元器件和接插件 并进行严格的测试 筛选和老化 采用降额设计 使元件在低于其额定值的情况下工作 2 提高印刷电路板和组装的质量 设计电路板时 布线及接地方法要符合要求 须特别注意以下两点 地线与电源线应适当加粗 数字地和模拟地应尽量远离 且单独走线 最后在一点共地 地线最好设计成网格状 在印刷电路板的各关键部位和芯片上应配置去耦电容 例如 在电源输入端跨接一个100uf的电容 在每个集成电路芯片的电源端配置一个0 01uf的电容 3 对供电电源采取抗干扰措施 用带屏蔽层的电源变压器 加电源低通滤波器 电源变压器的容量应留有余地 4 对输入 输出通道采取抗干扰措施 采用光电隔离电路 即用光电隔离器作为数字量和开关量的输入 输出 这种隔离电路效果很好 采用正确的接地技术 采用双绞线或者屏蔽电缆作为信号传输线 可以获得较强的抗共模干扰能力 8 1 3软件设计 单片机应用系统软件的设计 是系统设计最基本工作量中较大的任务 下面介绍软件设计的一般方法与步骤 1 软件研制过程单片机应用系统的软件设计和一般在现成系统机上设计一个应用软件有所不同 后者是在系统机操作系统等支持下的纯软件设计 而且现有许多软件模块可调用 单片机的软件设计是在裸机条件下开始设计的 而且随应用系统的不同而不同 图8 2给出了单片机软件的研制过程 2 系统定义系统定义是指在软件设计前 首先要明确软件所要完成的任务 确定输入 输出的形式 对输入的数据进行哪些处理 以及如何处理可能发生的错误 软件所要完成的任务已在总体设计时所规定 现在要结合硬件结构 进一步弄清软件所承担的一个个任务细节 确定具体实施的方法 图8 2单片机软件研制过程 1 定义并说明各输入 输出口的功能 是模拟信号还是数字信号以及电平范围 与系统接口方式 占用口地址 读取和输入方式等 2 在程序存储器区域中 合理分配存储空间 包括系统主程序 常数表格 功能子程序块的划分及入口地址表等 3 在数据存储器区域中 考虑是否有断电保护措施 定义数据暂存区标志单元等 4 面板开关 按键等控制输入量的定义与软件编制密切相关 系统运行过程的显示 运算结果的显示 正常运行和出错显示等也是由软件编制的 所以必须事先定义 作为编程的依据 3 软件结构设计合理的软件结构是设计出一个性能优良的单片机应用系统软件的基础 必须给予足够的重视 由系统定义 系统的整个工作可分解为几个相对独立的操作 根据这些操作的相互联系的时间关系 设计出一个合理的软件结构 使cpu并行地有条不紊地完成这些操作 对于简单的单片机应用系统 通常采用顺序设计方法 这种系统软件由主程序和若干个中断服务程序所构成 根据系统各个操作的性质 指定哪些操作由中断服务程序完成 哪些操作由主程序完成 并指定各个中断的优先级 中断服务程序对实时事件请求作必要的处理 使系统能实时地并行地完成各个操作 中断处理程序必须包括现场保护 中断服务 现场恢复 中断返回等四个部分 中断的发生是随机的 它可能在任意地方打断主程序的运行 无法预知这时主程序执行的状态 因此 在执行中断服务程序时 必须对原有程序状态进行保护 现场保护的内容应是中断服务程序所使用的有关资源 如psw acc dptr等 中断服务程序是中断处理程序的主体 它由中断所要完成的功能所确定 如输入或输出一个数据等 现场恢复与现场保护相对应 恢复被保护的有关寄存器状态 中断返回使cpu回到被该中断所打断的地方继续执行原来的程序 主程序是一个顺序执行的无限循环的程序 不停地顺序查询各种软件标志 以完成对日常事物的处理 图8 3和图8 4分别给出了中断处理程序和主程序的结构 主程序和中断服务程序间的信息交换一般采用数据缓冲器和软件标志 置位或清 0 位寻址区的某一位 方法 例如 定时中断到1秒后置位标志ss 设20h位 以通知主程序对日历时钟进行计数 主程序查询到ss 1时 清 0 该标志并完成时钟计数 又如 a d中断服务程序在读到一个完整数据时将数据存入约定的缓冲器 并置位标志以通知主程序对此数据进行处理 图8 3中断程序结构 图8 4主程序结构 因为顺序程序设计方法容易理解和掌握 也能满足大多数简单的应用系统对软件的功能要求 因此是一种用得很广的方法 顺序程序设计的缺点是软件的结构不够清晰 软件的修改扩充比较困难 是实时性能差 这是因为当功能复杂的时候 执行中断服务程序要花较多的时间 cpu执行中断程序时不响应低级或同级的中断 这可能导致某些实时中断请求得不到及时的响应 甚至会丢失中断信息 如果多采用一些缓冲器和标志位 让大多数工作由主程序完成 中断服务程序只完成一些必须的操作 从而缩短中断服务程序的执行时间 这在一定程度上能提高系统实时性 但是众多的软件标志会使软件结构变乱 容易发生错误 给调试带来困难 对于复杂的应用系统 可采用实时多任务操作系统 4 程序设计技术 1 模块程序设计模块程序设计是单片机应用中常用的一种程序设计技术 它是把一个功能完整的较长的程序分解为若干个功能相对独立的较小的程序模块 各个程序模块分别进行设计 编制程序和调试 最后把各个调试好的程序模块联成一个大的程序 模块程序设计的优点是 单个功能明确的程序模块的设计和调试比较方便 容易完成 一个模块可以为多个程序所共享 还可以利用现成的程序模块 如各种现成子程序 缺点是 各个模块的连接有时有一定的困难 程序模块的划分没有一定的标准 一般可以参考以下原则 每个模块不宜太大 力求使各个模块之间界限明确 在逻辑上相对独立 对一些简单的任务不必模块化 尽量利用现成的程序模块 2 自顶向下的程序设计自顶向下程序设计时 先从主程序开始设计 从属的程序或子程序用符号来代替 主程序编好后再编制各从属的程序和子程序 最后完成整个系统软件的设计 调试也是按这个次序进行 自顶向下程序设计的优点是 比较习惯于人们的日常思维 设计 测试和连接同时按一个线索进行 程序错误可以较早地发现 其缺点是 上一级的程序错误将对整个程序产生影响 一处修改可能引起整个程序进行修改 5 程序设计在选择好软件结构和所采用的程序设计技术后 便可着手进行程序设计 把问题的定义转化为具体的程序 1 建立数学模型根据问题的定义 描述出各个输入变量和各个输出变量之间的数学关系 这就是建立数学模型 数学模型的正确程度 是系统性能好坏的决定性因素之一 例如 在直接数字控制系统中 采用数字pid控制算法或其改进形式 参数p i d的镇定是至关重要的 在测量系统中 从模拟量输入通道得到的温度 流量 压力等现场信息与该信息对应的物理量之间常常存在非线性关系 用什么样的公式来描述这种关系 进而进行线性化处理 这对仪器的测量精度起决定作用的 另外 为了削弱或消除干扰信号的影响 挑选何种数字滤波方法等 2 绘制程序流程图通常在编写程序之前先绘制程序流程图 程序流程图在前几章中已有很多例子 程序流程图以简明直观的方式对任务进行描述 并很容易由此编写出程序 故对初学者来说尤为适用 所谓程序流程图 就是把程序应完成的各种分立操作 表示在不同的框框中 并按一定的顺序把它们连接起来 这种互相联系的框图称为程序流程图 也称为程序框图 在设计过程中 先画出简单的功能性流程图 粗框图 然后对功能流程图进行扩充和具体化 对存储器 寄存器 标志位等工作单元作具体的分配和说明 把功能流程图中每一个粗框的操作转变为对具体的存储器单元 工作寄存器或i o口的操作 从而绘出详细的程序流程图 细框图 3 编写程序在完成了程序流程图设计以后 接着便可编写程序 单片机应用程序大多用汇编语言编写 如果有条件可以用高级语言编写 如mbasic51 pl m51 c51等 编写程序时 应采用标准的符号和格式书写 必要时作若干功能性注释 以利于今后的调试 6 程序的汇编 调试和固化程序的编辑汇编 或编译 一般在pc机上进行 使用现成的编辑程序 如edit 和汇编程序 如asm51 完成 程序的调试和固化与所使用的开发工具有关 后面在系统调试时再详细介绍 7 软件可靠性设计软件可靠性设计通常也称为 软件抗干扰设计 是系统抗干扰设计的重要一环 在很多情况下 系统的干扰不可能完全靠硬件解决 因而软件可靠性设计是不可缺少的 单片机在系统运行过程中所受到的干扰 多数情况都通过软件执行的混乱反映出来 通常单片机内部最容易受干扰的就是程序计数器pc的值 如果pc的值被改变 则cpu将使程序从正确位置跳转到错误的区域内执行 从而导致程序运行出错 通常简称此现象为 程序跑飞 为解决此问题 除了要采取一些硬件措施解决之外 还可以采取以下软件可靠性设计方法 1 指令冗余技术cpu受到干扰后 往往将一些操作数当作指令码来执行 从而引起程序混乱 当程序跑飞到某一个单字节指令上时 便自动纳入正轨 当跑飞到某一个双字节或三字节指令上时就有可能落到某操作数上 继续出错 因此 在软件设计时 应多采用单字节指令 并在关键的地方人为地插入一些单字节指令 nop 或将有效单字节指令重复书写 这就是指令冗余 指令冗余可减少程序跑飞的次数 但当程序从一个模块跑飞到另一个模块时 指令冗余虽可使程序往下执行 但程序已偏离了正常顺序 仍会使系统出现混乱 2 软件陷阱当cpu受到干扰 造成程序跑飞到非程序区时 软件冗余无能为力 这时 可在非程序区设置拦截措施 使程序进入陷阱 强迫程序进入一个指定的地址 执行一段专门对程序出错进行处理的程序 软件陷阱由3条指令构成 其中的err为指定出错处理程序的入口地址 nopnopljmperr软件陷阱通常安排在未使用的中断区或rom空间 每隔一段程序设置一个软件陷阱 其他单元保持为0ffh 就一定能捕捉到跑飞的程序 软件陷阱安排在正常程序执行不到的地方 因而不影响程序执行的效率 在存储器容量允许条件下 多设置软件陷阱有百利而无一害 3 看门狗 wdt 技术看门狗是一个通过软 硬件相结合的重要的常用抗干扰技术 当程序跑飞到一个临时构成的死循环中时 冗余指令和软件陷阱都将无能为力 系统将完全陷入瘫痪 此时 看门狗能监视系统的运行状况 并在干扰使程序跑飞的情况下 退出死循环 使程序转向出错处理程序 采用看门狗电路时 在软件设计中须特别注意的是 一定要避免因看门狗使用使用不当而引起不正确的复位 主要措施有 除了在循环程序和定时器中设置看门狗复位指令之外 在等待指令和顺序执行的路径中也要设置看门狗复位指令 8 2单片机开发系统 单片机应用系统从研制到调试成功并不是一件容易的事 硬件的设计与制造以及软件的调试和修改要借助某种手段或工具才能完成 8 2 1单片机的开发与开发工具一个单片机应用系统 或称目标系统 从提出任务到正式投入运行 或批量生产 的过程 称为单片机的开发 一般来讲 单片机本身只是一个电子元件 只有当它和其他器件 设备有机组合在一起 并配置适当的工作程序 软件 后 才能构成一个单片机的应用系统 完成规定的操作 具有特定的功能 因此 单片机的开发包括硬件和软件两个部分 很多型号的单片机本身没有自开发功能 通用计算机系统具有这种功能 用户可以在上面研制应用软件或对系统进行扩展 必须借助于开发工具来排除目标系统样机中硬件故障 生成目标程序 并排除程序错误 当目标系统调试成功以后 还需要用开发工具把目标程序固化到单片机内部或外部eprom中 由于单片机内部功能部件多 结构复杂 外部测试点 即外部引脚 少 因此不能只靠万用表 示波器等工具来测试单片机内部和外部电路的状态 单片机的开发工具通常是一个特殊的计算机系统 开发系统 称为 单片机仿真系统 或简称 仿真机 也可称为 开发机 图8 5就是一个典型的单片机仿真系统结构示意图 图中的编程器部分不是每一个仿真机必带的 有很多编程器是单独出售的 图8 5单片机仿真系统结构示意图 开发系统和一般通用计算机系统相比 在硬件上增加了目标系统的在线仿真器 逻辑分析仪 编程器等部件 软件中除了一般计算机系统所具有的操作系统 编辑程序 编译等以外 还增加了目标系统的汇编和编译系统以及调试程序等 开发系统有通用和专用两种类型 通用型配置多种在线仿真器和相应的开发软件 使用时只要更换系统中的仿真器板 就能开发相应的单片机 专用型只能开发一种类型的单片机 由图8 2可知 仿真机是通过串行口与pc机相连的 用户利用仿真软件可以在pc机上编辑 修改源程序 然后通过汇编软件生成目标码 再传输到仿真机 之后就可以开始调试了 在调试用户系统时 必须把仿真插头插入用户系统的单片机插座上 单片机的开发工具有许多 尤其是具有51内核单片机的开发工具 更是不计其数 然而经过20多年的发展 特别是isp insystemprogrammability 在系统可编程 技术的发展 人们逐渐可以不用仿真器进行开发实验 这就需要一个能够进行软件仿真调试 具有友好界面的仿真开发环境 随着技术的进步 特别是具有片内flash存储器的单片机的使用 使得开发单片机应用系统可以不用仿真器 不论是什么接口 只要能向flash存储器下载和擦除程序 就不必使用仿真器 方法是先将监控程序下载到单片机中去 然后借助监控程序调试应用程序 8 2 2单片机开发系统的功能 单片机开发系统的性能优劣和单片机应用系统的研制周期密切相关 一个单片机开发系统功能的强弱可以从在线仿真 调试 软件辅助设计 目标程序固化等几个方面来分析 1 在线仿真功能单片机的仿真器本身就是一个单片机系统 它具有与所要开发的单片机应用系统相同的单片机芯片 如8031或8051等 当一个单片机用户系统接线完毕后 由于自身无调试能力 无法验证好坏 那么用户可以把应用系统中的单片机芯片拔掉 插上在线仿真器提供的仿真头 如图8 5所示 此时单片机应用系统和仿真器共用一块单片机芯片 在开发系统上通过在线仿真器调试单片机应用系统时 就像使用应用系统中真实的单片机一样 这种觉察不到的 替代 称之为 仿真 在线仿真器的英文名为incircuitemulator ice ice是由一系列硬件构成的设备 开发系统中的在线仿真器应能仿真目标系统 即应用系统 中的单片机 并能模拟目标系统的rom ram和i o口 使在线仿真时目标系统的运行环境和脱机运行时的环境完全 逼真 以实现目标系统的一次性开发 仿真功能具体地体现在以下几个方面 1 单片机仿真系统功能在线仿真时 开发系统应能将在线仿真器中的单片机完整地出借给目标系统 不占用目标系统单片机的任何资源 使目标系统在联机仿真和脱机运行时的环境 工作程序 使用的资源和地址空间 完全一致 实现完全的一次性仿真 单片机的资源包括 片上的cpu ram sfr 定时器 中断源 i o口以及外部可扩充的程序存储器和数据存储器地址空间 这些资源应允许目标系统充分自由地使用 不应受任何限制 使目标系统能根据单片机已有的资源特性进行硬件和软件的设计 2 模拟功能在开发目标系统的过程中 单片机的开发系统允许用户使用它内部的ram存储器和i o来替代目标系统中的rom程序存储器 ram数据存储器和i o 使用户在目标系统样机还未完全配置好以前 便可以借用开发系统提供的资源进行软件的开发 最重要的是目标机的程序存储器模拟功能 因为在研制目标系统的开始阶段 目标程序还未生成 更谈不上在目标系统中固化程序 因此 用户的目标程序必须存放在开发系统ram存储器内 以便于在调试过程中对程序修改 开发系统所能出借的作为目标系统程序存储器的ram 常称为仿真ram 开发系统中仿真ram的容量和地址映射应与目标机系统完全一致 对于mcs 51系列单片机开发系统 最多能出借64kb的仿真ram 并 保持原有复位入口和中断入口地址不变 但不同的开发系统所出借的仿真ram的容量不一定相同 使用时应参考有关说明 2 调试功能开发系统对目标系统软硬件的调试功能 也称为排错功能 强弱 将直接关系到开发的效率 性能优良的单片机开发系统应具有下面所述的调试功能 1 运行控制功能开发系统应能使用户有效地控制目标程序的运行 以便检查程序运行的结果 对存在的硬件故障和软件错误进行定位 单步运行 能使cpu从任意的目标程序地址开始执行一条指令后停止运行 断点运行 允许用户任意设置条件断点 启动cpu从规定地址开始运行后 当碰到断点条件 程序地址和指定断点地址符合或者cpu访问到指定的数据存储器单元等条件 符合以后停止运行 连续运行 能使cpu从指定地址开始连续地全速运行目标程序 启停控制 在各种运行方式中 允许用户根据调试的需要 来启动或停止cpu执行目标程序 2 对目标系统状态的读出修改功能当cpu停止执行目标系统的程序后 允许用户方便地读出或修改目标 系统所有资源的状态 以便检查程序运行的结果 设置断点条件以及设置程序的初始参数 可供用户读出或修改的目标系统资源包括以下几方面 程序存储器 开发系统中的仿真ram存储器或目标机中的程序存储器 单片机中片内资源 工作寄存器 特殊功能寄存器 i o口 ram数据存储器 位单元 系统中扩展的数据存储器 i o口 3 跟踪功能高性能的单片机开发系统具有逻辑分析仪的功能 在目标程序运行过程中 能跟踪存储目标系统总线上的地址 数据和控制信号的状态 变化 跟踪存储器能同步地记录总线上的信息 用户可以根据需要跟踪存储器搜集到的信息 也可以显示某一位总线的状态变化的波形 使用户掌握总线上状态变化的过程 对各种故障的定位特别有用 从而大大地提高工作效率 3 辅助设计功能软件的辅助设计功能的强弱也是衡量单片机开发系统性能高低的重要标志 单片机应用系统的软件开发的效率在很大程度上取决于开发系统的辅助设计功能 这些功能主要包括以下几方面 1 程序设计语言单片机的程序设计语言有机器语言 汇编语言和高级语言 机器语言只在简单的开发装置中才使用 程序的设计 输入 修改和调试都很麻烦 它只能用来开发一些非常简单的单片机应用系统 汇编语言具有使用灵活 程序容易优化的特点 是单片机中最常用的程序设计语言 但是用汇编语言编写程序还是比较复杂的 只有对单片机的指令系统非常熟悉 并具有一定的程序设计经验时 才能研制出功能复杂的应用程序 高级语言通用性好 程序设计人员只要掌握开发系统所提供的高级语言的使用方法 就可以直接用该语言编写程序 mcs 51系列单片机的编译型高级语言有 pl m51 c 51 mbasic 51等 解释型高级语言必须在解释程序支持下直接解释 因此编译型高级语言才能作为单片机开发语言 高级语言对不熟悉单片机指令系统的用户比较适用 这种语言的缺点是不易编写出实时性很强 质量高 紧凑的程序 应该指出的是 在程序设计时可以交叉使用汇编语言和高级语言 2 程序编辑单片机大都在一些简单的硬件环境中工作 因此大都直接使用机器代码程序 可借助开发系统提供的软件将用户系统的源程序翻译成目标程序 几乎所有的单片机开发系统都能与pc连接 允许用户使用pc的编辑程序编写汇编语言或高级语言程序 例如 pc上的edlin行编辑和pe ws等屏幕编辑程序 可使用户方便地将源程序输入到计算机开发系统中 生成汇编语言或高级语言的源文件 然后使用开发系统提供的交叉汇编或编译系统 将源程序编译成可在目标机上直接运行的目标程序 开发型单片机一般都具有能和pc串行通信的接口 在pc上生成的目标程序可通过命令直接传输到开发机的ram中 这大大减轻了人工输入机器码的繁重劳动 3 其他软件功能很多单片机开发系统都提供反汇编功能 并提供用户宏调用子程序库 以减少用户软件研制的工作量 4 程序固化功能在单片机应用系统中常需要扩展eprom或eeprom 作为存放程序和常数的存储器 应用程序尚未调好时可借用开发系统的存储器 当系统调试完毕 确认软件无故障时 应把用户应用系统的程序固化到eprom中去 eprom写入器就是完成这种任务的专用设备 它也是单片机开发系统的重要组成部分 单片机开发系统其他的功能指标和一般的计算机系统相类似 如系统的可靠性 可维护性以及i o的种类和存储器的容量等 8 2 3单片机开发系统的种类 目前国内使用较多的开发系统大致分为以下4类 1 通用型单片机开发系统这是目前国内使用最多的一类开发装置 如上海航虹高科技有限公司开发的aedk51 96系列仿真器 南京伟福公司研发的e2000系列仿真器 广州的周立功单片机发展有限公司研发的tks系列仿真器 上海复旦大学的sice 和sice 仿真器 它们采用国际上流行的独立型仿真结构 与任何具有rs 232c串行口 或并行口 计算机相连 即可构成单片机仿真开发系统 系统中配备有eprom读出 写入器 仿真插头和其他外设 其基本配置和连接如图8 6所示 在调试用户样机时 仿真插头插入用户样机空出的单片机插座中 当仿真器通过串行口 或并行口 与计算机联机后 用户利用组合软件 先在计算机上编辑 修改源程序 然后通过mcs 51编译程序将其汇编源程序编译成目标代码 传送到仿真器的仿真ram中 这样用户可用单步 断点 跟踪 全速等方式运行用户程序 系统状态实时地显示在屏幕上 在图8 6中 eprom读出 写入器用来将用户的应用程序固化到eprom中 或将eprom中的程序读到仿真ram中 这类开发系统的最大优点是可以充分利用通用计算机系统的软 硬件资源 开发效率高 图8 6通用型单片机仿真开发系统 2 软件模拟开发系统软件模拟开发系统是一种完全依靠软件手段进行开发的系统 由于cpu的运行状况是可以预测的 所以完全可以由软件来模拟目标系统的运行情况 这种开发系统与用户系统在硬件上无任何联系 通常这种系统是由通用pc加模拟开发软件构成 利用软件模拟系统可对编制好的单片机软件进行模拟调试 通过这种模拟系统可以把所编制的程序在模拟环境下运行 并进行排错调试 最后 把调试好的程序通过编程器固化至eprom或单片机中 可通过主机的串行口或并行口直接由主机把程序下载至单片机中 软件仿真程序很多 如上海航虹高科技有限公司的lca51 南京伟福实业有限公司 wave 软件仿真器 franklinc51软件仿真器 archimedesc51软件仿真器等 模拟开发系统的工作原理是利用模拟开发软件在通用计算机上实现对单片机的硬件模拟 指令模拟 运行状态模拟 从而完成应用软件开发的全过程 单片机相应输入端由通用键盘相应的按键设定 输出端的状态则出现在crt指定的窗口区域 在开发软件的支持下 通过指令模拟 可方便的进行编程 单步运行 设断点运行 修改等软件调试工作 调试过程中 运行状态 各寄存器状态 端口状态等都可以在crt指定的窗口区域显示出来 以确定程序运行有无错误 软件仿真器主要有以下优点 1 方便 在项目开发的过程中 由于目标机制作需要时间 或多人共同开发一个比较大的应用程序 编制完的程序往往不能直接在目标机上仿真调试应用程序 这时 可以事先使用软件仿真器调试各自开发的程序 最后进行联调 在目标机上仿真调试 2 可靠 系统的可靠性取决于pc平台的稳定性和软件仿真器本身质量 而与用户系统无关 成熟的软件仿真器可以非常稳定可靠地运行用户程序 并有可能模拟用户系统的实际运行情况 3 容易使用 只要用户精通软件的使用就能非常容易地控制程序的运行 特别是在一些复杂的程序控制后容易产生不良后果的系统中 先用软件仿真器调试能够预防许多意外的发生 4 可重复性 软件仿真器可以轻而易举地实现程序的再现 甚至可以实现程序的追溯 模拟开发系统的最大缺点是不能进行硬件部分的诊断与实时在线仿真 3 普及型开发系统这种开发装置通常是采用相同类型的单片机做成单板机形式 所配置的监控程序可满足应用系统仿真调试的要求 既能输入程序 设断点运行 单步运行 修改程序 并能很方便的查询各寄存器 i o口 存储器的状态和内容 这是一种廉价的 能独立完成应用系统开发任务的普及型单板系统 系统中还配备有eprom写入器 仿真头等 通常 这类开发装置只能在机器语言水平上进行开发 配备有反汇编及打印机时 能实现反汇编及文本打印 此类开发系统目前已基本不用了 4 通用机开发系统这是一种在通用计算机中加开发模板的开发系统 在这种系统中 开发模板不能独立完成开发任务 只是起着开发系统接口的作用 开发模板插在通用计算机系统的扩展槽中或以总线连接方式安放在外部 开发模板的硬件结构应包含有通用计算机不可替代的部分 如eprom写入 仿真头及cpu仿真所必需的单片机系统等 8 2 4单片机应用系统的调试 在完成了用户系统样机的组装和软件设计以后 便进入系统的调试阶段 其主要任务是排除样机的硬件故障 并完善其硬件结构 试运行所设计的程序 排除程序错误 优化程序结构 使系统达到期望的功能 进而固化软件 使其产品化 用户系统的调试步骤和方法基本上是相同的 但具体细节与所采用的开发机以及用户系统选用的单片机型号有关 1 硬件调试单片机应用系统的硬件调试和软件调试是分不开的 许多硬件故障是在调试软件时才发现的 但通常是先排除系统中明显的硬件故障后才与软件结合起来调试 1 常见的硬件故障逻辑错误 样机的逻辑错误是由于设计错误和加工过程中的工艺性错误所造成的 这类错误包括错线 开路 短路 相位错等几种 其中短路是最常见也较难排除的故障 单片机的应用系统往往要求体积小 从而使印板的布线密度高 由于工艺等原因造成引线之间的短路 开路常常是由于印板的金属化孔质量不好或接插件接触不良引起的 元器件失效 原因有两个方面 一是器件本身已损坏或性能差 诸如电阻电容的型号 参数不正确 集成电路已损坏 器件的速度 功耗等技术参数不符合要求等 二是由于组装错误造成的元器件失效 如电容 二极管 三极管的极性错误和集成块安装的方向错误等 可靠性差 系统不可靠的因素很多 如金属化孔 接插件接触不良会造成系统时好时坏 经受不起振动 内部和外部的干扰 电源纹波系数过大 器件负载过大等会造成逻辑电平不稳定 另外 走线和布局的不合理等也会引起系统可靠性差 电源故障 若样机中存在电源故障 则加电后将造成器件损坏 因此电源必须单独调试好以后才能加到系统的各个部件中 电源的故障包括 电压值不符合设计要求 电源引出线和插座不对应 各档电源之间的短路 变压器功率不足 内阻大 负载能力差等 2 硬件调试方法硬件调试是利用开发系统 基本测试仪器 通过执行开发系统有关命令或运行适当的测试程序 也可以是与硬件有关的部分用户程序段 来检查用户系统硬件中存在的故障 硬件调试分为静态调试与动态调试 静态调试 第一步 在样机加电之前 首先用万用表等工具 根据硬件电气原理图和装配图仔细检查样机线路是否正确 并核对元器件的型号 规格和安装是否符合要求 应特别注意电源的走线 防止电源之间的短路和极性错误 并重点检查扩展系统总线 地址总线 数据总线和控制总线 是否存在相互间的短路或与其他信号线的短路 第二步是加电后检查各插件上引脚的电位 仔细测量各点电位是否正常 尤其应注意单片机插座上的各点电位 若有高压 联机时将会损坏仿真器 第三步是在不加电情况下 除单片机以外 插上所有的元器件 用仿真插头将样机的单片机插座和开发工具的仿真接口相连 这样便为联机调试做好了准备 动态调试 在静态测试中 只对样机硬件进行初步测试 只排除一些明显的硬件故障 目标样机中的硬件故障主要靠联机调试来排除 静态测试完成后分别打开样机和仿真器电源 就可以进行动态调试了 动态调试是在用户系统工作的情况下发现和排除用户系统硬件中存在的器件内部故障 器件间连接逻辑错误等的一种硬件检查 由于单片机应用系统的硬件动态调试是在开放系统的支持下完成的 故又称为联机仿真或联机调试 动态调试的一般方法是由分到合 由近及远 进行分步 分层的调试 由分到合指的是 首先按逻辑功能将用户系统硬件电路分为若干块 如程序存储器电路 a d转换器电路 输出控制电路 再分块调试 当调试某电路时 将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安达市2025-2026学年七年级下学期语文月考测试试卷
- 2025 年小升初温州市初一新生分班考试语文试卷(带答案解析)-(部编版)
- Python大模型基础与智能应用(微课版)课件第9章 云服务器微调训练大模型应用案例
- 2025年小学美术教师的教学总结3篇
- 2025数学个人教学任务总结范文
- 陕西省咸阳市三原县2024-2025学年八年级(下)期末物理试卷(含答案)
- 第十三章 三角形 单元试卷(含答案) 2025-2026学年人教版数学八年级上册
- 买卖介绍居间合同范本
- 购买养殖围网合同范本
- 房房出租合同范本
- 福建省福州第八中学2025届高一下化学期末教学质量检测试题含解析
- 2025晋中辅警考试真题
- 邮政快递服务质量评价指标体系构建-洞察阐释
- 呼吸衰竭个案查房
- 2025年云南省中考历史试卷真题(含答案解析)
- 教育事业“十五五”发展规划实施方案
- 2025年初级文秘职业技能鉴定理论考试题库(共500题)
- 内墙腻子劳务分包协议
- T/CI 312-2024风力发电机组塔架主体用高强钢焊接性评价方法
- 不锈钢焊工技能培训课件
- 水利安全风险防控“六项机制”与安全生产培训
评论
0/150
提交评论